เครื่องตรวจสอบความถูกต้องของ XSD (XSD Validator)

แม้เอกสาร XML จะมีรูปแบบที่ถูกต้องแล้ว ก็ยังอาจมีข้อผิดพลาดได้ เช่น ขาดองค์ประกอบที่จำเป็น ใช้ประเภทข้อมูลที่ไม่เหมาะสมสำหรับแอตทริบิวต์ หรือจัดเรียงองค์ประกอบในลำดับที่ผิด XSD (XML Schema Definition) ระบุลักษณะเฉพาะของเอกสารอย่างชัดเจน เครื่องตรวจสอบนี้จะนำข้อมูล XML มาเปรียบเทียบกับ XSD ของมัน จากนั้นดำเนินการตรวจสอบด้วยเครื่องตรวจสอบ XML Schema ของ W3C และแสดงรายการความผิดพลาดทุกประการพร้อมระบุตำแหน่งของแต่ละบรรทัด องค์ประกอบ และเงื่อนไขเฉพาะที่ถูกละเมิด

วิธีการตรวจสอบความถูกต้องของไฟล์ XML เทียบกับข้อมูลตามมาตรฐาน XSD

  1. 1

    วางไฟล์ทั้งสองไฟล์เข้าด้วยกัน

    XML อยู่ด้านหนึ่ง และสเกมา XSD อยู่อีกด้านหนึ่ง โดยสามารถนำสเกมาหลายตัวมาวางซ้อนกันได้

  2. 2

    เรียกใช้การตรวจสอบความถูกต้อง

    ตัววิเคราะห์โค้ดจะเปรียบเทียบองค์ประกอบ แอตทริบิวต์ และประเภทข้อมูลกับคำประกาศสเกมา

  3. 3

    ตรวจสอบข้อผิดพลาด

    การละเมิดแต่ละครั้งจะแสดงเส้นทางขององค์ประกอบ ข้อจำกัดที่คาดหวัง และค่าจริง

  4. 4

    แก้ไขและตรวจสอบความถูกต้องใหม่

    แก้ไขโดยตรง และรันใหม่โดยไม่ต้องโหลดข้อมูลใหม่

สิ่งที่ XSD ตรวจสอบ

  • ชื่อองค์ประกอบและจำนวนครั้ง: จำเป็น, สามารถเลือกได้, จำนวนครั้งขั้นต่ำ/สูงสุด
  • ลำดับขององค์ประกอบ: ลำดับ, การเลือก, ทั้งหมด
  • ลักษณะของแอตทริบิวต์และประเภท: จำเป็น เทียบกับ ไม่จำเป็น; มีค่าเริ่มต้น; มีค่าคงที่
  • ประเภทข้อมูล: xs:string, xs:integer, xs:decimal, xs:dateTime, xs:boolean, xs:anyURI, แบบกำหนดเอง
  • ข้อจำกัด: ความยาวขั้นต่ำ/สูงสุด, ชุดค่าที่กำหนดได้ (enumerations), รูปแบบคำสั่ง regex, ค่าขั้นต่ำ/สูงสุด
  • ความสมบูรณ์เชิงอ้างอิง: xs:key, xs:keyref, xs:unique สำหรับข้อจำกัดระหว่างองค์ประกอบต่างๆ

ข้อผิดพลาดทั่วไป

ข้อผิดพลาด ข้อจำกัดของ XSD
ไม่มีองค์ประกอบที่จำเป็น <email> minOccurs="1"
มีองค์ประกอบ <phone> มากเกินไป เกิน maxOccurs="2"
ค่า “abc” ไม่ใช่จำนวนเต็มที่ถูกต้อง type="xs:integer"
ค่า “[email protected]” ไม่ตรงกับรูปแบบ xs:pattern ใน xs:string
องค์ประกอบไม่อยู่ในลำดับที่ถูกต้อง xs:sequence
องค์ประกอบที่ไม่ทราบชื่อ <foo> ไม่ได้ระบุไว้ในสเกมา
กุญแจซ้ำ การละเมิด xs:unique

การเลือกระหว่าง XSD กับทางเลือกอื่นๆ

  • XSD: มาตรฐานของ W3C ที่มีรายละเอียดครบถ้วน มีความสามารถสูง และได้รับการสนับสนุนอย่างแพร่หลาย เป็นตัวเลือกอันดับหนึ่งสำหรับ XML ในระดับองค์กร
  • RELAX NG: ไวยากรณ์ที่เรียบง่ายแต่สามารถสื่อความหมายได้อย่างเท่าเทียมกัน นิยมใช้ในรูปแบบเอกสารต่างๆ เช่น DocBook และ TEI
  • Schematron: ใช้หลักการตามกฎในการประมวลผลเอกสาร โดยดำเนินการตรวจสอบด้วยคำสั่ง XPath เหมาะอย่างยิ่งสำหรับกฎทางธุรกิจที่เกินกว่าเพียงการกำหนดโครงสร้างเท่านั้น
  • DTD: เป็นรูปแบบที่เก่าแก่กว่า และมีความสามารถในการแสดงข้อมูลน้อยกว่ามาก ยังคงถูกใช้เพื่อความเข้ากันได้ในอดีตของ HTML

โครงการหลายโครงการใช้ XSD เพื่อกำหนดโครงสร้าง และใช้ Schematron เพื่อกำหนดกฎที่ซับซ้อนระหว่างสาขาต่าง ๆ

