Composite Type Indicator of XSD
- Previous Page XSD Mixed Content
- Next Page XSD <any>
通过指示器,我们可以控制在文档中使用元素的方式。
指示器
有七种指示器:
Order 指示器:
- All
- Choice
- Sequence
Occurrence 指示器:
- maxOccurs
- minOccurs
Group tagapagpahintulot:
- Group name
- attributeGroup name
Order tagapagpahintulot
Order tagapagpahintulot ay ginagamit upang tanggapin ang pagkakasunod-sunod ng sangkap.
All tagapagpahintulot
<all> tagapagpahintulot ay nagbibigay ng batayan na ang sangkap ay maaaring lumabas sa anumang pagkakasunod-sunod, at ang bawat sangkap ay dapat lumabas ng isang beses lamang:
<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>
Komentaryo:Kapag ginagamit ang <all> tagapagpahintulot, puwedeng ilagay ang <minOccurs> sa 0 o 1, at maaaring ilagay lamang ang <maxOccurs> tagapagpahintulot sa 1 (magiging malaman sa huli ang <minOccurs> at <maxOccurs>).
Choice tagapagpahintulot
<choice> tagapagpahintulot ay nagbibigay ng batayan na maaaring lumabas ang isang sangkap o maaaring lumabas ang ibang sangkap (ng hindi isa ring isa):
<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>
Mga payo:Para sa pagtatakda na ang sangkap ay maaaring lumabas anumang bilang ng beses, maglagay ng <maxOccurs> (magiging malaman sa huli) sa unbounded (walang hanggan na beses).
Sequence tagapagpahintulot
<sequence> ay nagbibigay ng batayan na ang sangkap ay dapat lumabas sa tiyak na pagkakasunod-sunod:
<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 tagapagpahintulot
Occurrence tagapagpahintulot ay ginagamit upang tanggapin ang paglabas ng isang sangkap.
Komentaryo:Para sa lahat ng tagapagpahintulot na "Order" at "Group" (any, all, choice, sequence, group name at group reference), ang default na halaga ng maxOccurs at minOccurs ay 1.
maxOccurs tagapagpahintulot
<maxOccurs> tagapagpahintulot ay nagbibigay ng batayan sa pinakamataas na bilang ng beses na maaaring lumabas ang isang sangkap:
<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>
Ang halimbawa ay nagpapakita na ang sangkap na "child_name" ay maaaring lumabas sa elemento na "person" ng pinakamaliit na 1 beses (ang default na halaga ng minOccurs ay 1), hanggang 10 beses.
minOccurs tagapagpahintulot
<minOccurs> tagapagpahintulot ay nagbibigay ng batayan sa pinakamaliit na bilang ng beses na maaaring lumabas ang isang sangkap:
<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>
Ang halimbawa ay nagpapakita na ang sangkap na "child_name" ay maaaring lumabas sa elemento na "person" ng kaunting 0 beses, hanggang 10 beses.
Mga payo:Kung gusto mong hindi magbabawas ang bilang ng paglabas ng isang elemento, gamitin ang pahayag na maxOccurs="unbounded":
Isang tunay na halimbawa:
Ang XML file na may pangalang "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>
Ang XML file na ito ay naglalaman ng isang pangunahing elemento na "persons". Sa loob ng pangunahing elemento na ito, nagmamay-ari kami ng tatlong "person" na elemento. Bawat "person" na elemento ay dapat magkaroon ng isang "full_name" na elemento, at maaaring magkaroon ng hanggang limang "child_name" na elemento.
Ito ang schema file "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>
Tagapagpahintulot ng Group
Ang tagapagpahintulot ng Group ay ginagamit upang ilinlang ang kaugnay na grupo ng mga elemento.
Grupo ng elemento
Ang grupo ng elemento ay nililinlang sa pamamagitan ng pahayag ng group:
<xs:group name="组名称"> ... </xs:group>
Kailangan mong ililinlang ang isang all, choice o sequence na elemento sa loob ng pahayag ng group. Ang sumusunod na halimbawa ay naglilingkod ng isang group na may pangalang "persongroup", na naglilingkod ng isang grupo ng mga elemento na dapat lumitaw sa eksaktong pagkakasunod-sunod:
<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>
Sa tingin mo na nakakompleto ang iyong paglilingkod ng group, maari mo na ring ililinlang sa ibang paglilingkod:
<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>
Grupo ng attribute
Ang grupo ng attribute ay nililinlang sa pamamagitan ng pahayag ng attributeGroup:
<xs:attributeGroup name="组名称"> ... </xs:attributeGroup>
Ang sumusunod na halimbawa ay naglilingkod ng isang grupo ng attribute na may pangalang "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>
Sa tingin mo na nakakompleto ang iyong grupo ng attribute, maari mo na ring ililinlang sa ibang paglilingkod, tulad nito:
<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>
- Previous Page XSD Mixed Content
- Next Page XSD <any>