15.2.14. XSD indicator

发布时间 : 2025-10-25 13:35:22 UTC      

Page Views: 10 views

With indicators, we can control how elements are used in the document.

Indicator

There are seven indicators:

Order indicator:

  • All

  • Choice

  • Sequence

Occurrence indicator:

  • MaxOccurs

  • MinOccurs

Group indicator:

  • Group name

  • AttributeGroup name

Order indicator

The Order indicator is used to define the order of elements.

All indicator

The < all > indicator states that child elements can appear in any order, and each child element must appear only once:

<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>    

注意: When using the < all > indicator, you can set < minOccurs > to 0 or 1, while you can only set the < maxOccurs > indicator to 1 (< minOccurs > and < maxOccurs > will be covered later).

Choice indicator

The < choice > indicator specifies that one child element can appear or another child element (either one or the other):

<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>     

Sequence indicator

< sequence > specifies that child elements must appear in a specific order:

<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 indicator

The Occurrence indicator is used to define how often an element occurs.

注意: For all “Order” and “Group” indicators (any, all, choice, sequence, group name, and group reference), the default values for maxOccurs and minOccurs are 1.

MaxOccurs indicator

The < maxOccurs > indicator can specify the maximum number of times an element can appear:

<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>    

The above example shows that the child element “child_name” can appear at least once in the “person” element (where the default value for minOccurs is 1) and up to 10 times.

MinOccurs indicator

The < minOccurs > indicator specifies the minimum number of times an element can appear:

<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>    

The above example shows that the child element “child_name” can appear at least 0 times and up to 10 times in the “person” element.

提示: To make the occurrence of an element unlimited, use the declaration maxOccurs= “unbounded”:

A practical example:

A XML file named “Myfamily.xml”:

   Hege Refsnes Cecilie   Tove Refsnes Hege Stale Jim Borge   Stale Refsnes   

The above XML file contains a root element named “persons”. Within this root element, we define three “person” elements. Each “person” element must contain a “full_name” element, and it can contain up to 5 “child_name” elements.

这是schema文件”family.xsd”:

                     

Group indicator

The Group indicator is used to define related batches of elements.

Element group

Element groups are defined through group declarations:

<xs:group name="groupname"> ... xs:group>    

You must define an all, choice, or sequence element inside the group declaration. The following example defines a group named “persongroup”, which defines a set of elements that must appear in a precise order:

<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>    

After you have defined group, you can reference it in another 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>     

Attribute group

Property groups are defined through attributeGroup declarations:

<xs:attributeGroup name="groupname"> ... xs:attributeGroup>    

The following example defines a property group named “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>    

After you have defined the property group, you can reference it in another definition, like this:

<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>      
                
                
            
        
        
《地理信息系统原理、技术与方法》  97

最近几年来,地理信息系统无论是在理论上还是应用上都处在一个飞速发展的阶段。 GIS被应用于多个领域的建模和决策支持,如城市管理、区划、环境整治等等,地理信息成为信息时代重要的组成部分之一; “数字地球”概念的提出,更进一步推动了作为其技术支撑的GIS的发展。 与此同时,一些学者致力于相关的理论研究,如空间感知、空间数据误差、空间关系的形式化等等。 这恰好说明了地理信息系统作为应用技术和学科的两个方面,并且这两个方面构成了相互促进的发展过程。