2017-05-17 2 views
1

J'ai un élément complexe avec des enfants et ces enfants ont des attributs. Tout fonctionne bien, mais maintenant je devais ajouter un attribut pour l'élément principal complexe.Où mettre les déclarations d'attributs XML dans XSD?

C'était le code que j'avais qui a bien fonctionné:

<xs:element name="route"> 
<xs:complexType> 
    <xs:sequence> 
    <xs:element name="origin"> 
     <xs:complexType> 
     <xs:attribute name="name"/> 
     <xs:attribute name="category"> 
      <xs:simpleType> 
      <xs:restriction base="xs:string"> 
       <xs:enumeration value="1sub1sub1"/> 
       <xs:enumeration value="2sub1sub1"/> 
      </xs:restriction> 
      </xs:simpleType> 
     </xs:attribute> 
     </xs:complexType> 
    </xs:element> 
    </xs:sequence> 
</xs:complexType> 

Alors, comment puis-je ajouter un attribut à l'élément de la route? Si je le fais comme ça, il émet une erreur que l'attribut est pas autorisé int son contexte:

<xs:element name="route"> 
<xs:complexType> 
<xs:attribute name="foobar"/> 
    <xs:sequence> 
    <xs:element name="origin"> 
     <xs:complexType> 
     <xs:attribute name="name"/> 
     <xs:attribute name="category"> 
      <xs:simpleType> 
      <xs:restriction base="xs:string"> 
       <xs:enumeration value="1sub1sub1"/> 
       <xs:enumeration value="2sub1sub1"/> 
      </xs:restriction> 
      </xs:simpleType> 
     </xs:attribute> 
     </xs:complexType> 
    </xs:element> 
    </xs:sequence> 
</xs:complexType> 

Répondre

0

déclarations d'attributs Ajouter comme les dernières déclarations au seinxs:complexType:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="route"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="origin"> 
      <xs:complexType> 

      <!-- WITHOUT child elements--> 
      <!-- Add attribute declarations here --> 
      <xs:attribute name="name"/> 
      <xs:attribute name="category"> 
       <xs:simpleType> 
       <xs:restriction base="xs:string"> 
        <xs:enumeration value="1sub1sub1"/> 
        <xs:enumeration value="2sub1sub1"/> 
       </xs:restriction> 
       </xs:simpleType> 
      </xs:attribute> 

      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 

     <!-- WITH child elements--> 
     <!-- Add attribute declarations here --> 
     <xs:attribute name="foobar"/> 

    </xs:complexType> 
    </xs:element> 
</xs:schema>