Wir können steuern, wie Elemente in den Dokumenten mit Indikatoren zu verwenden sind.
Indikatoren
Es gibt sieben Indikatoren:
Bestellen Indikatoren:
- All
- Choice
- Sequence
Vorkommen Indikatoren:
- maxOccurs
- minOccurs
Konzernkennzahlen:
- Group name
- attributeGroup name
Bestellen Indikatoren
Um Indikatoren werden verwendet, um die Reihenfolge der Elemente zu definieren.
Alle Indicator
Die <all> Kennzeichen gibt an, dass die untergeordneten Elemente in beliebiger Reihenfolge auftreten können, und dass jedes Kind - Element muss nur einmal vorkommen:
<xs:element name="person">
<xs:complexType>
<xs:all>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:all>
</xs:complexType>
</xs:element>
Note: Bei der Verwendung von <all> Anzeige können Sie einstellen , die <minOccurs> Anzeige auf 0 oder 1 und die <maxOccurs> Anzeige kann nur auf 1 gesetzt werden (das <minOccurs> und <maxOccurs> werden später beschrieben).
Wahl-Indikator
Die <choice> Indikator gibt an, dass entweder ein untergeordnetes Element oder eine andere auftreten können:
<xs:element name="person">
<xs:complexType>
<xs:choice>
<xs:element name="employee" type="employee"/>
<xs:element name="member" type="member"/>
</xs:choice>
</xs:complexType>
</xs:element>
Feldrichtungsanzeiger
Die <sequence> Indikator gibt an, dass die untergeordneten Elemente in einer bestimmten Reihenfolge erscheinen müssen:
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Vorkommen Indikatoren
Vorkommen Indikatoren werden verwendet, um festzulegen, wie oft ein Element auftreten kann.
Note: Für alle "Order" und "Group" Indikatoren (alle, alle, Auswahl, Reihenfolge, Gruppenname und Gruppenreferenz) den Standardwert für maxOccurs und minOccurs ist 1.
maxOccurs Indicator
Die <maxOccurs> Indikator gibt die maximale Anzahl von Malen kann ein Element auftreten:
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="full_name" type="xs:string"/>
<xs:element name="child_name" type="xs:string" maxOccurs="10"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Das Beispiel zeigt , dass das oben "child_name" Element mindestens einmal auftreten kann (der Standardwert für minOccurs 1) und maximal zehn Mal in der "person" Element.
minOccurs Indicator
Die <minOccurs> Indikator gibt die Mindestanzahl von Malen kann ein Element auftreten:
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="full_name" type="xs:string"/>
<xs:element name="child_name" type="xs:string"
maxOccurs="10" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Das obige Beispiel zeigt , dass das "child_name" Element ein Minimum von Null mal und höchstens zehnmal in der auftreten kann , "person" Element.
Tip: Um ein Element erlauben eine unbegrenzte Anzahl von Zeiten zu erscheinen, verwenden Sie das maxOccurs = "unbounded" Aussage:
A working example:
Eine XML - Datei mit dem Namen "Myfamily.xml" :
<?xml version="1.0" encoding="UTF-8"?>
<persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="family.xsd">
<person>
<full_name>Hege Refsnes</full_name>
<child_name>Cecilie</child_name>
</person>
<person>
<full_name>Tove Refsnes</full_name>
<child_name>Hege</child_name>
<child_name>Stale</child_name>
<child_name>Jim</child_name>
<child_name>Borge</child_name>
</person>
<person>
<full_name>Stale Refsnes</full_name>
</person>
</persons>
Die XML - Datei enthält über ein Root - Element mit dem Namen "persons" . Innerhalb dieses Wurzelelement haben wir drei definierten "person" Elemente. Jeder "person" Element muss ein enthalten "full_name" Element und es können bis zu fünf enthalten "child_name" Elemente.
Hier ist die Schemadatei "family.xsd" :
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="persons">
<xs:complexType>
<xs:sequence>
<xs:element name="person" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="full_name" type="xs:string"/>
<xs:element name="child_name" type="xs:string"
minOccurs="0" maxOccurs="5"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Konzernkennzahlen
Gruppe Indikatoren werden verwendet, um ähnliche Mengen von Elementen definieren.
Elementgruppen
Elementgruppen sind mit der Gruppe Erklärung, wie folgt definiert:
<xs:group name="groupname">
...
</xs:group>
Sie müssen eine ganze, Wahl oder Sequenzelement innerhalb der Gruppe Deklaration definieren. Das folgende Beispiel definiert eine Gruppe mit dem Namen "persongroup" , die eine Gruppe von Elementen definiert, die in einer genauen Reihenfolge auftreten müssen:
<xs:group name="persongroup">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:element name="birthday" type="xs:date"/>
</xs:sequence>
</xs:group>
Nachdem Sie eine Gruppe definiert haben, können Sie es in einer anderen Definition, wie dieser Referenz:
<xs:group name="persongroup">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:element name="birthday" type="xs:date"/>
</xs:sequence>
</xs:group>
<xs:element name="person" type="personinfo"/>
<xs:complexType name="personinfo">
<xs:sequence>
<xs:group ref="persongroup"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:complexType>
Attributgruppen
Attributgruppen werden mit dem attribute Erklärung definiert, wie folgt aus:
<xs:attributeGroup name="groupname">
...
</xs:attributeGroup>
Das folgende Beispiel definiert ein Attribut Gruppe mit dem Namen "personattrgroup" :
<xs:attributeGroup name="personattrgroup">
<xs:attribute name="firstname" type="xs:string"/>
<xs:attribute name="lastname" type="xs:string"/>
<xs:attribute name="birthday" type="xs:date"/>
</xs:attributeGroup>
Nachdem Sie eine Attributgruppe definiert haben, können Sie es in einer anderen Definition, wie dieser Referenz:
<xs:attributeGroup name="personattrgroup">
<xs:attribute name="firstname" type="xs:string"/>
<xs:attribute name="lastname" type="xs:string"/>
<xs:attribute name="birthday" type="xs:date"/>
</xs:attributeGroup>
<xs:element name="person">
<xs:complexType>
<xs:attributeGroup ref="personattrgroup"/>
</xs:complexType>
</xs:element>