XML 스키마 튜토리얼login
XML 스키마 튜토리얼
작가:php.cn  업데이트 시간:2022-04-20 14:13:02

XML 스키마 요소 대체


XSD 요소 대체


XML 스키마를 통해 한 요소가 다른 요소를 대체할 수 있습니다.


요소 교체

예를 들어 보겠습니다. 사용자는 영국과 노르웨이 출신입니다. 우리는 사용자가 XML 문서에서 노르웨이어 또는 영어 요소 이름을 사용할지 선택할 수 있는 기능을 원합니다.

이 문제를 해결하기 위해 XML 스키마에서 substitutionGroup을 정의할 수 있습니다. 먼저 메인 요소를 선언한 다음, 메인 요소를 대체할 수 있음을 선언하는 보조 요소를 선언합니다.

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

위의 예에서, "name" 요소는 기본 요소이고 "navn" 요소는 "name" 요소를 대체합니다.

XML 스키마의 일부를 살펴보십시오.

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

<xs:complexType name="custinfo">
<xs:순서>
<xs:element ref="이름"/>
</xs:sequence>
</xs:complexType>

<xs:element name="customer" type="custinfo"/>
<xs:element name="kunde" replacementGroup="고객 "/>

유효한 XML 문서는 다음과 같습니다(위의 스키마에 따르면):

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

또는 이와 유사한 형식:

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


블록 요소 교체

다른 요소가 지정된 요소를 대체하지 못하도록 하려면 블록 속성을 사용하세요:

<xs: 요소 name="이름" type="xs:string" block="대체"/>

XML 스키마의 일부를 살펴보십시오.

<xs:element name="name" type="xs:string" block="substitution"/>
<xs:element name="navn" 대체 그룹 ="name"/>

<xs:complexType name="custinfo">
<xs:순서>
<xs:element ref="이름"/>
</xs:sequence>
</xs:complexType>

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

법적 XML 문서는 다음과 유사해야 합니다(위 스키마에 따름):

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

그러나 다음 문서는 더 이상 합법적이지 않습니다.

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


substitutionGroup 사용

대체 가능한 요소의 유형은 기본 요소와 동일하거나 기본 요소에서 파생되어야 합니다. 교체 가능한 요소의 유형이 기본 요소의 유형과 동일한 경우 교체 가능한 요소의 유형을 지정할 필요가 없습니다.

substitutionGroup의 모든 요소(메인 요소 및 교체 가능한 요소)는 전역 요소로 선언되어야 합니다. 그렇지 않으면 작동하지 않습니다!


글로벌 요소란 무엇인가요?

전역 요소는 "스키마" 요소의 직계 하위 요소를 참조합니다! 로컬 요소는 다른 요소 내에 중첩된 요소를 참조합니다.

PHP 중국어 웹사이트