xsd - para - cvc-elt.1: no se puede encontrar la declaración del elemento ''MyElement''
cvc elt 1 no se ha encontrado la declaración del elemento (2)
Estoy tratando de validar un xml realmente simple usando xsd, pero por alguna razón recibo este error. Realmente apreciaré si alguien me puede explicar por qué.
Archivo XML
<?xml version="1.0" encoding="utf-8"?>
<MyElement>A</MyElement>
Archivo XSD
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/Test"
xmlns:tns="http://www.example.org/Test"
elementFormDefault="qualified">
<simpleType name="MyType">
<restriction base="string"></restriction>
</simpleType>
<element name="MyElement" type="tns:MyType"></element>
</schema>
Su esquema es para su espacio de nombres de destino http://www.example.org/Test
por lo que define un elemento con el nombre MyElement
en ese espacio de nombres de destino http://www.example.org/Test
. Sin embargo, su documento de instancia tiene un elemento con el nombre MyElement
en ningún espacio de nombres . Es por eso que el analizador de validación le dice que no puede encontrar una declaración para ese elemento, no ha proporcionado un esquema para elementos en ningún espacio de nombres.
<MyElement xmlns="http://www.example.org/Test">A</MyElement>
cambiar el esquema para no usar un espacio de nombres de destino o necesita cambiar la instancia para usar por ejemplo <MyElement xmlns="http://www.example.org/Test">A</MyElement>
.
Tuve este error para mi elemento XXX y fue porque mi XSD estaba mal formateada de acuerdo con javax.xml.bind v2.2.11. Creo que está usando un formato XSD más antiguo, pero no me molesté en confirmarlo.
Mi XSD inicial equivocado fue similar al siguiente:
<xs:element name="Document" type="Document"/>
...
<xs:complexType name="Document">
<xs:sequence>
<xs:element name="XXX" type="XXX_TYPE"/>
</xs:sequence>
</xs:complexType>
El buen formato XSD para que mi migración tenga éxito fue el siguiente:
<xs:element name="Document">
<xs:complexType>
<xs:sequence>
<xs:element ref="XXX"/>
</xs:sequence>
</xs:complexType>
</xs:element>
...
<xs:element name="XXX" type="XXX_TYPE"/>
Y así sucesivamente para todos los nodos XSD similares.