<thai-score>
รากของเอกสาร ThaiMusicXML ทุกฉบับ
แอตทริบิวต์
หัวข้อที่มีชื่อว่า “แอตทริบิวต์”| แอตทริบิวต์ | จำเป็น | ประเภท | คำอธิบาย |
|---|---|---|---|
version |
ใช่ | สตริง | เวอร์ชัน Schema ThaiMusicXML เช่น "1.0" |
xmlns |
ใช่ | anyURI | เนมสเปซ ThaiMusicXML https://thaimusicxml.anan.ovh/ns/1 |
ตามลำดับ:
<header>- ข้อมูลเมตาโน้ต<structure>- โครงสร้างโน้ต<ensemble>- รายการเครื่องดนตรี<part-data>- หนึ่งหรือมากกว่า หนึ่งต่อเครื่องดนตรี- องค์ประกอบส่วนขยายเนมสเปซภายนอกศูนย์รายการขึ้นไป - สถานะของเครื่องมือบุคคลที่สาม ดู ส่วนขยาย ด้านล่าง
ตัวอย่าง
หัวข้อที่มีชื่อว่า “ตัวอย่าง”<?xml version="1.0" encoding="UTF-8"?><thai-score xmlns="https://thaimusicxml.anan.ovh/ns/1" version="1.0"> <header>...</header> <structure>...</structure> <ensemble>...</ensemble> <part-data part="P1">...</part-data></thai-score>เนมสเปซ
หัวข้อที่มีชื่อว่า “เนมสเปซ”เอกสาร ThaiMusicXML ทุกฉบับประกาศเนมสเปซ https://thaimusicxml.anan.ovh/ns/1 ที่ราก เครื่องมือจับคู่องค์ประกอบตามเนมสเปซและชื่อ แยก <note> ของ ThaiMusicXML จาก MusicXML และให้โน้ต ThaiMusicXML อยู่ในเอกสาร XML ขนาดใหญ่ได้โดยไม่ชน
URI ระบุคำศัพท์ ไม่มีสิ่งใดบังคับให้ดึง
ส่วนขยาย
หัวข้อที่มีชื่อว่า “ส่วนขยาย”<thai-score> รับองค์ประกอบเนมสเปซภายนอกได้หลัง <part-data> ตัวสุดท้าย เป็นช่องทางให้เครื่องมือของบุคคลที่สาม เช่น โปรแกรมแก้ไข แนบสถานะของตัวเองไปกับโน้ตได้โดยไม่ต้องแยกฟอร์แมตออกไปเอง แต่ละองค์ประกอบต้องประกาศเนมสเปซของตัวเองทุกระดับความลึก ไม่ใช่แค่ตัวบนสุด ทั้งเนมสเปซของ ThaiMusicXML เองและการไม่มีเนมสเปซเลยถูกกันออกตลอดทั้งส่วนขยาย ไม่มีสิ่งใดภายในปลอมเป็นข้อมูลดั้งเดิมได้ การประกาศเนมสเปซเริ่มต้นเพียงครั้งเดียวที่รากของส่วนขยายครอบคลุมองค์ประกอบที่ไม่มีคำนำหน้าทั้งหมดใต้มัน
<thai-score xmlns="https://thaimusicxml.anan.ovh/ns/1" version="1.0"> <header>...</header> <structure>...</structure> <ensemble>...</ensemble> <part-data part="P1">...</part-data> <nts:editor xmlns:nts="https://example.com/nts/1" xmlns="https://example.com/nts/1" version="1"> <cursor note="n1"/> </nts:editor></thai-score>แอตทริบิวต์ id ที่มีใน <line>, <measure>, <note>, <rest>, และ <group> มีไว้เพื่อการนี้: จุดยึดที่แน่นอนให้ส่วนขยายชี้ไปหา เช่น note="n1" ข้างต้น โดย ThaiMusicXML เองไม่จำเป็นต้องรู้ว่าอะไรชี้มาที่มัน ดูส่วนขยายเนมสเปซภายนอกในหน้าการสอดคล้องมาตรฐานสำหรับกฎแบบเต็ม
ประเภทไฟล์
หัวข้อที่มีชื่อว่า “ประเภทไฟล์”| นามสกุล | .txml |
| ประเภทสื่อ | application/vnd.thaimusicxml+xml |
| การเข้ารหัส | UTF-8 |
UTF-8 สำคัญกว่ารูปแบบอื่นเพราะค่า pitch และชื่อเครื่องดนตรีเขียนด้วยอักษรไทยเป็นประจำ
สิ่งที่ตัวประมวลผลใช้ตัดสิน
หัวข้อที่มีชื่อว่า “สิ่งที่ตัวประมวลผลใช้ตัดสิน”URI ของเนมสเปซ ไม่ใช่ version
URI ระบุขอบเขตความเข้ากันได้ไม่ใช่รุ่น เปลี่ยนเมื่อเอกสารไม่สามารถอ่านได้ด้วยตัวประมวลผลที่เขียนสำหรับรุ่นก่อน และคงอยู่เมื่อไม่เปลี่ยน URI ที่ตัวประมวลผลรู้จักแล้วจึงเป็นสัญญาว่าอ่านสิ่งที่ตามมาได้
ขอบเขตตกที่ใดตาม semantic versioning ในช่วง 0.x ทุกรุ่นอาจทำลายรุ่นก่อน แต่ละรุ่นจึงมี URI เฉพาะ: https://thaimusicxml.anan.ovh/ns/0.1 แล้ว https://thaimusicxml.anan.ovh/ns/0.2 จาก 1.0 URI มีเฉพาะเลขรุ่นหลัก https://thaimusicxml.anan.ovh/ns/1 ใช้กับ 1.0, 1.1 และ 1.2 เหมือนกัน เฉพาะ 2.0 สร้างใหม่ การเพิ่มองค์ประกอบทางเลือกในรุ่นรองจึงไม่กระทบเครื่องมือที่มีอยู่
version แยกแยะรุ่นภายในขอบเขต ตัวประมวลผลที่เขียนสำหรับ 1.0 ที่พบ version="1.3" รู้ว่าอาจเจอองค์ประกอบทางเลือกที่เพิ่มหลังเขียน จึงแจ้งเตือนและทำงานต่อแทนหยุด ในช่วง 0.x ไม่บอกสิ่งที่เนมสเปซไม่ได้บอกไว้แล้ว เอกสารในเนมสเปซ 0.1 ที่มี version="0.2" จึงอ่านเป็น 0.1 และแจ้งเตือน เนมสเปซเป็นส่วนที่สัญญาว่าจะเปลี่ยน
หมายเหตุ
หัวข้อที่มีชื่อว่า “หมายเหตุ”- ต้องเป็นรากเดียวของเอกสาร
- แอตทริบิวต์
versionบันทึกว่าเอกสารเขียนตามรุ่น ThaiMusicXML ใด เนมสเปซเป็นสิ่งที่ตัวประมวลผลใช้ตัดสิน
การสอดคล้องมาตรฐาน
หัวข้อที่มีชื่อว่า “การสอดคล้องมาตรฐาน”<thai-score>ต้องเป็นรากเดียว พร้อมversionและเนมสเปซ ThaiMusicXML- ตัวประมวลผลต้องปฏิเสธเอกสารที่รากอยู่ในเนมสเปซที่ไม่รองรับ
- ตัวตรวจสอบควรแจ้งเตือนเมื่อ
versionไม่ตรงกับเนมสเปซที่ปรากฏ และต้องไม่ปฏิเสธเพียงเพราะเหตุนั้น - องค์ประกอบส่วนขยายเนมสเปซภายนอกหลัง
<part-data>ตัวสุดท้ายต้องประกาศเนมสเปซจริง ไม่ใช่ของ ThaiMusicXML เองและไม่ใช่การไม่มีเนมสเปซเลย - ตัวประมวลผลต้องรักษาองค์ประกอบส่วนขยายที่ตนไม่รู้จักไว้โดยไม่เปลี่ยนแปลงตลอด round trip และต้องไม่ปล่อยให้ส่วนขยายกระทบวิธีที่เอกสารแสดงผลหรือเล่น