ย้ายบล็อกไปที่ bact.cc แล้วนะครับ

พ.ร.บ.คอมพิวเตอร์
หยุด ร่างพ.ร.บ.คอมพิวเตอร์
พื้นที่เก็บข้อมูลออนไลน์ ฟรี 2GB จาก Dropbox (sync กับ Windows, Linux, Mac, iPhone, Android ฯลฯ ได้)

2005-07-28

Co-Occurrence Constraints in RELAX NG

วิธีกำหนดเงื่อนไข &ldquoปรากฏร่วม” ใน RELAX NG: ถ้าค่าของโหนดนี้ เป็นแบบนี้ ตัวข้อมูลที่เหลือจะต้องเป็นแบบนี้ ... เช่น ในอิลิเมนต์ person ถ้าเกิดแอตทริบิวต์ type มีค่าเป็น “author” ตัวอิลิเมนต์ person จะต้องมีอิลิเมนต์ลูก ชื่อ dead ด้วยนะ; แต่ถ้าแอตทริบิวต์ type มีค่าเป็น “character” ตัวอิลิเมนต์ลูกที่ต้องมี ก็จะเปลี่ยนไป

เงื่อนไขลักษณะนี้ ทำด้วย DTD ไม่ได้เลย. ส่วน W3C XML Schema นี่ พอทำได้บ้าง แต่ยุ่งยาก

คำถามก็คือ แล้วทำไมไม่สร้างอิลิเมนต์แยกกันไปเลยล่ะ ? -_-" อย่างในตัวอย่างข้างบน ก็ทำเป็นสองอิลิเมนต์ไปเลย ก็น่าจะได้รึเปล่า ? หรือว่าทำแบบนี้แล้ว มันทำให้ดูทั่ว ๆ ไป (generic) มากขึ้น ?

อันนี้ก็ต้องแล้วแต่คนออกแบบ schema แล้วล่ะ ว่าจะเอาไง. ตัว schema language (อย่าง Relax NG) นั้น เปิดช่องให้ทำได้, แต่จะทำไม่ทำก็แล้วแต่.

No comments: