อ่าน 7 นาที
สคีมา XML
XML Schemaคือคำอธิบายของ เอกสาร XML ประเภท หนึ่ง ซึ่งโดยทั่วไปจะแสดงในรูปของข้อจำกัดเกี่ยวกับโครงสร้างและเนื้อหาของเอกสารประเภทนั้น...
สคีมา XML
XML Schemaคือคำอธิบายของ เอกสาร XML ประเภท หนึ่ง ซึ่งโดยทั่วไปจะแสดงในรูปของข้อจำกัดเกี่ยวกับโครงสร้างและเนื้อหาของเอกสารประเภทนั้น นอกเหนือจากข้อจำกัดทางไวยากรณ์พื้นฐานที่กำหนดโดย XML เอง ข้อจำกัดเหล่านี้โดยทั่วไปจะแสดงโดยใช้การผสมผสานของกฎไวยากรณ์ที่ควบคุมลำดับขององค์ประกอบ ตัวบ่งชี้บูลีนที่เนื้อหาต้องตรงตาม ประเภทข้อมูลที่ควบคุมเนื้อหาขององค์ประกอบและแอตทริบิวต์ และกฎเฉพาะทางอื่นๆ เช่นข้อจำกัด ด้าน ความเป็นเอกลักษณ์และความสมบูรณ์ของการอ้างอิง[ 1 ]
มีภาษาที่พัฒนาขึ้นมาโดยเฉพาะเพื่อใช้ในการแสดง XML Schema ภาษา การกำหนดประเภทเอกสาร (DTD) ซึ่งเป็นภาษาพื้นฐานของข้อกำหนด XML เป็นภาษา Schema ที่มีความสามารถค่อนข้างจำกัด แต่ก็มีประโยชน์อื่นๆ ใน XML นอกเหนือจากการแสดง Schema ภาษา XML Schema ที่มีความสามารถในการแสดงออกสูงกว่าและใช้งานกันอย่างแพร่หลายอีกสองภาษาคือXML Schema (ขึ้นต้นด้วยตัวS ใหญ่ ) และRELAX NG
กลไกในการเชื่อมโยงเอกสาร XML กับสคีมาจะแตกต่างกันไปตามภาษาของสคีมา การเชื่อมโยงอาจทำได้โดยการใช้มาร์กอัปภายในเอกสาร XML เอง หรือโดยวิธีการภายนอกอื่นๆ
โดยทั่วไปแล้ว XML Schema Definition จะเรียกว่า XSD
การตรวจสอบความถูกต้อง
กระบวนการตรวจสอบว่าเอกสาร XML สอดคล้องกับสคีมาหรือไม่ เรียกว่าการตรวจสอบความถูกต้อง (validation)ซึ่งแยกต่างหากจากแนวคิดหลักของ XML เรื่องความถูกต้องทางไวยากรณ์ (syntactic well-formedness ) เอกสาร XML ทุกฉบับต้องมีความถูกต้องทางไวยากรณ์ แต่ไม่จำเป็นว่าเอกสารจะต้องถูกต้องเสมอไป เว้นแต่ว่าตัวแยกวิเคราะห์ XML จะ "ตรวจสอบความถูกต้อง" (validating) ในกรณีนี้ เอกสารจะถูกตรวจสอบว่าสอดคล้องกับสคีมาที่เกี่ยวข้องด้วย ตัวแยกวิเคราะห์ ที่ตรวจสอบความถูกต้องของ DTD เป็นที่นิยมมากที่สุด แต่บางตัวก็รองรับ XML Schema หรือ RELAX NG ด้วยเช่นกัน
การตรวจสอบความถูกต้องของเอกสารตัวอย่างเทียบกับสคีมานั้นถือได้ว่าเป็นกระบวนการที่แยกออกจากกระบวนการแยกวิเคราะห์ XML ในเชิงแนวคิด อย่างไรก็ตาม ในทางปฏิบัติ ตัวตรวจสอบความถูกต้องของสคีมาจำนวนมากถูกรวมเข้ากับตัวแยกวิเคราะห์ XML
ภาษา
มีภาษาต่างๆ มากมายให้เลือกใช้ในการกำหนดโครงสร้าง XML แต่ละภาษามีจุดแข็งและจุดอ่อนแตกต่างกันไป
จุดประสงค์หลักของภาษาสคีมาคือการระบุโครงสร้างของเอกสาร XML ซึ่งหมายความว่าองค์ประกอบใดสามารถอยู่ภายในองค์ประกอบอื่นได้ แอตทริบิวต์ใดที่ถูกต้องและไม่ถูกต้องสำหรับองค์ประกอบใด ๆ และอื่น ๆ สคีมาเปรียบเสมือนไวยากรณ์ของภาษา สคีมาจะกำหนดคำศัพท์ของภาษาและประโยคที่ถูกต้อง
มีภาษาสคีมา XML ทั้งแบบดั้งเดิมและแบบปัจจุบัน:
| ภาษา | อักษรย่อ. | เวอร์ชัน | อำนาจ |
|---|---|---|---|
| ภาษาข้อจำกัดใน XML | คลิซ์ | 2548 | อิสระ[ 2 ] |
| สิ่งอำนวยความสะดวกในการอธิบายเนื้อหาเอกสารสำหรับ XML ซึ่งเป็นเฟรมเวิร์กRDF [ 3 ] | ดีซีดี | เวอร์ชัน 1.0 (1998) | W3C (หมายเหตุ) |
| ภาษามาร์กอัปคำจำกัดความเอกสาร | ดีดีเอ็มแอล | v0 (1999) | W3C (หมายเหตุ) |
| คำอธิบายโครงสร้างเอกสาร | ดีเอสดี | ปี 2002, 2005 | กลุ่ม BRICS (ยุบไปแล้ว) |
| คำจำกัดความประเภทเอกสาร | ดีทีดี | 1986 (SGML) | ISO [ 4 ] |
| 2008 (XML) | ISO/IEC [ 4 ] | ||
| ภาษาการกำหนดเส้นทางเนมสเปซ | เอ็นอาร์แอล | 2003 | อิสระ[ 5 ] |
| ภาษาการส่งการตรวจสอบความถูกต้องตามเนมสเปซ | เอ็นวีดีแอล | 2006 | ISO/IEC [ 6 ] |
| กลไกการประกอบเนื้อหา | ลูกเบี้ยว | 2007 | โอเอซิส |
| ภาษาปกติสำหรับ XML รุ่นต่อไป | ผ่อนคลาย เอ็นจี, ผ่อนคลายเอ็นจี | 2001, [ 7 ]ไวยากรณ์แบบกระชับ (2002) [ 8 ] | โอเอซิส |
| เวอร์ชัน 1 (2003), เวอร์ชัน 1 ไวยากรณ์แบบกระชับ (2006), เวอร์ชัน 2 (2008) | ISO/IEC [ 6 ] | ||
| โครงสร้างสำหรับ XML เชิงวัตถุ | ซ็อกซ์ | ? | ? |
| แผนผังโครงสร้าง | ไม่มีข้อมูล | 2006, 2010, 2016, 2020 | ISO/IEC [ 4 ] |
| ข้อมูล XML ที่ลดลง | เอ็กซ์ดีอาร์ | ? | ? |
| กฎการเข้ารหัส XMLของ ASN.1 | เอ็กซ์เออร์ | ? | ? |
| โครงสร้าง XML | ดับเบิลยูเอ็กซ์เอส, เอ็กซ์เอสดี | 1.0 (2004), 1.1 (2012) | ดับเบิลยู3ซี |
ภาษาหลักๆ (ดูภาษาที่ได้รับการรับรองในมาตรฐาน ISO 19757 เพิ่มเติม ) มีรายละเอียดดังต่อไปนี้
แม้ว่าจะมีภาษาสำหรับกำหนดรูปแบบโครงสร้างข้อมูลอยู่หลายภาษา แต่ภาษาหลักๆ สามภาษา ได้แก่Document Type Definitions (DTI) , W3C XML SchemaและRELAX NGแต่ละภาษามีข้อดีและข้อเสียแตกต่างกันไป
คำจำกัดความประเภทเอกสาร
การสนับสนุนเครื่องมือ
DTD (Directed Text Directory) อาจเป็นภาษาโครงสร้างข้อมูลที่ได้รับการสนับสนุนอย่างกว้างขวางที่สุดสำหรับ XML เนื่องจาก DTD เป็นหนึ่งในภาษาโครงสร้างข้อมูลสำหรับ XML ที่เก่าแก่ที่สุด ซึ่งถูกกำหนดขึ้นก่อนที่ XML จะรองรับเนมสเปซเสียอีก จึงได้รับการสนับสนุนอย่างแพร่หลาย DTD ภายในมักได้รับการสนับสนุนในโปรแกรมประมวลผล XML ส่วน DTD ภายนอกนั้นได้รับการสนับสนุนน้อยกว่า แต่ก็ไม่มากนัก โปรแกรมแยกวิเคราะห์ XML ขนาดใหญ่ส่วนใหญ่ ซึ่งรองรับเทคโนโลยี XML หลายอย่าง จะให้การสนับสนุน DTD ด้วยเช่นกัน
W3C XML Schema
ข้อดีเหนือกว่า DTD
คุณสมบัติที่มีอยู่ใน XSD แต่ไม่มีใน DTD ได้แก่:
- ชื่อขององค์ประกอบและแอตทริบิวต์นั้นคำนึงถึงเนมสเปซ
- สามารถกำหนดข้อจำกัด ("ประเภทข้อมูลพื้นฐาน") สำหรับเนื้อหาข้อความขององค์ประกอบและแอตทริบิวต์ได้ เช่น เพื่อระบุว่าเป็นตัวเลขหรือมีวันที่ มีประเภทข้อมูลพื้นฐานให้เลือกมากมายเป็นมาตรฐาน และสามารถสร้างประเภทข้อมูลเพิ่มเติมโดยผู้ใช้ได้จากประเภทข้อมูลเหล่านี้ เช่น โดยการระบุช่วงของค่า นิพจน์ปกติ หรือโดยการแจงนับค่าที่อนุญาต
- ฟังก์ชันสำหรับการกำหนดข้อจำกัดด้านความเป็นเอกลักษณ์และความสมบูรณ์ของการอ้างอิงนั้นมีประสิทธิภาพมากกว่า: แตกต่างจากข้อจำกัด ID และ IDREF ใน DTD ตรงที่สามารถกำหนดขอบเขตไปยังส่วนใดก็ได้ของเอกสาร สามารถเป็นประเภทข้อมูลใดก็ได้ สามารถนำไปใช้กับเนื้อหาขององค์ประกอบและแอตทริบิวต์ได้ และสามารถเป็นแบบหลายส่วนได้ (ตัวอย่างเช่น การรวมกันของชื่อและนามสกุลต้องไม่ซ้ำกัน)
- ข้อกำหนดหลายอย่างที่โดยทั่วไปจัดการโดยใช้เอนทิตีพารามิเตอร์ใน DTD นั้นได้รับการสนับสนุนอย่างชัดเจนใน XSD ตัวอย่างเช่น กลุ่มการแทนที่ ซึ่งอนุญาตให้ใช้ชื่อเดียว (เช่น "block" หรือ "inline") เพื่ออ้างถึงกลุ่มขององค์ประกอบทั้งหมด ประเภทที่ซับซ้อน ซึ่งอนุญาตให้ใช้โมเดลเนื้อหาเดียวกันร่วมกัน (หรือปรับเปลี่ยนโดยการจำกัดหรือการขยาย) โดยองค์ประกอบหลายตัว และกลุ่มโมเดลและกลุ่มแอตทริบิวต์ ซึ่งอนุญาตให้กำหนดส่วนทั่วไปของโมเดลส่วนประกอบไว้ในที่เดียวและนำกลับมาใช้ใหม่ได้
- XSD 1.1 เพิ่มความสามารถในการกำหนดข้อความยืนยันตามอำเภอใจ (โดยใช้ การแสดงออก XPath ) เป็นข้อจำกัดสำหรับเนื้อหาขององค์ประกอบ
โดยทั่วไปแล้ว สคีมา XSD จะเขียนในรูปแบบเอกสาร XML ดังนั้นจึงสามารถใช้เครื่องมือแก้ไขและแปลงข้อมูลที่คุ้นเคยได้
นอกเหนือจากการตรวจสอบความถูกต้องแล้ว XSD ยังอนุญาตให้ใส่ข้อมูลประเภท ( Post-Schema-Validation Infoset (PSVI) ) ลงในอินสแตนซ์ XML ซึ่งออกแบบมาเพื่อให้การจัดการอินสแตนซ์ XML ในโปรแกรมแอปพลิเคชันง่ายขึ้น อาจทำได้โดยการแมปประเภทที่กำหนดโดย XSD กับประเภทในภาษาโปรแกรม เช่น Java (" การผูกข้อมูล ") หรือโดยการเสริมระบบประเภทของภาษาประมวลผล XML เช่น XSLT และXQuery (เรียกว่า "การรับรู้โครงสร้างข้อมูล")
ความเหมือนกันกับ RELAX NG
RELAX NG และ W3C XML Schema มีกลไกการกำหนดรายละเอียดที่คล้ายคลึงกัน ทั้งสองแบบอนุญาตให้มีการแบ่งส่วนย่อยในภาษาของตนได้ในระดับหนึ่ง เช่น การแบ่งสคีมาออกเป็นหลายไฟล์ และทั้งสองแบบสามารถกำหนดได้ในภาษา XML
ข้อดีเหนือกว่า RELAX NG
RELAX NG ไม่มีสิ่งใดเทียบเท่ากับPSVIและแตกต่างจาก W3C XML Schema ตรงที่ RELAX NG ถูกออกแบบมาให้แยกการตรวจสอบความถูกต้องและการเสริมข้อมูล (การเพิ่มข้อมูลประเภทและค่าเริ่มต้น) ออกจากกัน
W3C XML Schema มีกลไกที่เป็นทางการสำหรับการแนบสคีมาเข้ากับเอกสาร XML ในขณะที่ RELAX NG จงใจหลีกเลี่ยงกลไกดังกล่าวด้วยเหตุผลด้านความปลอดภัยและการทำงานร่วมกัน
RELAX NG ไม่มีความสามารถในการใช้ข้อมูลแอตทริบิวต์เริ่มต้นกับรายการแอตทริบิวต์ขององค์ประกอบ (เช่น การเปลี่ยนชุดข้อมูล XML) ในขณะที่ W3C XML Schema สามารถทำได้ อีกครั้ง การออกแบบนี้เป็นไปโดยเจตนาและเพื่อแยกการตรวจสอบความถูกต้องและการเสริมข้อมูล[ 9 ]
W3C XML Schema มีระบบ "ประเภทข้อมูลพื้นฐาน" ที่ครบครัน (เช่น xs:number, xs:date เป็นต้น รวมถึงการสร้างประเภทข้อมูลแบบกำหนดเอง) ในขณะที่ RELAX NG มีระบบที่เรียบง่ายมาก เนื่องจากมีจุดประสงค์เพื่อใช้ไลบรารีประเภทข้อมูลที่พัฒนาขึ้นโดยอิสระจาก RELAX NG แทนที่จะพัฒนาไลบรารีของตัวเอง ซึ่งบางคนมองว่าเป็นข้อเสีย ในทางปฏิบัติ สคีมาของ RELAX NG มักใช้ "ประเภทข้อมูลพื้นฐาน" และ "ข้อจำกัด" (เช่น รูปแบบ, ความยาวสูงสุด เป็นต้น) ที่กำหนดไว้ล่วงหน้าของ W3C XML Schema
ใน W3C XML Schema สามารถระบุจำนวนหรือช่วงของการทำซ้ำของรูปแบบได้อย่างเฉพาะเจาะจง ในขณะที่ใน RELAX NG นั้นแทบจะเป็นไปไม่ได้เลยที่จะระบุจำนวนการทำซ้ำ (<หนึ่งหรือมากกว่า> หรือ <ศูนย์หรือมากกว่า>)
ข้อเสีย
W3C XML Schema นั้นซับซ้อนและเรียนรู้ได้ยาก ซึ่งส่วนหนึ่งเป็นเพราะมันพยายามทำมากกว่าแค่การตรวจสอบความถูกต้อง (ดูPSVI )
แม้ว่าการเขียนด้วยภาษา XML จะมีข้อดี แต่ก็มีข้อเสียในบางแง่มุมเช่นกัน โดยเฉพาะอย่างยิ่งภาษา XML Schema ของ W3C นั้นค่อนข้างเยิ่นเย้อ ในขณะที่ DTD นั้นกระชับและแก้ไขได้ง่ายกว่ามาก
ในทำนองเดียวกัน กลไกอย่างเป็นทางการของ WXS ในการเชื่อมโยงเอกสารกับสคีมาอาจก่อให้เกิดปัญหาด้านความปลอดภัยได้ สำหรับตัวตรวจสอบความถูกต้องของ WXS ที่จะติดตามURIไปยังตำแหน่งออนไลน์ใดๆ ก็ตาม อาจมีความเป็นไปได้ที่การอ่านสิ่งที่เป็นอันตรายจากอีกฝั่งของสตรีมจะเกิดขึ้น[ 10 ]
W3C XML Schema ไม่ได้นำความสามารถส่วนใหญ่ของ DTD ในการส่งองค์ประกอบข้อมูลไปยังเอกสารมาใช้
แม้ว่าความสามารถของ W3C XML Schema ในการเพิ่มแอตทริบิวต์เริ่มต้นให้กับองค์ประกอบต่างๆ จะเป็นข้อดี แต่ก็มีข้อเสียในบางแง่มุมเช่นกัน นั่นหมายความว่าไฟล์ XML อาจใช้งานไม่ได้หากไม่มี Schema แม้ว่าเอกสารนั้นจะผ่านการตรวจสอบความถูกต้องตาม Schema ก็ตาม ในทางปฏิบัติ ผู้ใช้เอกสาร XML ดังกล่าวทุกคนจะต้องนำข้อกำหนด W3C XML Schema ไปใช้ด้วย ซึ่งจะทำให้ไม่สามารถใช้ตัวแยกวิเคราะห์ XML ที่เรียบง่ายหรือรุ่นเก่าได้ นอกจากนี้ยังอาจทำให้การประมวลผลเอกสารช้าลง เนื่องจากตัวประมวลผลอาจต้องดาวน์โหลดและประมวลผลไฟล์ XML ไฟล์ที่สอง (Schema) อย่างไรก็ตาม โดยปกติแล้ว Schema จะถูกแคชไว้ ดังนั้นต้นทุนจึงเกิดขึ้นเฉพาะในการใช้งานครั้งแรกเท่านั้น
การสนับสนุนเครื่องมือ
โปรแกรมวิเคราะห์ XML ขนาดใหญ่หลายโปรแกรมรองรับ WXS Xercesและไลบรารีคลาสพื้นฐานของ.NET Frameworkต่างก็รองรับการตรวจสอบความถูกต้องของ WXS
ผ่อนคลาย NG
RELAX NG มีข้อดีส่วนใหญ่ที่ W3C XML Schema มีเหนือกว่า DTDs
ข้อดีเหนือกว่า W3C XML Schema
แม้ว่าภาษาของ RELAX NG จะสามารถเขียนได้ในรูปแบบ XML แต่ก็มีรูปแบบที่เทียบเท่ากันซึ่งคล้ายกับ DTD มากกว่า แต่มีพลังในการระบุรายละเอียดที่มากกว่า รูปแบบนี้เรียกว่าไวยากรณ์แบบกระชับ (compact syntax) เครื่องมือต่างๆ สามารถแปลงระหว่างรูปแบบเหล่านี้ได้อย่างง่ายดายโดยไม่สูญเสียคุณสมบัติหรือแม้แต่การใส่คำอธิบายประกอบ แม้แต่ส่วนประกอบใดๆ ที่ระบุไว้ระหว่างส่วนประกอบ XML ของ RELAX NG ก็สามารถแปลงเป็นรูปแบบกระชับได้
RELAX NG ให้การสนับสนุนเนื้อหาที่ไม่เรียงลำดับอย่างแข็งแกร่งมาก กล่าวคือ อนุญาตให้โครงสร้างข้อมูลระบุว่าลำดับของรูปแบบอาจปรากฏในลำดับใดก็ได้
นอกจากนี้ RELAX NG ยังรองรับโมเดลเนื้อหาที่ไม่แน่นอน หมายความว่า RELAX NG อนุญาตให้ระบุลำดับได้ดังต่อไปนี้:
<zeroOrMore> <ref name= "odd" /> <ref name= "even" /> </zeroOrMore> <optional> <ref name= "odd" /> </optional>เมื่อตัวตรวจสอบพบสิ่งที่ตรงกับรูปแบบ "คี่" จะไม่ทราบว่านี่คือการอ้างอิง "คี่" สุดท้ายที่เป็นตัวเลือก หรือเป็นเพียงการอ้างอิงหนึ่งในลำดับ zeroOrMore โดยไม่ต้องตรวจสอบข้อมูลล่วงหน้า RELAX NG อนุญาตให้ระบุลักษณะเช่นนี้ได้ ในขณะที่ W3C XML Schema กำหนดให้ลำดับทั้งหมดต้องมีความแน่นอนอย่างสมบูรณ์ ดังนั้นกลไกต่างๆ เช่นที่กล่าวมาข้างต้น จะต้องระบุด้วยวิธีอื่นหรือละเว้นไปเลย
RELAX NG อนุญาตให้ใช้แอตทริบิวต์เป็นองค์ประกอบในโมเดลเนื้อหา โดยเฉพาะอย่างยิ่ง หมายความว่าสามารถระบุสิ่งต่อไปนี้ได้:
<element name= "some_element" > <choice> <attribute name= "has_name" > <value> false </value> </attribute> <group> <attribute name= "has_name" > <value> true </value> </attribute> <element name= "name" ><text /></element> </group> </choice> </element>บล็อกนี้ระบุว่าองค์ประกอบ "some_element" ต้องมีแอตทริบิวต์ชื่อ "has_name" แอตทริบิวต์นี้สามารถรับค่าได้เพียง true หรือ false เท่านั้น และถ้าเป็น true องค์ประกอบย่อยแรกขององค์ประกอบนั้นจะต้องเป็น "name" ซึ่งเก็บข้อความ หาก "name" ไม่จำเป็นต้องเป็นองค์ประกอบแรก ก็สามารถรวมตัวเลือกนั้นไว้ในองค์ประกอบ "interleave" ร่วมกับองค์ประกอบอื่นๆ ได้ ลำดับของการกำหนดแอตทริบิวต์ใน RELAX NG ไม่มีผล ดังนั้นบล็อกนี้ไม่จำเป็นต้องเป็นบล็อกแรกในการกำหนดองค์ประกอบ
มาตรฐาน XML Schema ของ W3C ไม่สามารถระบุความสัมพันธ์แบบพึ่งพาอาศัยกันระหว่างเนื้อหาของแอตทริบิวต์และองค์ประกอบย่อยได้
ข้อกำหนดของ RELAX NG ระบุประเภทข้อมูลพื้นฐานเพียงสองประเภท (สตริงและโทเค็น) แต่ก็อนุญาตให้กำหนดประเภทข้อมูลอื่นๆ ได้อีกมากมาย ในทางทฤษฎี การที่ไม่มีรายการเฉพาะเจาะจงทำให้โปรเซสเซอร์สามารถรองรับประเภทข้อมูลที่เฉพาะเจาะจงกับปัญหาในแต่ละด้านได้
โดยส่วนใหญ่แล้ว สคีมา RELAX NG สามารถแปลงเป็นสคีมา XML ของ W3C และแม้แต่ DTD ได้โดยใช้อัลกอริทึม (ยกเว้นกรณีที่ใช้คุณสมบัติของ RELAX NG ที่ภาษาเหล่านั้นไม่รองรับ ดังที่กล่าวมาข้างต้น) แต่ในทางกลับกันนั้นไม่เป็นเช่นนั้น ดังนั้น RELAX NG จึงสามารถใช้เป็นเวอร์ชันมาตรฐานของสคีมาได้ และผู้ใช้สามารถแปลงเป็นรูปแบบอื่นเพื่อใช้กับเครื่องมือที่ไม่รองรับ RELAX NG ได้
ข้อเสีย
ข้อเสียส่วนใหญ่ของ RELAX NG ได้รับการกล่าวถึงแล้วในหัวข้อเกี่ยวกับข้อดีของ W3C XML Schema เมื่อเทียบกับ RELAX NG
แม้ว่าความสามารถของ RELAX NG ในการรองรับประเภทข้อมูลที่ผู้ใช้กำหนดเองจะเป็นประโยชน์ แต่ก็มีข้อเสียคือมีเพียงสองประเภทข้อมูลที่ผู้ใช้สามารถใช้งานได้เท่านั้น ซึ่งในทางทฤษฎีหมายความว่า การใช้สคีมา RELAX NG กับตัวตรวจสอบความถูกต้องหลายตัว จำเป็นต้องระบุประเภทข้อมูลที่ผู้ใช้กำหนดเองให้กับตัวตรวจสอบความถูกต้องนั้น หรือใช้เพียงสองประเภทพื้นฐานเท่านั้น อย่างไรก็ตาม ในทางปฏิบัติ ตัวประมวลผล RELAX NG ส่วนใหญ่รองรับชุดประเภทข้อมูลของสคีมา XML ของ W3C
แผนผังโครงสร้าง
Schematron เป็นภาษา Schema ที่ค่อนข้างแปลกใหม่ ไม่เหมือนกับภาษาหลักทั้งสามภาษา มันกำหนดไวยากรณ์ของไฟล์ XML ในรูปแบบของรายการ กฎที่อิงตาม XPathหากเอกสารผ่านเกณฑ์เหล่านี้ เอกสารนั้นก็จะถูกต้อง
ข้อดี
เนื่องจาก Schematron มีลักษณะการทำงานแบบใช้กฎเกณฑ์ ทำให้มีความเฉพาะเจาะจงสูงมาก มันสามารถกำหนดให้เนื้อหาขององค์ประกอบหนึ่งถูกควบคุมโดยองค์ประกอบอื่นที่อยู่ในกลุ่มเดียวกันได้ นอกจากนี้ยังสามารถร้องขอหรือกำหนดให้องค์ประกอบราก ไม่ว่าจะเป็นองค์ประกอบใดก็ตาม ต้องมีแอตทริบิวต์เฉพาะเจาะจง และยังสามารถระบุความสัมพันธ์ที่จำเป็นระหว่างไฟล์ XML หลายไฟล์ได้อีกด้วย
ข้อเสีย
แม้ว่า Schematron จะเก่งเรื่องโครงสร้างเชิงสัมพันธ์ แต่ความสามารถในการระบุโครงสร้างพื้นฐานของเอกสาร กล่าวคือ การกำหนดว่าองค์ประกอบใดควรอยู่ตรงไหน ทำให้ได้สคีมาที่ยาวและซับซ้อนมาก
วิธีแก้ปัญหาทั่วไปคือการรวม Schematron เข้ากับ RELAX NG หรือ W3C XML Schema มีตัวประมวลผล Schema หลายตัวสำหรับทั้งสองภาษาที่รองรับรูปแบบการรวมนี้ วิธีนี้ช่วยให้กฎของ Schematron สามารถระบุข้อจำกัดเพิ่มเติมให้กับโครงสร้างที่กำหนดโดย W3C XML Schema หรือ RELAX NG ได้
การสนับสนุนเครื่องมือ
การใช้งานอ้างอิงของ Schematron นั้นแท้จริงแล้วคือ การแปลง XSLTที่แปลงเอกสาร Schematron ให้เป็น XSLT ที่ตรวจสอบความถูกต้องของไฟล์ XML ดังนั้น ชุดเครื่องมือที่เป็นไปได้ของ Schematron คือโปรเซสเซอร์ XSLT ใดๆ ก็ได้ แม้ว่าlibxml2จะมีการใช้งานที่ไม่ต้องใช้ XSLT ก็ตาม โปรแกรม Multiple Schema Validator สำหรับ JavaของSun Microsystemsมีส่วนเสริมที่ช่วยให้สามารถตรวจสอบความถูกต้องของสคีมา RELAX NG ที่มีกฎ Schematron ฝังอยู่ได้
ภาษากำหนดเส้นทางเนมสเปซ (NRL)
นี่ไม่ใช่ภาษาสคีมาอย่างแท้จริง จุดประสงค์เดียวของมันคือการกำหนดทิศทางส่วนต่างๆ ของเอกสารไปยังสคีมาแต่ละรายการโดยอิงจากเนมสเปซขององค์ประกอบที่พบ NRL เป็นเพียงรายการของเนมสเปซ XMLและเส้นทางไปยังสคีมาที่แต่ละรายการสอดคล้องกัน ซึ่งช่วยให้แต่ละสคีมาสนใจเฉพาะคำจำกัดความภาษาของตนเองเท่านั้น และไฟล์ NRL จะนำทางตัวตรวจสอบสคีมาไปยังไฟล์สคีมาที่ถูกต้องโดยอิงจากเนมสเปซขององค์ประกอบนั้น
รูปแบบ XML นี้ไม่ขึ้นอยู่กับภาษาสคีมา และสามารถใช้งานได้กับภาษาสคีมาเกือบทุกภาษา
ศัพท์เฉพาะ
การใช้อักษรตัวใหญ่ใน คำว่า " Schema ": มีความสับสนอยู่บ้างเกี่ยวกับการใช้อักษรตัวใหญ่ในคำว่า "Schema" และการใช้อักษรตัวเล็ก อักษรตัวเล็กเป็นคำทั่วไปและอาจหมายถึง Schema ประเภทใดก็ได้ รวมถึง DTD, XML Schema (หรือ XSD), RELAX NG หรืออื่นๆ และควรเขียนด้วยอักษรตัวเล็กเสมอ ยกเว้นเมื่ออยู่ต้นประโยค รูปแบบ "Schema" (อักษรตัวใหญ่) ที่ใช้กันทั่วไปในชุมชน XML นั้นหมายถึงW3C XML Schemaเสมอ
ตัวเลือกการสร้างสคีมา
จุดเน้นของ การกำหนด สคีมาคือโครงสร้างและความหมายบางประการของเอกสาร อย่างไรก็ตาม การออกแบบสคีมา เช่นเดียวกับการออกแบบฐานข้อมูล โปรแกรมคอมพิวเตอร์ และโครงสร้างที่เป็นทางการอื่นๆ ยังเกี่ยวข้องกับการพิจารณารูปแบบ ข้อกำหนด และความสามารถในการอ่านอีกด้วย การอภิปรายอย่างกว้างขวางเกี่ยวกับประเด็นการออกแบบสคีมาสามารถพบได้ใน (ตัวอย่างเช่น) Maler (1995) [ 11 ]และ DeRose (1997) [ 12 ]
- ความสม่ำเสมอ
- ข้อควรพิจารณาที่เห็นได้ชัดอย่างหนึ่งคือ ชื่อแท็กและแอตทริบิวต์ควรใช้รูปแบบที่สอดคล้องกัน ตัวอย่างเช่น การสร้างสคีมาที่ชื่อองค์ประกอบบางส่วนใช้รูปแบบcamelCaseแต่บางส่วนใช้เครื่องหมายขีดล่างเพื่อแยกส่วนต่างๆ ของชื่อ หรือใช้รูปแบบอื่นๆ นั้น ถือว่าผิดปกติ
- ชื่อที่ชัดเจนและจำง่าย
- เช่นเดียวกับภาษาทางการอื่นๆ การเลือกใช้ชื่อที่ดีจะช่วยให้เข้าใจได้ง่ายขึ้น แม้ว่าชื่อเหล่านั้นจะไม่มีความหมายเชิงรูปแบบก็ตาม การตั้งชื่อแท็กที่เหมาะสมว่า "บท" แทนที่จะเป็น "แท็ก37" จะช่วยให้ผู้อ่านเข้าใจได้ง่ายขึ้น ในขณะเดียวกัน ก็ทำให้เกิดประเด็นเรื่องการเลือกใช้ภาษาธรรมชาติขึ้นมา โครงสร้างข้อมูลที่ใช้สำหรับ เอกสาร ภาษาไอริชเกลิกน่าจะใช้ภาษาเดียวกันสำหรับชื่อองค์ประกอบและคุณลักษณะ เนื่องจากจะเป็นภาษาที่บรรณาธิการและผู้อ่านใช้ร่วมกัน
- การเลือกใช้แท็กหรือแอตทริบิวต์
- ข้อมูลบางอย่างสามารถ "จัดเก็บ" ได้อย่างง่ายดายทั้งในองค์ประกอบหรือแอตทริบิวต์ เนื่องจากแอตทริบิวต์ไม่สามารถบรรจุองค์ประกอบใน XML ได้ คำถามนี้จึงเกิดขึ้นเฉพาะกับส่วนประกอบที่ไม่มีโครงสร้างย่อยเพิ่มเติมที่ XML จำเป็นต้องรับรู้ (แอตทริบิวต์รองรับโทเค็นหลายตัว เช่น ค่า IDREF หลายค่า ซึ่งถือเป็นข้อยกเว้นเล็กน้อย) โดยทั่วไปแอตทริบิวต์จะแสดงข้อมูลที่เกี่ยวข้องกับองค์ประกอบทั้งหมดที่แอตทริบิวต์นั้นปรากฏอยู่ ในขณะที่องค์ประกอบย่อยจะนำเสนอขอบเขตใหม่ของตัวเอง
- เนื้อหาข้อความ
- สคีมา XML บางประเภท โดยเฉพาะอย่างยิ่งสคีมาที่ใช้แทน เอกสารประเภทต่างๆจะรับประกันว่า "เนื้อหาข้อความ" ทั้งหมด (โดยประมาณคือส่วนใดๆ ที่คนจะพูดออกมาหากอ่านเอกสารนั้นออกเสียง) จะปรากฏเป็นข้อความ ไม่ใช่ในรูปแบบของแอตทริบิวต์ อย่างไรก็ตาม มีกรณีพิเศษหลายกรณีที่กฎนี้ใช้ไม่ได้: ประการแรก มีเอกสาร XML ที่ไม่เกี่ยวข้องกับ "ภาษาธรรมชาติ" เลย หรือเกี่ยวข้องเพียงเล็กน้อย เช่น เอกสารสำหรับการวัดระยะทาง การสร้างกราฟิกเวกเตอร์หรือสูตรทางคณิตศาสตร์ เป็นต้น ประการที่สอง ข้อมูลต่างๆ เช่น คำแนะนำในการแสดงละคร หมายเลขบทในงานเขียนคลาสสิกและพระคัมภีร์ และการแก้ไขหรือการปรับมาตรฐานการสะกดคำในงานเขียนที่ถอดความ ล้วนก่อให้เกิดปัญหาในการตีความที่ผู้ออกแบบสคีมาสำหรับเอกสารประเภทดังกล่าวต้องพิจารณา
- การนำ Schema กลับมาใช้ใหม่
- สามารถสร้าง XML Schemaใหม่ได้ตั้งแต่เริ่มต้น หรืออาจนำส่วนต่างๆ จากXML Schema อื่นๆ มาใช้ซ้ำได้ ภาษา Schema ทุกภาษามีเครื่องมือบางอย่าง (เช่น
includeการควบคุมการแบ่งส่วนย่อยของเนมสเปซ) และแนะนำให้ใช้ซ้ำเมื่อทำได้จริง ส่วนต่างๆ ของ Schema ที่ครอบคลุมและซับซ้อนของText Encoding Initiativeก็ถูกนำมาใช้ซ้ำใน Schema อื่นๆ อีกมากมายเช่นกัน
- ความหมายเทียบกับไวยากรณ์
- ยกเว้นภาษาที่เกี่ยวข้องกับ RDF แล้ว ไม่มีภาษาสร้างสคีมา ใด ที่แสดงความหมายเชิงรูปธรรมอย่างเป็นทางการ มีเพียงโครงสร้างและประเภทข้อมูลเท่านั้น แม้ว่าการรวมเอาข้อสมมติฐานของ RDF เข้ามาจะเป็นอุดมคติ แต่ก็ทำได้ไม่ดีนักและไม่แนะนำให้ใช้ในกรอบการพัฒนาสคีมา
ดูเพิ่มเติม
- โครงสร้างข้อมูล
- รายการสคีมา XML
- แผนผัง (การแยกความหมาย) (สำหรับความหมายอื่นๆ ของคำนี้)
- การจัดโครงสร้างข้อมูล
- ชุดข้อมูล XML
- บันทึก XML
- JSON Schema
ภาษา:
- คำอธิบายโครงสร้างเอกสาร
- คำจำกัดความประเภทเอกสาร
- ภาษาการกำหนดเส้นทางเนมสเปซ
- ภาษาการส่งการตรวจสอบความถูกต้องตามเนมสเปซ
- โอเอซิสแคม
- ผ่อนคลาย NG
- แผนผังโครงสร้าง
- W3C XML Schema
ลิงก์ภายนอก
- การเปรียบเทียบภาษา XML SchemaโดยEric van der Vlist (2001)
- การประยุกต์ใช้ XML Schema ในการรักษาความปลอดภัยของเว็บเซอร์วิสโดย Sridhar Guthula, รายงานประสบการณ์การใช้ Schema ของ W3C, พฤษภาคม 2548
- บทความจาก DEVX เดือนมีนาคม 2009 เรื่อง "ยกระดับการตรวจสอบความถูกต้องของ XML ไปอีกขั้น: ขอแนะนำ CAM" โดย Michael Sorens ถูกเก็บถาวรเมื่อวันที่ 16 มีนาคม 2012 ที่Wayback Machine
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ สคีมา XML
XML Schemaคือคำอธิบายของ เอกสาร XML ประเภท หนึ่ง ซึ่งโดยทั่วไปจะแสดงในรูปของข้อจำกัดเกี่ยวกับโครงสร้างและเนื้อหาของเอกสารประเภทนั้น...
การตรวจสอบความถูกต้อง
กระบวนการตรวจสอบว่าเอกสาร XML สอดคล้องกับสคีมาหรือไม่ เรียกว่า การตรวจสอบความถูกต้อง (validation) ซึ่งแยกต่างหากจากแนวคิดหลักของ XML เรื่องความถูกต้องทางไวยากรณ์ (syntactic well-formedness ) เอกสาร XML ทุกฉบับต้องมีความถูกต้องทางไวยากรณ์...
ภาษา
มีภาษาต่างๆ มากมายให้เลือกใช้ในการกำหนดโครงสร้าง XML แต่ละภาษามีจุดแข็งและจุดอ่อนแตกต่างกันไป
คำจำกัดความประเภทเอกสาร
DTD (Directed Text Directory) อาจเป็นภาษาโครงสร้างข้อมูลที่ได้รับการสนับสนุนอย่างกว้างขวางที่สุดสำหรับ XML เนื่องจาก DTD เป็นหนึ่งในภาษาโครงสร้างข้อมูลสำหรับ XML ที่เก่าแก่ที่สุด ซึ่งถูกกำหนดขึ้นก่อนที่ XML จะรองรับเนมสเปซเสียอีก...