ล่าสุดการพัฒนาเว็บบทเรียน
×

XML เกี่ยวกับการสอน

XML บ้าน XML บทนำ XML วิธีใช้ XML ต้นไม้ XML วากยสัมพันธ์ XML องค์ประกอบ XML แอตทริบิวต์ XML namespaces XML แสดง XML XSLT XML XPath XML XLink XML ตรวจสอบ XML DTD XML schema XML เซิร์ฟเวอร์ XML การประยุกต์ใช้งาน XML ตัวอย่าง XML ทดสอบ XML ใบรับรอง

XML DOM

DOM แนะนำ DOM โหนด DOM XMLHttpRequest DOM การเข้าถึง DOM ข้อมูลโหนด DOM รายการโหนด DOM ภายใน DOM การนำทาง DOM ได้รับค่า DOM Change โหนด DOM Remove โหนด DOM Replace โหนด DOM Create โหนด DOM Add โหนด DOM Clone โหนด DOM ตัวอย่าง

DOM การอ้างอิง

DOM ประเภทโหนด DOM ปม DOM NodeList DOM NamedNodeMap DOM เอกสาร DOM ธาตุ DOM คุณลักษณะ DOM ข้อความ DOM CDATA DOM คิดเห็น DOM XMLHttpRequest DOM parser

XML DTD

DTD แนะนำ DTD การก่อสร้างตึก DTD องค์ประกอบ DTD แอตทริบิวต์ DTD องค์ประกอบ VS attr DTD หน่วยงาน DTD ตัวอย่าง

XSD Schema

XSD แนะนำ XSD ทำอย่างไร XSD <schema> XSD องค์ประกอบ XSD แอตทริบิวต์ XSD ข้อ จำกัด

XSD ซับซ้อน

XSD องค์ประกอบ XSD ว่างเปล่า XSD เพียงองค์ประกอบ XSD ข้อความเท่านั้น XSD ผสม XSD ตัวชี้วัด XSD <any> XSD <anyAttribute> XSD การแทน XSD ตัวอย่าง

XSD Data

XSD เชือก XSD วันที่ XSD เป็นตัวเลข XSD อื่น ๆ XSD การอ้างอิง

Web บริการ

XML บริการ XML WSDL XML SOAP XML RDF XML RSS

 

XSD ธาตุชดเชย


กับ XML Schemas, องค์ประกอบหนึ่งสามารถใช้แทนองค์ประกอบอื่น


องค์ประกอบชดเชย

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

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

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

ในตัวอย่างข้างต้น "name" องค์ประกอบเป็นองค์ประกอบหัวและ "navn" องค์ประกอบทดแทนสำหรับ "name"

มองไปที่ส่วนของคี 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 ที่ถูกต้อง (according to the schema above) จะมีลักษณะเช่นนี้

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

หรือเช่นนี้

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

การปิดกั้นธาตุชดเชย

เพื่อป้องกันไม่ให้องค์ประกอบอื่น ๆ จากแทนองค์ประกอบที่ระบุให้ใช้ block แอตทริบิวต์:

<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 ที่ถูกต้อง (according to the schema above) ลักษณะเช่นนี้:

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

แต่เรื่องนี้ไม่ถูกต้อง:

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

ใช้ substitutionGroup

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

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


สิ่งที่เป็นองค์ประกอบของโลก?

องค์ประกอบทั่วโลกเป็นองค์ประกอบที่มีเด็กทันที "schema" องค์ประกอบ! องค์ประกอบในท้องถิ่นเป็นองค์ประกอบที่ซ้อนอยู่ในองค์ประกอบอื่น ๆ