XSD komplekse type indikator
- Forrige side XSD blandet indhold
- Næste side XSD <any>
Gennem indikatorer kan vi kontrollere, hvordan elementer bruges i dokumentet.
Indikator
Der er syv indikatorer:
Rækkefølgeindikator:
- Alle
- Valg
- Sekvens
Optræffingsindikator:
- maxOccurs
- minOccurs
Group-indikatoren:
- Group name
- attributeGroup name
Order-indikatoren
Order-indikatoren bruges til at definere elementernes rækkefølge.
All-indikatoren
<all>-indikatoren bestemmer, at underelementer kan optræde i hvilken som helst rækkefølge, og at hver underelement kun kan optræde én gang:
<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>
Bemærk:Når <all>-indikatoren bruges, kan <minOccurs> sættes til 0 eller 1, mens <maxOccurs>-indikatoren kun kan sættes til 1 (som vil blive forklaret senere).
Choice-indikatoren
<choice>-indikatoren bestemmer, at et underelement kan optræde eller et andet underelement (enten eller andet):
<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>
Vedligeholdelse:For at sætte underelementer til at optræde en hvilken som helst gang, kan <maxOccurs> (som vil blive forklaret senere) sættes til unbounded (ubegrænset).
Sequence-indikatoren
<sequence> bestemmer, at underelementer skal optræde i en bestemt rækkefølge:
<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>
Occurrence-indikatoren
Occurrence-indikatoren bruges til at definere hyppigheden af, hvor ofte et element optræder.
Bemærk:For alle "Order" og "Group"-indikatorer (any, all, choice, sequence, group name og group reference) er standardværdierne for maxOccurs og minOccurs 1.
maxOccurs-indikatoren
<maxOccurs>-indikatoren bestemmer den maksimale gang et element kan optræde:
<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>
Eksemplerne viser, at underelementet "child_name" kan optræde i elementet "person" mindst én gang (hvor minOccurs's standardværdi er 1) og højst 10 gange.
minOccurs-indikatoren
<minOccurs>-indikatoren bestemmer den mindste gang et element kan optræde:
<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>
Eksemplerne viser, at underelementet "child_name" kan optræde i elementet "person" mindst 0 gange og højst 10 gange.
Vedligeholdelse:For at gøre et elements forekomstsgang ubegrænset, skal du bruge deklarationen maxOccurs="unbounded":
Et eksempel på dette:
XML-filen "Myfamily.xml":
<?xml version="1.0" encoding="ISO-8859-1"?> <persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> xsi:noNamespaceSchemaLocation="family.xsd"> <person> <full_name>Tony Smith</full_name> <child_name>Cecilie</child_name> </person> <person> <full_name>David Smith</full_name> <child_name>Jogn</child_name> <child_name>mike</child_name> <child_name>kyle</child_name> <child_name>mary</child_name> </person> <person> <full_name>Michael Smith</full_name> </person> </persons>
Denne XML-fil indeholder en rod-element kaldet "persons". Inden for denne rod-element, har vi defineret tre "person"-elementer. Hver "person"-element skal indeholde en "full_name"-element, og det kan indeholde op til 5 "child_name"-elementer.
Dette er schema-filen "family.xsd":
<?xml version="1.0" encoding="ISO-8859-1"?> <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>
Group-indikator
Group-indikatoren bruges til at definere relaterede elementbatcher.
Elementgruppe
En elementgruppe defineres gennem en group-deklaration:
<xs:group name="组名称"> ... </xs:group>
Du skal definere en all, choice eller sequence-element inden for group-deklarationen. Her er et eksempel på en group ved navn "persongroup", der definerer en række elementer, der skal optræde i præcis denne rækkefølge:
<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>
Efter du har defineret group, kan du referere til den i en anden definition:
<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>
Attributgruppe
En attributgruppe defineres gennem en attributeGroup-deklaration:
<xs:attributeGroup name="组名称"> ... </xs:attributeGroup>
Her er et eksempel, der definerer en attributgruppe ved navn "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>
Efter du har defineret attributgruppen, kan du referere til den i en anden definition, sådan her:
<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>
- Forrige side XSD blandet indhold
- Næste side XSD <any>