Latest web development tutorials

เปลี่ยนองค์ประกอบ XML Schema

โดย XML Schema เป็นแร่ธาตุที่สามารถถูกแทนที่ด้วยองค์ประกอบอื่น


องค์ประกอบแทนที่

ขอให้เราแสดงให้เห็นถึง: ลูกค้าของเราจากสหราชอาณาจักรและประเทศนอร์เวย์ เราต้องการที่จะมีความสามารถในการช่วยให้ผู้ใช้เลือกที่จะใช้ชื่อองค์ประกอบในนอร์เวย์เอกสาร XML หรือชื่อภาษาอังกฤษขององค์ประกอบ

เพื่อแก้ปัญหานี้เราสามารถกำหนด substitutionGroup ใน schema XML ที่ ครั้งแรกที่เราประกาศองค์ประกอบหลักแล้วเราจะประกาศองค์ประกอบเล็ก ๆ น้อย ๆ องค์ประกอบเหล่านี้สามารถประกาศเมื่อพวกเขาสามารถที่จะเปลี่ยนองค์ประกอบหลัก

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

ในตัวอย่างข้างต้น "ชื่อ" องค์ประกอบที่เป็นองค์ประกอบหลัก "navn" องค์ประกอบที่สามารถเปลี่ยน "ชื่อ" องค์ประกอบ

พิจารณาส่วนเค้าร่าง 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"/>

เอกสาร XML ที่ถูกต้องเช่นนี้ (ตามคีมาข้างต้น):

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

หรือบางอย่างเช่นนี้

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


เปลี่ยนองค์ประกอบครบวงจร

เพื่อป้องกันไม่ให้องค์ประกอบอื่น ๆ แทนที่องค์ประกอบที่ระบุให้ใช้คุณสมบัติบล็อก:

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

เห็นเค้าร่าง 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"/>

เอกสาร XML ที่ถูกต้องควรจะมีลักษณะเช่นนี้ (ตามคีมาข้างต้น):

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

อย่างไรก็ตามเอกสารต่อไปนี้จะไม่ถูกต้องตามกฎหมาย:

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


ใช้ substitutionGroup

องค์ประกอบที่ถอดเปลี่ยนได้จะต้องเป็นองค์ประกอบหลักของประเภทเดียวกันหรือมาจากองค์ประกอบหลัก ถ้าชนิดสามารถเปลี่ยนองค์ประกอบขององค์ประกอบหลักของประเภทเดียวกันคุณจะไม่ได้มีการระบุชนิดขององค์ประกอบที่สามารถแทนที่

โปรดทราบ substitutionGroup องค์ประกอบทั้งหมดใน (องค์ประกอบหลักและองค์ประกอบแบบถอดเปลี่ยนได้) จะต้องได้รับการประกาศให้เป็นองค์ประกอบโลกมิฉะนั้นมันจะไม่ทำงาน!


องค์ประกอบทั่วโลก (Elements ทั่วโลก) คืออะไร?

องค์ประกอบทั่วโลกหมายถึงองค์ประกอบของเด็กโดยตรงของ "สคี" องค์ประกอบ! องค์ประกอบท้องถิ่น (องค์ประกอบท้องถิ่น) หมายถึงองค์ประกอบซ้อนอยู่ในองค์ประกอบอื่น ๆ