XSD 복합 타입 지시자
지시자를 통해 문서에서 요소 사용 방식을 제어할 수 있습니다.
지시자
일곱 가지 지시자가 있습니다:
순서 지시자:
- 모두
- 선택
- 순서
발생 지시자:
- maxOccurs
- minOccurs
그룹 지시자:
- 그룹 이름
- attributeGroup name
Order 지시자
Order 지시자는 요소의 순서를 정의합니다。
All 지시자
<all> 지시자는 자식 요소가 무제한으로 나타날 수 있으며, 각 자식 요소는 단 한 번만 나타날 수 있다는 것을 정의합니다:
<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>
주석:<all> 지시자를 사용할 때, <minOccurs>을 0 또는 1으로 설정할 수 있으며, <maxOccurs> 지시자는 1로 설정할 수 있습니다(<minOccurs> 및 <maxOccurs>는 나중에 설명할 것입니다)。
Choice 지시자
<choice> 지시자는 특정 자식 요소 또는 다른 자식 요소(또는 그렇지 않다면)가 나타날 수 있다는 것을 정의합니다:
<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>
푸트:자식 요소가 무제한으로 횟수를 설정하려면 <maxOccurs> (나중에 설명할 것)을 unbounded(무한 횟수)으로 설정할 수 있습니다。
Sequence 지시자
<sequence>은 자식 요소가 특정 순서로 나타나도록 정의합니다:
<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 지시자
Occurrence 지시자는 요소가 나타날 수 있는 빈도를 정의합니다。
주석:모든 "Order" 및 "Group" 지시자(any, all, choice, sequence, group name 및 group reference)에서 maxOccurs 및 minOccurs의 기본 값은 모두 1입니다。
maxOccurs 지시자
<maxOccurs> 지시자는 요소가 나타날 수 있는 최대 횟수를 정의할 수 있습니다:
<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>
위의 예제에서는 "child_name" 자식 요소가 "person" 요소에서 최소 1회(이미 minOccurs의 기본 값은 1입니다)에서 최대 10회로 표시될 수 있다는 것을 보여줍니다。
minOccurs 지시자
<minOccurs> 지시자는 요소가 나타날 수 있는 최소 횟수를 정의할 수 있습니다:
<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>
위의 예제에서는 "child_name" 자식 요소가 "person" 요소에 최소 0회, 최대 10회로 표시될 수 있다는 것을 보여줍니다。
푸트:요소가 무제한으로 횟수 제한 없이 표시되도록 하려면 maxOccurs="unbounded" 이라는 선언을 사용하십시오:
실제 예제는 다음과 같습니다:
이름이 "Myfamily.xml"인 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>
위의 XML 파일은 "persons"라는 이름의 루트 요소를 포함하고 있습니다. 이 루트 요소 내에서는 세 개의 "person" 요소를 정의했습니다. 각 "person" 요소는 "full_name" 요소를 포함해야하며, 최대 5 개의 "child_name" 요소를 포함할 수 있습니다.
이 schema 파일 "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 지시자
Group 지시자는 관련 수집 요소를 정의하는 데 사용됩니다.
요소 그룹
요소 그룹은 group 선언을 통해 정의됩니다:
<xs:group name="组名称"> ... </xs:group>
당신은 group 선언 내부에서 all, choice 또는 sequence 요소를 정의해야 합니다. 아래의 예제는 "persongroup"라는 이름의 group을 정의합니다. 이 group은 정확한 순서로 나타나는 요소 그룹을 정의합니다:
<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>
당신이 group 정의를 완료하면, 다른 정의에서 그것을 참조할 수 있습니다:
<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>
속성 그룹
속성 그룹은 attributeGroup 선언을 통해 정의됩니다:
<xs:attributeGroup name="组名称"> ... </xs:attributeGroup>
아래의 예제는 "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>
당신이 속성 그룹을 완성하면, 다른 정의에서 그것을 참조할 수 있습니다. 예를 들어:
<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>