XSD Komplekse typeindikatorer
- 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:
Order indikator:
- Alle
- Vælg
- Sekvens
Occurrence indikator:
- maxOccurs
- minOccurs
Gruppe indikator:
- Gruppens navn
- attributeGroup name
Order-indikatoren
Order-indikatoren bruges til at definere elementets 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 må 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>
Kommentar:Når du bruger <all>-indikatoren, kan du sætte <minOccurs> til 0 eller 1, og kun sætte <maxOccurs>-indikatoren 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>
Tip:Hvis du ønsker at sætte underelementer til at optræde en hvilken som helst gang, kan du sætte <maxOccurs> (som vil blive forklaret senere) 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>
Optræden-indikatoren
Optræden-indikatoren bruges til at definere hyppigheden af et elements optræden.
Kommentar:For alle "Order" og "Group"-indikatorer (any, all, choice, sequence, gruppe navn samt gruppe reference), er standardværdierne for maxOccurs og minOccurs begge 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>
Det foregående eksempel viser, at underelementet "child_name" kan optræde mindst én gang (medmindre der er angivet en default værdi for minOccurs, som er 1) og maksimalt 10 gange i elementet "person".
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>
Det foregående eksempel viser, at underelementet "child_name" kan optræde mindst 0 gange og maksimalt 10 gange i elementet "person".
Tip:Hvis du ønsker at begrænse antallet af gange, en element kan optræde, skal du bruge erklæringen maxOccurs="unbounded":
Et eksempel: }}
Navngivet 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" i denne rod-element definerer vi 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-indikatoren
Group-indikatoren bruges til at definere relaterede elementbatcher.
Elementgruppe
Elementgrupper defineres gennem group-deklarationer:
<xs:group name="组名称"> ... </xs:group>
Du skal definere en all, choice eller sequence-element inden for group-deklarationen. Her er et eksempel på, hvordan en group med navnet "persongroup" defineres, som definerer en præcis rækkefølge af elementer, der skal optræde:
<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
Attributgrupper defineres gennem attributeGroup-deklarationer:
<xs:attributeGroup name="组名称"> ... </xs:attributeGroup>
Her er et eksempel på, hvordan en attributgruppe med navnet "personattrgroup" defineres:
<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>