Najnowsze tutoriale tworzenie stron internetowych
 

XSD Element Zmiana


Z schematów XML, jeden element może zastąpić inny element.


Element Zmiana

Załóżmy, że mamy użytkowników z dwóch różnych krajów: Anglii i Norwegii. Chcielibyśmy możliwość, aby użytkownik mógł wybrać, czy on lub ona lubi korzystać z norweskich nazwy elementu lub nazw elementów języka angielskiego w dokumencie XML.

Aby rozwiązać ten problem, można było określić substitutionGroup schematu XML. Po pierwsze, musimy zadeklarować element głowę, a następnie możemy zadeklarować inne elementy, które stwierdzają, że są substytucyjne dla elementu głównego.

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

W powyższym przykładzie, "name" elementem jest element głowa i "navn" elementem jest substytucyjne "name" .

Spójrz na ten 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 (according to the schema above) mógłby wyglądać następująco:

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

i tak:

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

Blokowanie elementu Zmiana

Aby zapobiec inne elementy z zastępując określonego elementu, użyj block atrybut:

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

Spójrz na ten 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 (according to the schema above) wygląda następująco:

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

Ale to nieważne:

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

Korzystanie substitutionGroup

Typ podstawialnym elementów musi być taki sam, lub pochodzące od rodzaju elementu głównego. Jeżeli rodzaj elementu do podstawienia jest taki sam jak typ głowicy elementu nie trzeba określić rodzaj elementu do podstawienia.

Zauważ, że wszystkie elementy w substitutionGroup (elementu głowy i substytucyjne elementy) muszą być zadeklarowane jako elementy globalnych, w przeciwnym wypadku nie będzie działać!


Jakie są elementy globalne?

Elementy globalne są elementy, które są natychmiastowe dzieci z "schema" elementu! Elementy lokalne są elementy zagnieżdżone w innych elementach.