Frage

Ich brauche ein XML-Schema zu erstellen, die eine Baumstruktur eines XML-Dokuments überprüft. Ich weiß es nicht genau das Vorkommen oder Tiefe Ebene des Baumes.

XML-Beispiel:

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

Welches ist der beste Weg, es zu validieren? Rekursion?

War es hilfreich?

Lösung

Wenn Sie eine rekursive Typdeklaration benötigen, ist hier ein Beispiel, die helfen können:

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

Wie Sie sehen können, dies definiert ein rekursive Schema mit nur einem Knoten mit dem Namen „Knoten“, die so tief sein, wie gewünscht.

Andere Tipps

XSD erlaubt es in der Tat für die Rekursion von Elementen. Hier ist ein Beispiel für Sie

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

Wenn Sie den Abschnitt Element sehen können, enthält ein untergeordnetes Element, das vom Typ Abschnitt ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top