: 문서에 표시기를 사용하여 요소를 사용하는 방법을 제어한다.
Order indicators
a. All: 요소들이 순서 상관없이 나타날 수 있지만, 각 요소는 0 또는 1번만 나올 수 있다.
b. Choice: 지정된 여러 요소 중 하나만 선택해 나타날 수 있다.
c. Sequence: 요소들이 반드시 지정된 순서대로 나타나야 한다.
Occurrence indicators
a. maxOccurs: 특정 요소가 최대 몇 번 나타날 수 있는지를 지정한다.
b. minOccurs: 특정 요소가 최소 몇 번 나타나야 하는지를 지정한다.
Group indicators
a. Group name: 여러 요소들을 하나의 그룹으로 묶어 재사용할 수 있도록 정의한다.
b. attributeGroup name: 여러 속성들을 하나의 그룹으로 묶어 재사용할 수 있도록 정의한다.
: 하위 요소가 어떤 순서로든 표시될 수 있고, 각 하위 요소는 한 번만 표시되어야 함을 지정한다.
<xs:complexType>
<xs:all>
<xs:element name="firstname" type="xs:string" />
<xs:element name="lastname" type="xs:string" />
</xs:all>
</xs:complexType>
설명: firstname과 lastname 요소는 순서에 상관없이 한 번씩만 나타날 수 있다.
: 하나의 하위 요소 또는 다른 하위 요소가 발생할 수 있음을 지정한다. (있는 것 중 하나만 사용)
<xs:complexType>
<xs:choice>
<xs:element name="lastname" type="xs:string" />
<xs:element name="age" type="xs:integer" />
<xs:element name="dateborn" type="xs:date" />
</xs:choice>
</xs:complexType>
설명: lastname, age, dateborn 중 하나만 선택해서 사용할 수 있다.
: 하위 요소가 특정 순서로 표시되도록 지정한다.
<xs:complexType>
<xs:sequence>
<xs:element name="lastname" type="xs:string" />
<xs:element name="age" type="xs:integer" />
<xs:element name="dateborn" type="xs:date" />
</xs:sequence>
</xs:complexType>
설명: lastname, age, dateborn 요소는 반드시 작성된 순서대로 나타나야 한다.
<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="5" minOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
설명: child_name 요소는 최소 1번, 최대 5번까지 나타날 수 있다.
<?xml version="1.0" encoding="UTF-8"?>
<persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="familyAttr.xsd">
<person firstname="Peter">
<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>
<?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>
<?xml version="1.0" encoding="UTF-8"?>
<persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="familyAttr.xsd">
<person firstname="Peter" lastname="brwon" birthday="2020-10-10">
<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>
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<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="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:attributeGroup ref="personattrgroup"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
