최신 웹 개발 튜토리얼
 

XSD 요소 교체


XML 스키마로, 하나의 요소는 다른 요소를 대체 할 수 있습니다.


요소 교체

영국과 노르웨이 : 이제 우리는 두 개의 서로 다른 국가의 사용자가 있다고 가정 해 봅시다. 우리는 사용자가 그 또는 그녀가 XML 문서에서 노르웨이 요소 이름 또는 영어 요소 이름을 사용할지 여부를 선택할 수 있도록하는 기능을하고 싶습니다.

이 문제를 해결하기 위해, 우리는 정의 할 수 substitutionGroup XML 스키마에있다. 먼저, 헤드 소자를 선언하고, 우리는 헤드 소자에 대한 치환임을 명시 다른 원소를 선언.

<xs:element name="name" type="xs:string"/>
<xs:element name="navn" substitutionGroup="name"/>

위의 예에서, "name" 요소는 헤드 소자이며, "navn" 요소에 대한 대행 "name" .

XML 스키마의이 조각 봐 :

<xs:element name="name" type="xs:string"/>
<xs:element name="navn" substitutionGroup="name"/>

<xs:complexType name="custinfo">
  <xs:sequence>
    <xs:element ref="name"/>
  </xs:sequence>
</xs:complexType>

<xs:element name="customer" type="custinfo"/>
<xs:element name="kunde" substitutionGroup="customer"/>

유효한 XML 문서 (according to the schema above) 과 같을 수 있습니다 :

<customer>
  <name>John Smith</name>
</customer>

또는과 같습니다 :

<kunde>
  <navn>John Smith</navn>
</kunde>

요소 교체 차단

지정된 요소와 대체에서 다른 요소를 방지하기 위해 사용하는 block 속성 :

<xs:element name="name" type="xs:string" block="substitution"/>

XML 스키마의이 조각 봐 :

<xs:element name="name" type="xs:string" block="substitution"/>
<xs:element name="navn" substitutionGroup="name"/>

<xs:complexType name="custinfo">
  <xs:sequence>
    <xs:element ref="name"/>
  </xs:sequence>
</xs:complexType>

<xs:element name="customer" type="custinfo" block="substitution"/>
<xs:element name="kunde" substitutionGroup="customer"/>

유효한 XML 문서 (according to the schema above) 다음과 같습니다 :

<customer>
  <name>John Smith</name>
</customer>

그러나 이것은 더 이상 유효하지 않습니다 :

<kunde>
  <navn>John Smith</navn>
</kunde>

substitutionGroup 사용

치환 가능한 원소의 종류는 동일하거나, 헤드 소자의 유형으로부터 유도해야한다. 치환 가능한 소자의 타입은 헤드 소자의 타입과 동일한 경우에는 치환 요소의 유형을 지정할 필요가 없다.

그렇지 않으면 작동하지 않습니다는 substitutionGroup의 모든 요소 (헤드 요소와 치환 요소) 글로벌 요소로 선언해야합니다!


글로벌 요소는 무엇인가?

글로벌 요소는 즉시 자녀 요소 "schema" 요소! 로컬 요소는 다른 요소 내에 중첩 요소입니다.