Pagsuway ng Elementong XSD
- Nakaraang Pahina XSD <anyAttribute>
- Susunod na Pahina Halimbawa ng XSD
Through XML Schema, one element can replace another element.
Element Replacement
让我们举例说明:我们的用户来自英国和挪威。我们希望有能力让用户选择在 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 文档类似这样(根据上面的 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 文档应该类似这样(根据上面的 schema):
<customer> <name>John Smith</name> </customer>
但是下面的文档不再合法:
<kunde> <navn>John Smith</navn> </kunde>
Paggamit ng substitutionGroup
Ang uri ng element na pwedeng piliin ay dapat ay magkapareho sa uri ng pangunahing element, o dapat ay nagmula sa pangunahing element. Kung ang uri ng element na pwedeng piliin ay magkapareho sa uri ng pangunahing element, hindi mo na kailangang itakda ang uri ng element na pwedeng piliin.
Hindi magiging gumagana ang lahat ng element sa group na substitutionGroup (ang pangunahing element at ang element na pwedeng piliin) kung hindi sila ay ipinahayag bilang pangkalahatang element, kung hindi sila ay gumagana!
Ano ang pangkalahatang element (global elements)?
Ang pangkalahatang elementong elementong "schema" ay ang direktang anak ng elementong "schema"! Ang lokal na element (local elements) ay ang elementong nakakabit sa ibang element.
- Nakaraang Pahina XSD <anyAttribute>
- Susunod na Pahina Halimbawa ng XSD