Question

Je dois créer un schéma XML qui valide une arborescence d'un document XML. Je ne connais pas exactement les occurrences ou le niveau de profondeur de l'arbre.

Exemple XML:

<?xml version="1.0" encoding="utf-8"?>
<node>
  <attribute/>
  <node>
    <attribute/>
    <node/>      
  </node>
</node> 

Quel est le meilleur moyen de le valider? Récursivité?

Était-ce utile?

La solution

si vous avez besoin d'une déclaration de type récursive, voici un exemple qui pourrait vous aider:

<xs:schema id="XMLSchema1"
    targetNamespace="http://tempuri.org/XMLSchema1.xsd"
    elementFormDefault="qualified"
    xmlns="http://tempuri.org/XMLSchema1.xsd"
    xmlns:mstns="http://tempuri.org/XMLSchema1.xsd"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
  <xs:element name="node" type="nodeType"></xs:element>

  <xs:complexType name="nodeType">    
    <xs:sequence minOccurs="0" maxOccurs="unbounded">
      <xs:element name="node" type="nodeType"></xs:element>
    </xs:sequence>
  </xs:complexType>

</xs:schema>

Comme vous pouvez le constater, cela définit un schéma récursif avec un seul nœud nommé "nœud". qui peut être aussi profond que souhaité.

Autres conseils

XSD permet effectivement la récursivité des éléments. est un exemple pour vous.

<xsd:element name="section">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:element ref="title"/>
      <xsd:element ref="para" maxOccurs="unbounded"/>
      <xsd:element ref="section" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:element>

Comme vous pouvez le constater, l'élément section contient un élément enfant de type section.

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