XSD- aanwysers
Ons kan beheer HOE elemente gebruik moet word in dokumente met aanwysers.
Aanwysers
Daar is sewe aanwysers:
Bestel-aanwysers:
- Almal
- Keuse
- Volgorde
Voorkomsaanwysers:
- maxGevind
- minGevind
Groepaanwysers:
- Groepnaam
- kenmerk Groepnaam
Bestel aanwysers
Orde-aanwysers word gebruik om die volgorde van die elemente te definieer.
Alle aanwyser
Die <all>-aanwyser spesifiseer dat die kinderelemente in enige volgorde kan verskyn, en dat elke kinderelement net een keer moet voorkom:
<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>
Let wel: Wanneer jy die <all>-aanwyser gebruik, kan jy die <minOccurs>-aanwyser op 0 of 1 stel en die <maxOccurs>-aanwyser kan slegs op 1 gestel word (die <minOccurs> en <maxOccurs> word later beskryf).
Keuse aanwyser
Die <keuse>-aanwyser spesifiseer dat een of ander kinderelement kan voorkom:
<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>
Volgorde aanwyser
Die <volgorde>-aanwyser spesifiseer dat die kinderelemente in 'n spesifieke volgorde moet verskyn:
<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>
Voorkomsaanwysers
Voorkomsaanwysers word gebruik om te definieer hoe gereeld 'n element kan voorkom.
Let wel: Vir alle "Bestelling" en "Groep"-aanwysers (enige, almal, keuse, volgorde, groepnaam en groepverwysing) is die verstekwaarde vir maxOccurs en minOccurs 1.
maxOccurs-aanwyser
Die <maxOccurs>-aanwyser spesifiseer die maksimum aantal kere wat 'n element kan voorkom:
<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>
Die voorbeeld hierbo dui aan dat die "kind_naam"-element 'n minimum van een keer kan voorkom (die verstekwaarde vir minOccurs is 1) en 'n maksimum van tien keer in die "persoon"-element.
minOccurs-aanwyser
Die <minOccurs>-aanwyser spesifiseer die minimum aantal kere wat 'n element kan voorkom:
<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>
Die voorbeeld hierbo dui aan dat die "kind_naam"-element 'n minimum van nul keer en 'n maksimum van tien keer in die "persoon"-element kan voorkom.
Wenk: Om 'n element 'n onbeperkte aantal kere te laat verskyn, gebruik die maxOccurs="unbounded"-stelling:
'n Werkende voorbeeld:
'n XML-lêer genaamd "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-lêer hierbo bevat 'n wortelelement genaamd "persone". Binne hierdie wortelelement het ons drie "persoon"-elemente gedefinieer. Elke "persoon"-element moet 'n "volle_naam"-element bevat en dit kan tot vyf "kind_naam"-elemente bevat.
Hier is die skema lêer "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>
Groepaanwysers
Groepaanwysers word gebruik om verwante stelle elemente te definieer.
Elementgroepe
Elementgroepe word met die groepverklaring gedefinieer, soos volg:
<xs:group name="groupname">
...
</xs:group>
Jy moet 'n alles-, keuse- of volgorde-element binne die groepverklaring definieer. Die volgende voorbeeld definieer 'n groep genaamd "persoonsgroep", wat 'n groep elemente definieer wat in 'n presiese volgorde moet voorkom:
<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>
Nadat jy 'n groep gedefinieer het, kan jy dit in 'n ander definisie verwys, soos hierdie:
<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>
Eienskapgroepe
Eienskapgroepe word gedefinieer met die kenmerkGroup-verklaring, soos volg:
<xs:attributeGroup name="groupname">
...
</xs:attributeGroup>
Die volgende voorbeeld definieer 'n kenmerkgroep genaamd "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>
Nadat jy 'n kenmerkgroep gedefinieer het, kan jy dit in 'n ander definisie verwys, soos hierdie:
<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>