ข้อผิดพลาดที่พบบ่อย

  • ชื่อพื้นที่ (namespace) ต้องตรงกัน หากไฟล์ XSD ระบุชื่อพื้นที่ว่า targetNamespace="http://example.com" แต่ไฟล์ XML ไม่ได้ใช้ชื่อพื้นที่ดังกล่าว การตรวจสอบความถูกต้องจะล้มเหลวโดยแสดงข้อความว่า “ไม่พบการกำหนดชื่อพื้นที่”
  • xs:anyType ไม่ใช่วิธีหลบเลี่ยงปัญหาอย่างมหัศจรรย์ มันสามารถใช้กับสิ่งใดก็ได้ แต่ไม่ให้ผลการตรวจสอบหรือการยืนยันใดๆ เลย
  • ค่าเริ่มต้นจะใช้ได้เฉพาะเมื่อแอตทริบิวต์ไม่มีอยู่เท่านั้น โดยค่าว่างโดยตรง (attr="") จะไม่ได้รับค่าเริ่มต้น
  • การจัดการช่องว่างเปล่า (Whitespace) แตกต่างกันไปตามประเภท: xs:string จะคงไว้ xs:token จะบีบอัดให้แคบลง และ xs:normalizedString จะแทนที่แท็บหรือบรรทัดใหม่ด้วยช่องว่าง

กระบวนการทำงานในการดีบัก

  1. ตรวจสอบความถูกต้องก่อนโดยไม่ใช้สเกมา (การตรวจสอบรูปแบบที่ถูกต้อง) แก้ไขข้อผิดพลาดในการวิเคราะห์ข้อมูลทั้งหมด
  2. จากนั้นตรวจสอบความถูกต้องตามสกีมา
  3. ให้ความสำคัญกับข้อผิดพลาดข้อแรก โปรแกรมตรวจสอบ XSD บางครั้งอาจแสดงข้อผิดพลาดแบบต่อเนื่อง (cascading errors) โดยข้อผิดพลาดข้อแรกมักเป็นข้อผิดพลาดที่สามารถดำเนินการแก้ไขได้มากที่สุด
  4. ใช้ XPath เพื่อระบุองค์ประกอบที่มีปัญหาในเอกสารขนาดใหญ่

คำถามที่พบบ่อย

ไม่ ให้ติดตั้งส่วนประกอบเหล่านี้แยกกัน หรืออ้างอิงสเกมาผ่านรหัส xsi:schemaLocation ในไฟล์ XML โดยเครื่องมือส่วนใหญ่รองรับทั้งสองวิธี

ใช่ เมื่อมีองค์ประกอบจาก namespace ที่แตกต่างกันปรากฏขึ้น แต่ละองค์ประกอบจำเป็นต้องมีสเกมาเฉพาะของตนเอง ให้นำทั้งหมดไปวางไว้ในตำแหน่งเดียวกัน เครื่องตรวจสอบจะโหลดสเกมาเหล่านั้นทั้งหมดโดยอัตโนมัติ

XSD 1.0 เอนจิน libxml ที่ใช้อยู่เบื้องหลังไม่รองรับ XSD 1.1 ดังนั้นคุณสมบัติเฉพาะของเวอร์ชัน 1.1 เช่น การยืนยัน (assertions) ประเภทข้อมูลตามเงื่อนไข และเนื้อหาแบบเปิด จึงไม่ถูกบังคับใช้

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

เครื่องมือที่เกี่ยวข้อง

อ้างอิงตัวอักษร HTML

รายการที่สามารถค้นหาได้ขององค์ประกอบ HTML พร้อมรหัสชื่อและรหัสตัวเลข รวมถึงฟังก์ชันสำเนาด้วยคลิกเดียวสำหรับตัวอักษรพิเศษและสัญลักษณ์ต่างๆ

ตารางอ้างอิงแป้นพิมพ์ลัด

ค้นหาแป้นพิมพ์ลัดเริ่มต้นตามเอกสารของ VS Code, Chrome และ Bash ที่ใช้ GNU Readline บน macOS, Windows และ Linux

เครื่องสุ่มที่อยู่

สร้างระเบียนคล้ายที่อยู่ 1–20 รายการสำหรับแบบจำลองและการทดสอบ ด้วยรูปแบบประเทศแบบย่อ

ตารางอ้างอิง ASCII

ตาราง ASCII ครบตั้งแต่ 0 ถึง 127 พร้อมค่าเลขฐานสิบ ฐานสิบหก ฐานแปด ฐานสอง และรูปแบบการอ้างอิงอักขระแบบตัวเลขของ HTML รวม NUL, LF และ DEL

ตัวสร้างลูกศร CSS

สร้างลูกศร CSS ในเบราว์เซอร์ด้วยทิศทาง สี ขนาด และความหนาของเส้นขอบ แล้วคัดลอกกฎ.

ตัวตรวจสอบความถูกต้องของ JSON

ตรวจสอบไวยากรณ์ JSON และตรวจจับเครื่องหมายจุลภาคต่อท้าย เครื่องหมายอัญประกาศที่ผิด คีย์ซ้ำ และโครงสร้างที่ผิดรูปแบบ พร้อมระบุตำแหน่งข้อผิดพลาดอย่างแม่นยำ

เครื่องมือนี้มีให้บริการในภาษาอื่น