¿Por qué mi xml prueba está fallando con muy simple esquema XSD?
-
26-09-2019 - |
Pregunta
Yo soy un novato poco en el esquema XML. Le agradecería si alguien me ayuda a entender por qué mi XML no se valida con el esquema:
Aquí está mi esquema:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/testSchema" xmlns="http://www.example.org/testSchema">
<xs:element name="Employee">
<xs:complexType>
<xs:sequence>
<xs:element name="Name">
<xs:complexType>
<xs:sequence>
<xs:element name="FirstName" />
<xs:element name="LastName" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Aquí está mi prueba xml:
<?xml version="1.0" encoding="UTF-8"?>
<Employee xmlns="http://www.example.org/testSchema">
<Name>
<FirstName>John</FirstName>
<LastName>Smith</LastName>
</Name>
</Employee>
Me estoy haciendo siguiente error por el editor XML Eclipse / validador:
cvc-complex-type.2.4.a: Invalid content was found starting with element 'Name'. One of '{Name}' is expected.
No podía entender lo que está mal con este esquema o mi XML.
Solución
toda u tiene que hacer es añadir elementFormDefault = "calificado" yu va a estar bien. para entender este comportamiento, lea "¿Está usted cualificado?" @ sección http://msdn.microsoft.com/en-us/library/ ms950796.aspx
Otros consejos
Sólo tiene que añadir la elementFormDefault = "cualificado" a los attribues esquema.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/testSchema"
elementFormDefault="qualified"
xmlns="http://www.example.org/testSchema">
Y su trabajo testamento original
<?xml version="1.0" encoding="utf-8"?>
<Employee xmlns="http://www.example.org/testSchema">
<Name>
<FirstName>John</FirstName>
<LastName>Smith</LastName>
</Name>
</Employee>
Parece que eres no haber especificado cómo validar los elementos FirstName
y LastName
; dar a las especificaciones de los elementos para los type="xsd:string"
(donde las necesidades xsd
a ser mapeadas al espacio de nombres de esquema XML tipos de datos, por supuesto) y todos deben estar bien.
Sin embargo, usted es mejor no anidando aquellos elementos tan profundo. Poner a todos en el mismo nivel y el uso ref="Name"
para vincular a todos juntos en su lugar; que hace que su esquema mucho más flexible y utilizable.