XML หมายถึงอะไร
XML ย่อมาจาก Extensible Markup Language ได้รับการรับรองเป็น W3C Recommendation ในปี 1998 และใช้อธิบายข้อมูลด้วยแท็กที่คุณตั้งชื่อเอง – นี่คือความหมายของคำว่า “extensible” (ขยายได้) XML ไม่มีแท็กที่กำหนดไว้ล่วงหน้าเหมือน HTML: แคตตาล็อกสินค้าอาจใช้ <product> และ <price> ส่วนใบแจ้งหนี้อาจใช้ <item> และ <total>
เอกสาร XML ขนาดเล็กมีหน้าตาแบบนี้: <book id="1"><title>XML Basics</title><year>2026</year></book> XML เป็นข้อความธรรมดา (plain text) คนจึงอ่านเข้าใจได้และทุกภาษาโปรแกรมสามารถประมวลผลได้ XML ทำหน้าที่เพียงจัดเก็บและจัดโครงสร้างข้อมูล – ตัวมันเองไม่ได้ทำอะไร โปรแกรมต่าง ๆ เป็นผู้กำหนดว่าข้อมูลหมายถึงอะไรและจะแสดงผลอย่างไร
กฎไวยากรณ์ของ XML
เอกสาร XML ทุกฉบับต้องทำตามกฎที่เข้มงวดไม่กี่ข้อ เอกสารที่ทำตามกฎเหล่านี้เรียกว่า well-formed:
- มีอิลิเมนต์รากเพียงหนึ่งเดียวที่ครอบอิลิเมนต์อื่นทั้งหมด
- ทุกอิลิเมนต์ต้องปิด:
<name>…</name>หรือปิดในตัวแบบ<br/> - อิลิเมนต์ต้องซ้อนกันอย่างถูกต้อง:
<b><i>…</i></b>ห้ามเป็น<b><i>…</b></i> - ชื่อแยกตัวพิมพ์เล็ก-ใหญ่:
<Item>และ<item>เป็นคนละอิลิเมนต์กัน - ค่าแอตทริบิวต์ต้องอยู่ในเครื่องหมายคำพูดเดี่ยวหรือคู่เสมอ
&และ<ในข้อความต้อง escape เป็น&และ<- การประกาศ
<?xml version="1.0" encoding="UTF-8"?>จะใส่หรือไม่ก็ได้ แต่ถ้าใส่ต้องอยู่ที่จุดเริ่มต้นของเอกสารเท่านั้น
คอมเมนต์เขียนในรูปแบบ <!-- … --> เครื่องมือตรวจสอบ XML จะเช็คกฎเหล่านี้ทั้งหมดภายในวินาทีเดียว และชี้ไปยังบรรทัดที่มีข้อผิดพลาด
อิลิเมนต์และแอตทริบิวต์
อิลิเมนต์ (element) ประกอบด้วยแท็กเปิด เนื้อหา และแท็กปิด: <price>19.90</price> อิลิเมนต์สามารถมีข้อความ อิลิเมนต์อื่น หรือทั้งสองอย่างอยู่ภายใน ส่วน แอตทริบิวต์ (attribute) คือคู่ชื่อ–ค่าที่อยู่ภายในแท็กเปิด: <price currency="EUR">
| อิลิเมนต์ | แอตทริบิวต์ | |
|---|---|---|
| ตัวอย่าง | <color>red</color> | color="red" |
| ซ้ำได้ | ได้ | ไม่ได้ ใช้ได้ครั้งเดียวต่ออิลิเมนต์ |
| มีอิลิเมนต์ลูกได้ | ได้ | ไม่ได้ มีได้เฉพาะข้อความ |
| ลำดับมีความหมาย | ใช่ | ไม่ใช่ |
แนวทางที่นิยมใช้: ใช้อิลิเมนต์สำหรับตัวข้อมูลและทุกอย่างที่อาจซ้ำหรือมีโครงสร้าง และใช้แอตทริบิวต์สำหรับ metadata เช่น ID หน่วย หรือประเภท
XML แบบ well-formed กับ valid ต่างกันอย่างไร
XML ที่ well-formed คือ XML ที่ถูกต้องตามกฎไวยากรณ์ ซึ่ง parser จะปฏิเสธเอกสารที่ไม่เป็นไปตามนี้ ส่วน XML ที่ valid คือ XML ที่ well-formed และยังสอดคล้องกับ schema ที่กำหนดว่าอนุญาตอิลิเมนต์และแอตทริบิวต์ใดบ้าง เรียงลำดับอย่างไร และใช้ชนิดข้อมูลแบบใด
- DTD (Document Type Definition) คือภาษา schema ดั้งเดิมที่มีมาใน XML 1.0 และยังใช้ประกาศ entity เช่น
ได้ด้วย - XSD (XML Schema Definition) เขียนด้วย XML เอง และรองรับชนิดข้อมูลอย่างวันที่และเลขทศนิยม รูปแบบใบแจ้งหนี้อิเล็กทรอนิกส์อย่าง CFDI, NF-e และ UBL ล้วนเผยแพร่ schema แบบ XSD
Namespace ใน XML
เนื่องจากใคร ๆ ก็ตั้งชื่อแท็กเองได้ คำศัพท์สองชุดจึงอาจใช้ชื่อเดียวกัน – เช่น <title> ของหนังสือ กับ <title> ของบุคคล Namespace ช่วยแยกชื่อเหล่านี้ออกจากกันโดยผูกชื่อเข้ากับ URI เช่น xmlns:cfdi="http://www.sat.gob.mx/cfd/4" ประกาศ prefix cfdi ดังนั้น <cfdi:Comprobante> จึงเป็นส่วนหนึ่งของคำศัพท์ CFDI 4.0 ของเม็กซิโก ส่วน default namespace หรือ xmlns="…" ที่ไม่มี prefix จะมีผลกับทุกอิลิเมนต์ที่ไม่มี prefix ซึ่งอยู่ภายใน URI เป็นเพียงตัวระบุเท่านั้น ไม่มีการดาวน์โหลดสิ่งใดจาก URI นั้น
XML, JSON และ HTML ต่างกันอย่างไร
| XML | JSON | HTML | |
|---|---|---|---|
| วัตถุประสงค์ | จัดเก็บและแลกเปลี่ยนข้อมูลที่มีโครงสร้างและเอกสาร | แลกเปลี่ยนข้อมูล โดยเฉพาะใน Web API | แสดงผลหน้าเว็บ |
| ชื่อแท็กหรือคีย์ | กำหนดเอง | กำหนดเอง | กำหนดตายตัวโดยมาตรฐาน HTML |
| ชนิดข้อมูล | ข้อความ เว้นแต่ schema จะกำหนดชนิดข้อมูลไว้ | String, number, boolean, null, array, object | ข้อความ |
| แอตทริบิวต์ | มี | ไม่มี | มี |
| คอมเมนต์ | มี | ไม่มี | มี |
| Schema | DTD, XSD | JSON Schema | – |
| ข้อผิดพลาดทางไวยากรณ์ | parser ปฏิเสธ | parser ปฏิเสธ | เบราว์เซอร์ซ่อมแซมให้ |
JSON สั้นกว่าและแมปกับอ็อบเจกต์ใน JavaScript ได้โดยตรง Web API ส่วนใหญ่จึงหันมาใช้ JSON แต่ XML ยังคงแข็งแกร่งในงานที่เอกสารมีข้อความและ markup ปนกัน ต้องใช้ namespace หรือต้องตรวจสอบกับ schema อย่างเข้มงวด – นี่คือเหตุผลที่หน่วยงานภาษี สำนักพิมพ์ และรูปแบบไฟล์สำนักงานยังคงใช้ XML
ไฟล์ .xml คืออะไร และเปิดไฟล์ XML ได้อย่างไร?
ไฟล์ .xml คือไฟล์ข้อความธรรมดา (plain text) ที่บรรจุเอกสาร XML ซึ่งมักเข้ารหัสแบบ UTF-8 และเพราะเป็นข้อความ จึงเปิดได้ด้วยโปรแกรมแก้ไขข้อความทั่วไป – Notepad บน Windows, TextEdit บน Mac หรือโปรแกรมแก้ไขโค้ดอย่าง VS Code ส่วน Chrome และ Firefox จะแสดงไฟล์ XML เป็นโครงสร้างต้นไม้เมื่อคุณลากไฟล์ไปวางในหน้าต่างเบราว์เซอร์ และ Excel สามารถนำเข้าข้อมูล XML ลงในสเปรดชีตได้
ไฟล์จำนวนมากใช้ XML โดยไม่มีนามสกุล .xml: ภาพ .svg, ฟีด .rss, schema .xsd, สไตล์ชีต .xsl, ไฟล์ .config ใน .NET และไฟล์ .plist บน macOS ซึ่งสามารถจัดเก็บเป็น XML ได้ ส่วนไฟล์ Word, Excel และ PowerPoint (.docx, .xlsx, .pptx) ก็คือไฟล์ ZIP ที่บรรจุไฟล์ XML ไว้มากมาย
XML ใช้ทำอะไรบ้าง
- Sitemap:
sitemap.xmlบอกเสิร์ชเอนจินว่าเว็บไซต์มีหน้าใดบ้าง - ฟีด RSS และ Atom: เว็บข่าว บล็อก และพอดแคสต์เผยแพร่อัปเดตในรูปแบบ XML
- SVG: กราฟิกเวกเตอร์บนเว็บคือเอกสาร XML
- ไฟล์ Office: Office Open XML (DOCX, XLSX, PPTX) และ OpenDocument (ODT, ODS) คือแพ็กเกจ ZIP ที่บรรจุ XML
- ใบแจ้งหนี้อิเล็กทรอนิกส์: CFDI ในเม็กซิโกและ NF-e ในบราซิลเป็นไฟล์ XML ที่ต้องลงลายมือชื่อดิจิทัลและได้รับอนุมัติก่อนจึงจะมีผลทางกฎหมาย ส่วน UBL คือรูปแบบ XML เบื้องหลังระบบ e-invoicing ของ Peppol ในยุโรปและประเทศอื่น ๆ
- เว็บเซอร์วิส SOAP: ธนาคาร ผู้ให้บริการชำระเงิน และระบบของภาครัฐแลกเปลี่ยนข้อความ XML ที่อธิบายด้วยไฟล์ WSDL
- แอป Android: เลย์เอาต์ ทรัพยากรข้อความ (string resources) และ
AndroidManifest.xmlเขียนด้วย XML - การตั้งค่า (configuration):
pom.xmlของ Maven,web.configของ .NET และการตั้งค่า build และเซิร์ฟเวอร์อื่น ๆ อีกมากมาย
คำถามที่พบบ่อย
XML ย่อมาจากอะไร?
Extensible Markup Language โดย “Extensible” (ขยายได้) หมายความว่าคุณกำหนดแท็กเองได้ และ “Markup” หมายความว่าโครงสร้างถูกเขียนเป็นแท็กที่ครอบข้อมูลไว้
XML เป็นภาษาโปรแกรมหรือไม่?
ไม่ใช่ XML เป็นรูปแบบข้อมูล: ใช้อธิบายและจัดโครงสร้างข้อมูล แต่ไม่สามารถคำนวณอะไรได้ ส่วนเทคโนโลยีที่เกี่ยวข้องอย่าง XPath และ XSLT ใช้สำหรับคิวรีและแปลง XML
ปัจจุบันยังใช้ XML อยู่หรือไม่?
ยังใช้อยู่ แม้ JSON จะเข้ามาแทนที่ XML ใน Web API จำนวนมาก แต่ XML ยังคงเป็นมาตรฐานของ sitemap, ฟีด RSS, SVG, เอกสารสำนักงาน, เลย์เอาต์ Android, บริการ SOAP และใบแจ้งหนี้อิเล็กทรอนิกส์ในหลายประเทศ
อัปเดตล่าสุด: