【发布时间】:2018-08-08 03:14:39
【问题描述】:
我一直试图弄清楚为什么这个 .xsd 和 .xml 没有验证。我在第 17 行第 57 列收到一个错误,上面写着
"元素声明的内容必须匹配(注解?,(simpleType | complexType)?, (unique| key keyref)*)
奇怪的是,如果我删除 .xsd 和 .xml 中的第 17 行,由于某种原因,错误仍然会在同一个位置弹出。
这是我的 XML 代码:
<?xml version="1.0" encoding="UTF-8"?>
<cursos xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="reto4MarcasGrupo1Schema.xsd">
<curso codigoCurso="AA2000">
<nombreCurso>Manejo Ofimatica</nombreCurso>
<numPlazas>20</numPlazas>
<numHoras horario="diurno">300</numHoras>
<fechaInicio>18-2-2018</fechaInicio>
<fechaFin> 30-3-2018</fechaFin>
<objetivos>Los objetivos de este curso es que las personas tengan un manejo basico de apliaciones de ofimatica</objetivos>
<entidadColaboradora nombreEntidad="H"/>
<diaSemana>L</diaSemana>
<cuotas tipoCuotas="subvencionado100"/>
<equipamiento>Ordeandores basicos</equipamiento>
<dirigidoA tipoDirigido="desempleadosYempleados"/>
<estado tipoEstado="aRealizar"/>
<programa>
<tema codigoTema="AAT001">
<tituloTema>Introduccion</tituloTema>
<impartidor>Ron Weasly</impartidor>
</tema>
<tema codigoTema="AAT002">
<tituloTema>Introduccion</tituloTema>
<impartidor>Jon Nieve</impartidor>
</tema>
</programa>
</curso>
</cursos>
这是不同年级有机课的练习。
这是我的架构:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="cursos" type="tipoCursos"/>
<xs:complexType name="tipoCursos">
<xs:sequence>
<xs:element name="curso" type="tipoCurso" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="tipoCurso">
<xs:sequence>
<xs:element name="nombreCurso" type="xs:string"/>
<xs:element name="numPlazas" type="xs:nonNegativeInteger"/>
<xs:element name="numHoras" type="tipoNumHoras"/>
<xs:element name="fechaInicio" type="xs:date"/>
<xs:element name="objetivos" type="xs:string"/>
<xs:element name="entidadColaboradora" type="tipoEntidadColaboradora"/>
<xs:element name="diaSemana" type="xs:string"/>
<xs:element name="cuotas" type="cuotaTipo"/>
<xs:element name="equipamiento" type="xs:string"/>
<xs:element name="dirigidoA" type="tipoDirigido"/>
<xs:element name="estado" type="estadoTipo"/>
<xs:element name="programa" type="tipoPrograma"/>
</xs:sequence>
<xs:attribute name="codigoCurso" type="xs:ID"/>
</xs:complexType>
<xs:complexType name="tipoPrograma">
<xs:sequence>
<xs:element name="tema" type="tipoTema" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="tipoTema">
<xs:sequence>
<xs:element name="tituloTema" type="xs:string"/>
<xs:element name="impartidor" type="xs:string"/>
</xs:sequence>
<xs:attribute name="codigoTema" type="xs:ID"/>
</xs:complexType>
<xs:complexType name="tipoNumHoras">
<xs:sequence>
<xs:element name="numHoras" type="xs:nonNegativeInteger"/>
</xs:sequence>
<xs:attribute name="horario" type="tipoHorario"/>
</xs:complexType>
<xs:simpleType name="cuotaTipo">
<xs:restriction base="xs:string">
<xs:enumeration value="subvencionado100"/>
<xs:enumeration value="subvencionParcial"/>
<xs:enumeration value="sinSubvencion"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="estadoTipo">
<xs:restriction base="xs:string">
<xs:enumeration value="aplazado"/>
<xs:enumeration value="realizado"/>
<xs:enumeration value="aRealizar"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="tipoDirigido">
<xs:restriction base="xs:string">
<xs:enumeration value="desempleadosYempleados"/>
<xs:enumeration value="preferiblementeEmpleados"/>
<xs:enumeration value="segunCursos"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="tipoEntidadColaboradora">
<xs:restriction base="xs:string">
<xs:enumeration value="H"/>
<xs:enumeration value="HC"/>
<xs:enumeration value="S"/>
<xs:enumeration value="I"/>
<xs:enumeration value="D"/>
<xs:enumeration value="E"/>
<xs:enumeration value="J"/>
<xs:enumeration value="M"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="tipoHorario">
<xs:restriction base="xs:string">
<xs:enumeration value="diurno"/>
<xs:enumeration value="nocturno"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
【问题讨论】:
-
请在XSD中标出报错的行。否则你强迫我们计算你的代码 sn-ps 中的行数。
-
您的架构无效。请修复问题中的架构。
tipoHorario类型未在 XSD 中定义。 -
您的 XML 无效,因为您在
curso元素上有一个codigoCurso属性。您的架构在cursos元素上定义了这一点。 -
马特是对的。如果您的数据不敏感,您可以使用liquid-technologies.com/online-xsd-validator 等在线工具
-
您还定义了
tipoNumHoras,因此您的 XML 示例numHoras元素无效。
标签: xml validation schema