中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

XML Schema 元素替換


通過 XML Schema,一個元素可對另一個元素進行替換。


元素替換

讓我們舉例說明:我們的用戶來自英國和挪威。我們希望有能力讓用戶選擇在 XML 文檔中使用挪威語的元素名稱還是英語的元素名稱。

為了解決這個問題,我們可以在 XML schema 中定義一個 substitutionGroup。首先,我們聲明主元素,然后我們會聲明次元素,這些次元素可聲明它們能夠替換主元素。

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

在上面的例子中,"name" 元素是主元素,而 "navn" 元素可替代 "name" 元素。

請看一個 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"/>

有效的 XML 文檔類似這樣(根據(jù)上面的 schema):

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

或類似這樣:

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

阻止元素替換

為防止其他的元素替換某個指定的元素,請使用 block 屬性:

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

請看某個 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"/>

合法的 XML 文檔應(yīng)該類似這樣(根據(jù)上面的 schema):

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

但是下面的文檔不再合法:

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

使用 substitutionGroup

可替換元素的類型必須和主元素相同,或者從主元素衍生而來。假如可替換元素的類型與主元素的類型相同,那么您就不必規(guī)定可替換元素的類型了。

請注意,substitutionGroup 中的所有元素(主元素和可替換元素)必須被聲明為全局元素,否則就無法工作!


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

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