ตัวตรวจสอบความถูกต้อง XML / XSD
ฝั่งเซิร์ฟเวอร์ตัวอย่าง
ผลการตรวจสอบความถูกต้อง
สคีมา XSD
เอกสาร XML
รายละเอียดทางเทคนิค
ตัวตรวจสอบ XML / XSD ทำงานอย่างไร
เครื่องมือนี้ทำอะไร
ตัวตรวจสอบ XML XSD นี้ตรวจเอกสาร XML เทียบกับคำจำกัดความ XML Schema โดยใช้การประมวลผลฝั่งเซิร์ฟเวอร์ เครื่องมือนี้ตรวจสอบโครงสร้าง ชนิดข้อมูล ลำดับขององค์ประกอบ และข้อกำหนดของแอตทริบิวต์ที่กำหนดไว้ในสคีมาของคุณ เมื่อการตรวจสอบล้มเหลว จะรายงานข้อผิดพลาดเฉพาะพร้อมหมายเลขบรรทัดและคอลัมน์เมื่อมีข้อมูล ตัวตรวจสอบรองรับเนมสเปซ ชนิดแบบซับซ้อน ข้อจำกัดแบบ sequence และ facet ของสคีมา เช่น การจับคู่แพตเทิร์นและข้อจำกัดของค่า
ตัวอย่าง: การตรวจสอบแคตตาล็อกหนังสือ
พิจารณาสคีมา XSD นี้ที่กำหนดให้หนังสือต้องมี ID แบบจำนวนเต็ม และราคาแบบทศนิยม:
<xs:element name="book">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
<xs:attribute name="id" type="xs:integer" use="required"/>
</xs:complexType>
</xs:element>XML ที่ไม่ถูกต้อง เช่น <book id="abc"><price>not-a-number</price></book> จะไม่ผ่านการตรวจสอบ โดยมีข้อผิดพลาดข้อจำกัดชนิดข้อมูลทั้งสำหรับแอตทริบิวต์ ID และองค์ประกอบราคา
กรณีการใช้งานที่พบบ่อย
นักพัฒนาใช้การตรวจสอบ XML Schema เมื่อผสานรวมกับ SOAP API ตรวจสอบไฟล์คอนฟิก หรือประมวลผลรูปแบบการแลกเปลี่ยนข้อมูล สถานการณ์ที่พบบ่อย ได้แก่ การตรวจสอบการตอบกลับของ API เทียบกับสคีมาที่เผยแพร่ การเช็กไฟล์คอนฟิกก่อนดีพลอย และการทำให้มั่นใจถึงคุณภาพข้อมูลในไปป์ไลน์ ETL ตัวตรวจสอบมีประโยชน์อย่างยิ่งในการจับความไม่ตรงกันของชนิดข้อมูล การขาดองค์ประกอบที่จำเป็น และลำดับองค์ประกอบที่ไม่ถูกต้อง ก่อนที่ข้อมูลจะไปถึงระบบโปรดักชัน
เอนจินการตรวจสอบและข้อจำกัด
เครื่องมือนี้ใช้ libxml2 ผ่าน libxmljs binding ของ Node.js โดยรองรับมาตรฐาน XML Schema 1.0 ตัวตรวจสอบประมวลผลสคีมาทั้งหมดฝั่งเซิร์ฟเวอร์เพื่อความปลอดภัย และจะไม่ดึงทรัพยากรภายนอกหรือแก้ไขการนำเข้า (import) ที่อิงเครือข่าย การประมวลผล external entity (XXE) ถูกปิดใช้งานเพื่อความปลอดภัย การ include และ import ของสคีมาจะทำงานได้ก็ต่อเมื่อสคีมาที่อ้างอิงทั้งหมดถูกระบุไว้ในเนื้อหา XSD หลัก
- การเข้าถึงเครือข่าย:ถูกบล็อกเพื่อความปลอดภัย
- การนำเข้าสคีมา:ต้องอยู่ในเนื้อหาเดียวกัน ไม่มีการแก้ไขภายนอก
- External entities:ปิดใช้งาน (ป้องกัน XXE)
- ขีดจำกัดการประมวลผล:มีการกำหนดขีดจำกัดขนาดที่เหมาะสม
การประมวลผลฝั่งเซิร์ฟเวอร์เทียบกับฝั่งไคลเอนต์
การตรวจสอบความถูกต้องของโครงสร้าง XML (well-formedness) ฝั่งไคลเอนต์เพียงพอสำหรับการตรวจสอบไวยากรณ์พื้นฐาน อย่างไรก็ตาม การตรวจสอบความถูกต้องด้วย XSD ต้องใช้เอนจินเฉพาะทาง เนื่องจากเบราว์เซอร์ไม่ได้มีตัวประมวลผล XML Schema มาให้ การตรวจสอบฝั่งเซิร์ฟเวอร์ช่วยให้ได้ผลลัพธ์ที่สม่ำเสมอ รองรับความสามารถของสคีมาที่ซับซ้อน เช่น การสืบทอดและการนำเข้า (imports) และให้การแยกส่วนด้านความปลอดภัยจากเนื้อหา XML ที่อาจเป็นอันตราย