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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top