Latest web development tutorials

Wymień elementy XML Schema

Według schematu XML, element może być zastąpiona innym elementem.


Wymienione elementy

Zilustrujmy: naszym klientom z Wielkiej Brytanii i Norwegii. Chcemy mieć możliwość wyboru, aby umożliwić użytkownikom korzystanie z norweskich nazwy elementów w dokumencie XML lub angielskiej nazwy elementu.

Aby rozwiązać ten problem, możemy zdefiniować substitutionGroup w schemacie XML. Po pierwsze, musimy zadeklarować główny element, a następnie będziemy zadeklarować drobne elementy, elementy te mogą być zgłoszone, gdy są one w stanie zastąpić element podstawowy.

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

W powyższym przykładzie, "nazwa" elementem jest głównym elementem "navn" Element można wymienić "nazwa" element.

Rozważmy fragment schematu 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"/>

Ważny dokument XML tak (według powyższego schematu):

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

Albo coś takiego:

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


Wymienić element oporowy

Aby zapobiec inne elementy zastąpić określony element, należy użyć właściwości bloku:

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

Zobacz fragment schematu 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"/>

Ważny dokument XML powinien wyglądać następująco (według powyższego schematu):

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

Jednak Niniejszy dokument nie jest już uzasadniony:

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


Korzystanie substitutionGroup

Wymienne elementy muszą być głównymi elementami tego samego typu, lub pochodzi od głównego elementu. Jeśli typ może zastąpić elementy głównych elementów tego samego typu, nie trzeba określić typ elementu może być zastąpiony.

Należy pamiętać, substitutionGroup wszystkie elementy w (podstawowych elementów i elementów wymiennych) muszą być zadeklarowane jako elementy globalnych, w przeciwnym wypadku nie będzie działać!


Jaki jest elementem globalnego (Global Elements)?

Globalny elementem odnosi się do bezpośrednich elementów potomnych "schematu" element! Lokalne elementy (elementy miejscowe) odnosi się do elementów zagnieżdżone w innych elementów.