Tengo un XSD de esta forma:¿Por qué dice XSD que mi elemento no está completo?
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/example"
xmlns:tns="http://www.example.org/example" elementFormDefault="qualified">
<complexType name="bType">
</complexType>
<complexType name="aType">
<choice maxOccurs="unbounded">
<element name="a" type="tns:aType" />
<element name="b" type="tns:bType" />
</choice>
</complexType>
<element name="topelement">
<complexType>
<sequence>
<element name="a" type="tns:aType" maxOccurs="1" />
</sequence>
</complexType>
</element>
</schema>
Y un archivo XML que espero para que coincidan, por ejemplo:
<?xml version="1.0" encoding="UTF-8"?>
<topelement xmlns="http://www.example.org/example"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/example example.xsd ">
<a> <!-- Error on this line. -->
<a/>
<b/>
<b/>
<a/>
</a>
</topelement>
Desafortunadamente el XSD dice que esto no es válido con el siguiente error :
cvc-complex-type.2.4.b: The content of element 'a' is not complete. One of '{"http://www.example.org/example":a, "http://www.example.org/example":b}' is expected. example.xml line 5
Por lo que puedo decir, he hecho todo lo que tengo que hacer para completar la etiqueta. Lo he llenado con una selección ilimitada de etiquetas 'a' y 'b'. ¿Alguien puede ver lo que salió mal?
Para aclarar, quiero que haya solo una etiqueta 'a' bajo topelement, y debajo de eso, una combinación de etiquetas 'a' y 'b'.
Funciona si el nombre de su alto nivel de elemento de algo que no sea ? Estoy pensando que el esquema XML podría confundirse con esas etiquetas idénticas en diferentes niveles ... –
Si le cambio el nombre, todavía se queja de 'a' en la misma línea ... esto puede ser una pista ... – izb