Mifumo ya XSD Mfano wa Mfumo (Element Substitution)

Kwa kutumia schema cha XML, kina moja kinaweza kusubitisha kina kina mwingine.

Mbinu ya Kusubitisha Element

Tunafikia kwa mtaani: Wengi wa watu wetu wanaingia kutoka nchi ya Uingereza na Norway. Tunataka kwamba wanaweza chaguo kufanya kwamba jina la kina katika mawili ya element ya XML kwa lugha ya Norway au lugha ya Kiingereza.

Kuusihulia masuala hilo, tunaweza kuzungumza kina cha schema cha XML. substitutionGroupKwanza, tunakurahausia kina msingi, kisha tutakurahausia kina msaidizi, kwa kawaida kinaaminika kwamba kinaingia kina msingi.

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

Kwenye mafanikio hii, kilele cha "name" ni kina, na kilele cha "navn" kinaweza kutendeka kwa kilele cha "name".

Angalia mawaka ya XML schema:

<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"/>

Andiko la XML la hali ya hali lazima linatendeka kama hii (kwa sababu ya schema inayotumiwa hapa):

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

au kama hii:

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

Kupunguza kilele cha kina

Kusikitisha ukabidi wa kilele cha kina kama kina mwingine, tumia mafanikio ya block:

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

Angalia mawaka ya XML schema:

<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"/>

Andiko la XML la hali ya hali lazima linatendeka kama hii (kwa sababu ya schema inayotumiwa hapa):

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

Kutokana na hii, hali ya hali ya andiko inaonekana huzungumza:

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

Tumia substitutionGroup

Aina ya kilele cha kiwemo kinahitaji kuelekea kilele cha kina, au kinaenea kutoka kilele cha kina. Ikiwa aina ya kilele cha kilele cha kina inaelekea kilele cha kina, hivyo hakuna utaraji wa kumekuja aina ya kilele cha kilele cha kina.

请注意,substitutionGroup 中的所有元素(主元素和可替换元素)必须被声明为全局元素,否则就无法工作!

什么是全局元素(Global Elements)?

全局元素指 "schema" 元素的直接子元素!本地元素(Local elements)指嵌套在其他元素中的元素。