อะไรคือความแตกต่างระหว่าง Extensible Markup Language (XML) และ XML Schema (XSD)?
อะไรคือความแตกต่างระหว่าง Extensible Markup Language (XML) และ XML Schema (XSD)?
คำตอบ:
จริงๆแล้ว XSD คือ XML นั้นเอง มีวัตถุประสงค์เพื่อตรวจสอบความถูกต้องของโครงสร้างของเอกสาร XML อื่น XSD ไม่บังคับสำหรับ XML ใด ๆ แต่รับรองว่า XML สามารถใช้เพื่อวัตถุประสงค์บางอย่างได้ XML มีเฉพาะข้อมูลในรูปแบบและโครงสร้างที่เหมาะสม
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="QuoteRequestID" type="xs:unsignedLong" minOccurs="0" /> </xs:schema>
แต่ได้รับข้อผิดพลาด: Error!!! The 'minOccurs' attribute cannot be present.
ยกตัวอย่าง
<root>
<parent>
<child_one>Y</child_one>
<child_two>12</child_two>
</parent>
</root>
และออกแบบ xsd สำหรับสิ่งนั้น:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="parent">
<xs:complexType>
<xs:sequence>
<xs:element name="child_one" type="xs:string" />
<xs:element name="child_two" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
สิ่งที่เป็นไปไม่ได้กับ XSD:ต้องการเขียนไว้ก่อนเนื่องจากรายการมีขนาดเล็กมาก
1) คุณไม่สามารถตรวจสอบโหนด / แอตทริบิวต์โดยใช้ค่าของโหนด / แอตทริบิวต์อื่น
2) นี่คือข้อ จำกัด :องค์ประกอบที่กำหนดในไฟล์ XSD ต้องถูกกำหนดด้วยประเภทข้อมูลเดียวเท่านั้น [ในตัวอย่างด้านบนหาก<child_two>
ปรากฏใน<parent>
โหนดอื่นจะไม่สามารถกำหนดประเภทข้อมูลได้นอกจาก int
3) คุณไม่สามารถเพิกเฉยต่อการตรวจสอบความถูกต้องขององค์ประกอบและแอตทริบิวต์กล่าวคือหากองค์ประกอบ / แอตทริบิวต์ปรากฏใน XML จะต้องกำหนดไว้อย่างชัดเจนใน XSD ที่เกี่ยวข้อง แม้ว่าการใช้งาน <xsd:any>
อนุญาต แต่ก็มีกฎของตัวเอง การปฏิบัติตามซึ่งนำไปสู่ข้อผิดพลาดในการตรวจสอบความถูกต้อง ฉันได้ลองใช้แนวทางที่คล้ายกันแล้วและไม่ประสบความสำเร็จอย่างแน่นอนนี่คือคำถาม & คำตอบ
สิ่งที่เป็นไปได้กับ XSD:
1) คุณสามารถทดสอบลำดับชั้นที่เหมาะสมของโหนด XML [xsd กำหนดว่าลูกใดควรอยู่ภายใต้พาเรนต์ ฯลฯ ซึ่งจะถูกนับเป็นข้อผิดพลาดในตัวอย่างข้างต้น child_two ไม่สามารถเป็นชายด์ของ root ในทันที แต่เป็นแท็กย่อยของ "parent" ซึ่งอยู่ในทางกลับกัน a ลูกของโหนด "ราก" มีลำดับชั้น .. ]
2) คุณสามารถกำหนดชนิดข้อมูลของค่าของโหนด [ในตัวอย่างข้างบน child_two ไม่สามารถมีข้อมูลอื่นนอกจากตัวเลข]
3) คุณยังสามารถกำหนด data_types ที่กำหนดเอง [ตัวอย่างเช่นสำหรับโหนด<month>
ข้อมูลที่เป็นไปได้อาจเป็นหนึ่งใน 12 เดือน .. ดังนั้นคุณต้องกำหนด 12 เดือนทั้งหมด ในชนิดข้อมูลใหม่เขียนชื่อ 12 เดือนทั้งหมดเป็นค่าการแจงนับ ..
4) คุณสามารถกำหนดข้อ จำกัด ในการเกิดองค์ประกอบโดยใช้ minOccurs และ maxOccurs ค่าเริ่มต้นคือ 1 และ 1
.. และอื่น ๆ อีกมากมาย ...
<root> <A>A</A> <B/> <C/> </root>
และถ้าโหนด<A>
เป็น<A>B</A>
แล้วให้<B>
บังคับถ้า<A>C</A>
แล้วให้<C>
บังคับ
XSD:
XSD (XML Schema Definition) ระบุวิธีอธิบายองค์ประกอบอย่างเป็นทางการในเอกสาร Extensible Markup Language (XML)
Xml:
XML ได้รับการออกแบบมาเพื่ออธิบายข้อมูลซึ่งไม่ขึ้นอยู่กับซอฟต์แวร์และฮาร์ดแวร์
มันช่วยเพิ่มสิ่งต่อไปนี้
- การแบ่งปันข้อมูล
- แพลตฟอร์มอิสระ
- เพิ่มความพร้อมใช้งานของข้อมูล
แตกต่าง:
XSD อิงและเขียนบน XML
XSD กำหนดองค์ประกอบและโครงสร้างที่สามารถปรากฏในเอกสารได้ในขณะที่ XML ไม่มี
XSD ทำให้แน่ใจว่าข้อมูลถูกตีความอย่างถูกต้องในขณะที่ XML ไม่
เอกสาร XSD ได้รับการตรวจสอบเป็น XML แต่สิ่งที่ตรงกันข้ามอาจไม่เป็นจริงเสมอไป
XSD จับข้อผิดพลาดได้ดีกว่า XML
XSD กำหนดองค์ประกอบที่สามารถใช้ในเอกสารซึ่งเกี่ยวข้องกับข้อมูลจริงที่จะเข้ารหัส
เช่น
วันที่ที่แสดงเป็น 1/12/2010 อาจหมายถึง 12 มกราคมหรือ 1 ธันวาคม การประกาศชนิดข้อมูลวันที่ในเอกสาร XSD ตรวจสอบให้แน่ใจว่าเป็นไปตามรูปแบบที่กำหนดโดย XSD
XMLกำหนดไวยากรณ์ขององค์ประกอบและแอตทริบิวต์สำหรับการจัดโครงสร้างข้อมูลในเอกสารที่มีรูปแบบสมบูรณ์
XSD (หรือที่เรียกว่า XML Schema)เช่น DTD ก่อนหน้านี้จะเพิ่มพลังให้กับ e X tensibility ใน XMLโดยให้ผู้ใช้กำหนดคำศัพท์และไวยากรณ์ขององค์ประกอบและแอตทริบิวต์ในเอกสาร XML ที่ถูกต้อง
<school>
<firstname>John</firstname>
<lastname>Smith</lastname>
</school>
<xs:element name="school">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
ที่นี่:
xs: element : กำหนดองค์ประกอบ
xs: ลำดับ : หมายถึงองค์ประกอบลูกที่ปรากฏตามลำดับที่กล่าวถึงเท่านั้น
xs: complexType : แสดงว่ามีองค์ประกอบอื่น ๆ
xs: simpleType : แสดงว่าไม่มีองค์ประกอบอื่น ๆ
ชนิด: สตริงทศนิยมจำนวนเต็มบูลีนวันที่เวลา
ด้วยความช่วยเหลือของคุณสมบัติพิเศษเราสามารถดำเนินการได้หลายอย่าง
การดำเนินการใด ๆ บน xsd นั้นง่ายกว่า xml
โดยทั่วไปไฟล์ XSD จะกำหนดว่าไฟล์ XML จะมีลักษณะอย่างไร เป็นไฟล์ Schemaที่กำหนดโครงสร้างของไฟล์ XML ดังนั้นจึงระบุว่าฟิลด์ที่เป็นไปได้คืออะไรและจะมีขนาดเท่าใด
ไฟล์ XML เป็นอินสแตนซ์ของ XSD เนื่องจากใช้กฎที่กำหนดไว้ใน XSD
XML มีแอปพลิเคชั่นที่กว้างกว่า f.ex. HTML ไม่มี "แอปพลิเคชัน" ที่แท้จริงหรือเป็นค่าเริ่มต้น ดังนั้นในขณะที่คุณอาจไม่สนใจจริงๆว่าหน้าเว็บจะถูกควบคุมโดยสิ่งที่อนุญาตจากฝั่งของผู้เขียนคุณอาจต้องการกำหนดสิ่งที่เอกสาร XML อาจมีและอาจไม่มี
มันเหมือนกับการออกแบบฐานข้อมูล
สิ่งที่เกี่ยวกับเทคโนโลยี XML ก็คือสิ่งเหล่านี้มีลักษณะเป็นข้อความ ด้วย XSD หมายความว่าคุณมีกรอบการกำหนดโครงสร้างข้อมูลที่สามารถ "เสียบ" กับเครื่องมือประมวลผลข้อความเช่น PHP ดังนั้นไม่เพียง แต่คุณสามารถจัดการข้อมูลได้เอง แต่ยังสามารถเปลี่ยนแปลงและจัดทำเอกสารโครงสร้างได้อย่างง่ายดายและยังสร้างส่วนหน้าอัตโนมัติอีกด้วย
เมื่อมองเช่นนี้ XSD คือ "กาว" หรือ "ตัวกลาง" ระหว่างข้อมูล (XML) และเครื่องมือประมวลผลข้อมูล