XSD 元素替换(Element Substitution)
- 上一页 XSD <anyAttribute>
- 下一页 XSD 实例
Dengan Schema XML, satu elemen dapat menggantikan elemen lain.
Penggantian Elemen
Bahkan saja, pengguna kami datang dari Inggris dan Norwegia. Kami ingin memiliki kemampuan untuk memungkinkan pengguna memilih menggunakan nama elemen dalam bahasa Norwegia atau Inggris dalam dokumen XML.
Untuk memecahkan masalah ini, kami dapat mendefinisikan satu di dalam schema XML. substitutionGroupPertama, kami menyatakan elemen utama, lalu kami menyatakan elemen sekunder, elemen sekunder ini dapat menyatakan bahwa mereka dapat menggantikan elemen utama.
<xs:element name="name" type="xs:string"/> <xs:element name="navn"/> substitutionGroup="name"/>
Dalam contoh di atas, elemen "name" adalah elemen utama, sementara elemen "navn" dapat menggantikan elemen "name".
Lihat potongan schema XML yang ada:
<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"/>
Dokumen XML yang sah seperti ini (sesuai dengan schema di atas):
<customer> <name>John Smith</name> </customer>
atau seperti ini:
<kunde> <navn>John Smith</navn> </kunde>
Mencegah penggantian elemen
Untuk mencegah elemen lain menggantikan elemen yang ditentukan, gunakan atribut block:
<xs:element name="name" type="xs:string"> block="substitution"/>
Lihat potongan schema XML yang ada:
<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"/>
Dokumen XML yang sah seharusnya seperti ini (sesuai dengan schema di atas):
<customer> <name>John Smith</name> </customer>
Namun, dokumen di bawah ini tidak sah lagi:
<kunde> <navn>John Smith</navn> </kunde>
Gunakan substitutionGroup
Tipe elemen yang dapat diganti harus sama dengan elemen utama, atau berasal dari elemen utama. Jika tipe elemen yang dapat diganti sama dengan tipe elemen utama, maka Anda tidak perlu menentukan tipe elemen yang dapat diganti.
请注意,substitutionGroup 中的所有元素(主元素和可替换元素)必须被声明为全局元素,否则就无法工作!
什么是全局元素(Global Elements)?
全局元素指 "schema" 元素的直接子元素!本地元素(Local elements)指嵌套在其他元素中的元素。
- 上一页 XSD <anyAttribute>
- 下一页 XSD 实例