La Validation de Schéma XML : Impossible de trouver la déclaration de l'élément
Je suis encore un peu nouveau pour le Schéma XML etc. et ont travaillé à l'élaboration du XML, Schéma et une feuille de style (XSLT). J'ai fait des progrès raisonnables, mais alors réalisé que mon Schéma avait arrêté de travailler, j'ai donc ramené à une simple non-descript exemple.
Voici mon XML:
<?xml version="1.0" encoding="UTF-8"?>
<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="Test.Namespace"
schemaLocation="http://myNameSpace.com Test1.xsd">
<element1 id="001">
<element2 id="001.1">
<element3 id="001.1" />
</element2>
</element1>
</Root>
J'ai écrit un Schéma ici:
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="Test.Namespace"
elementFormDefault="qualified">
<xsd:element name="Root">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="element1" maxOccurs="unbounded" type="element1Type"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="element1Type">
<xsd:sequence>
<xsd:element name="element2" maxOccurs="unbounded" type="element2Type"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:string"/>
</xsd:complexType>
<xsd:complexType name="element2Type">
<xsd:sequence>
<xsd:element name="item" type="element3Type"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:string"/>
</xsd:complexType>
<xsd:complexType name="element3Type">
<xsd:attribute name="id" type="xsd:string"/>
</xsd:complexType>
</xsd:schema>
Le Schéma est représentatif de la structure de mon XML.
Maintenant, quand j'essaie de valider mon XML, j'obtiens cette erreur:
cvc-elt.1: Cannot find the declaration of element 'Root'. [7]
Je pense que c'est à faire avec un espace de noms de la question sur l'élément Racine, mais je suis vraiment pas sûr.
Quelqu'un peut-il suggérer ce que je fais de mal s'il vous plaît.
OriginalL'auteur Nerdio | 2013-03-26
Vous devez vous connecter pour publier un commentaire.
Votre
schemaLocation
l'attribut de l'élément racine doit êtrexsi:schemaLocation
, et vous avez besoin de réparer à utiliser le droit de l'espace de noms.Vous devrez probablement changer la
targetNamespace
du schéma et de laxmlns
du document àhttp://myNameSpace.com
(puisque les espaces de noms sont censés être valide Uri, quiTest.Namespace
n'est-ce pas, siurn:Test.Namespace
serait ok). Une fois que vous faites cela, il doit trouver le schéma. Le point est que tous les trois de l'espace de noms cible du schéma, du document d'espace de noms, et de l'espace de noms que vous êtes en train de donner le schéma de l'emplacement doit être le même.(bien qu'il persiste à ne pas valider votre
<element2>
contient un<element3>
dans le document où le schéma prévoititem
)OriginalL'auteur Ian Roberts
Merci à tout le monde dessus, mais c'est maintenant corrigé. Pour le bénéfice des autres, la plus importante d'erreur était dans l'alignement de trois espaces de noms, tel que suggéré par Ian.
Pour être complet, voici le corrigé XML et XSD
Voici le XML, avec les fautes de frappe corrigées (désolé pour la confusion causée par les retards)
et, ici, c'est le Schéma
Merci encore à tout le monde, j'espère que cela est utile à quelqu'un d'autre dans l'avenir.
.
qui est de caractère non valide pour un NID) et ajouter de l'obligatoire NSS partie, séparés par encore un autre:
. Le schemaLocation est juste un conseil, XSD conscient validateurs sont libres de les ignorer, si ce n'est pour des raisons de sécurité, c'est pourquoi il ne devrait jamais être une raison pour laquelle un fichier XML est valide ou pas.Cela m'a aidé beaucoup et j'ai aussi appris de l'espace de noms problème facilement. Je vous remercie.
OriginalL'auteur Nerdio
La
targetNamespace
de votre Schéma XML ne correspond pas à l'espace de noms de la Racine élément (le point dansTest.Namespace
vs virgule dansTest,Namespace
)Une fois que vous faites le au-dessus de l'acceptez, vous devez considérer que votre
element2
a un attribut ordre qui n'est pas dans votre XSD.OriginalL'auteur Petru Gardea