Question

Je suis un peu novice dans le schéma XML. Je serais reconnaissant de bien vouloir aider quelqu'un me chercher à comprendre pourquoi mon xml n'est pas validée avec le schéma:

Voici mon schéma:

<?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>

Voici mon xml test:

<?xml version="1.0" encoding="UTF-8"?>
<Employee xmlns="http://www.example.org/testSchema">
 <Name>
  <FirstName>John</FirstName>
  <LastName>Smith</LastName>
 </Name>
</Employee>

J'obtiens l'erreur suivante Eclipse XML Editor / validateur:

cvc-complex-type.2.4.a: Invalid content was found starting with element 'Name'. One of '{Name}' is expected.

Je ne pouvais pas comprendre ce qui ne va pas avec ce schéma ou mon xml.

Était-ce utile?

La solution

u tous ont à faire est d'ajouter elementFormDefault = « qualifié » et u ira bien. de comprendre ce comportement, lisez « êtes-vous qualifié? » @ section http://msdn.microsoft.com/en-us/library/ ms950796.aspx

Autres conseils

Il suffit d'ajouter le elementFormDefault = "qualifié" au schéma attribues.

 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"         
       targetNamespace="http://www.example.org/testSchema"
       elementFormDefault="qualified"
       xmlns="http://www.example.org/testSchema">

Et votre travail de testament original

 <?xml version="1.0" encoding="utf-8"?>
   <Employee xmlns="http://www.example.org/testSchema">
     <Name>
      <FirstName>John</FirstName>
      <LastName>Smith</LastName>
   </Name>
 </Employee>

On dirait que vous êtes ne pas préciser comment valider les éléments de FirstName et LastName; donner les spécifications d'éléments pour les type="xsd:string" (où les besoins de xsd à mapper sur l'espace de noms XML Schema Datatypes, bien sûr) et tout devrait bien.

Mais vous êtes mieux de ne pas nichait ces éléments si profond. Mettez tous au même niveau ref="Name" et utiliser pour les relier tous ensemble au lieu; il rend votre schéma beaucoup plus flexible et utilisable.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top