เอกซ์เอ็มแอล

**เอกซ์เอ็มแอล** ( *ภาษามาร์กอัปขยายได้*) เป็นภาษามาร์กอัปสำหรับการใช้งานทั่วไป พัฒนาโดยW3C โดยมีจุดประสงค์เพื่อเป็น สิ่งที่เอาไว้ติดต่อกันในระบบที่มีความแตกต่างกัน (เช่นใช้คอมพิวเตอร์มี่มีระบบปฏิบัติการคนละตัว หรืออาจจะเป็นคนละโปรแกรมประยุกต์ที่มีความต้องการสื่อสารข้อมูลถึงกัน) นอกจากนี้ยังเพื่อเป็นพื้นฐานในการสร้างภาษามาร์กอัปเฉพาะทางอีกขั้นหนึ่ง XML พัฒนามาจาก SGML โดยดัดแปลงให้มีความซับซ้อนลดน้อยลง XML ใช้ในแลกเปลี่ยนข้อมูลระหว่างเครื่องคอมพิวเตอร์ที่แตกต่างกัน และเน้นการแลกเปลี่ยนข้อมูลผ่านอินเทอร์เน็ต

XML ยังเป็นภาษาพื้นฐานให้กับภาษาอื่นๆ อีกด้วย (ยกตัวอย่างเช่น Geography Markup Language (GML) , RDF/XML, RSS, MathML, Physical Markup Language (PML) , XHTML, SVG, MusicXML และ cXML) ซึ่งอนุญาตให้โปรแกรมแก้ไขและทำงานกับเอกสารโดยไม่จำเป็นต้องมีความรู้ในภาษานั้นมาก่อน 

## ภาพรวม XML
Xml เป็นภาษาที่ใช้เน้น (มาร์กอัป) ส่วนที่เป็นข้อมูล โดยสามารถกำหนดชื่อแท็ก (Element) และชื่อแอตทิบิวต์ ได้ตามความต้องการของผู้สร้างเอกสาร xml โดยเอกสารนั้นจะต้องมีความเป็น Well-formed ส่วน DTD และ Schema จะมีหรือไม่มีก็ได้ ขึ้นอยู่กับว่ามีผู้ใช้เอกสารนั้นมากน้อยแค่ไหน เอกสาร xml จึงเป็นแค่เท็กซ์ไฟล์ชนิดหนึ่ง ที่มีแท็กเปิดและเท็กปิดครอบข้อมูลไว้ตรงกลางเท่านั้น ทำให้เอกสาร xml ถูกใช้ในการติดต่อกับระบบที่ต่างกัน เนื่องจากความง่ายในการสร้างเอกสาร การนำเอกสาร xml ไปใช้งาน จะสนใจแต่ข้อมูลที่ถูกเน้นด้วยแท็กมากกว่า

Well-formed เป็นไวยากรณ์พื้นฐานของเอกสาร xml อย่างเช่น เอกสาร xml ต้องเริ่มต้นด้วย  เอกสาร xml 1 เอกสาร จะต้องมีแท็กรูทเพียงแท็กเดียว หมายความว่า แท็กและข้อมูลต่าง ๆ จะต้องอยู่ภายในแท็กแรกสุดเพียงแท็กเดียว การเปิดและปิดแท็กจะต้องไม่มีการคร่อมกัน เช่น  จะไม่ Well-formed

เนื่องจากเอกสาร xml สามารถกำหนดชื่อแท็ก และชื่อแอตทิบิวต์ได้ตามความต้องการของผู้สร้างเอกสาร ทำให้ในการเน้นข้อมูลใดข้อมูลหนึ่ง สามารถมีเอกสาร xml หลายรูปแบบ (ผู้เขียนอาจใช้ชื่อแท็กต่างกัน ทั้งที่สื่อความหมายไปที่สิ่งเดียวกัน) หากว่าเอกสาร xml นั้น ถูกนำไปใช้ติดต่อกับระบบอื่น ๆ อาจทำให้สื่อความหมายไม่ตรงกัน ดังนั้นจึงต้องมีการกำหนดรูปแบบที่เป็นมาตรฐานขึ้น (ตกลงรูปแบบระหว่างกัน) โดย DTD และ Schema จะเป็นตัวกำหนดว่าเอกสาร xml นั้น จะต้องมีแท็กอะไรบ้าง ภายในแท็กนั้นจะมีแท็ก แอตทิบิวต์ หรือข้อมูลอะไรได้บ้าง โดย DTD จะต่างกับ Schema ตรงที่ Schema เป็นเอกสาร xml ด้วย

## เอกสาร XML
เอกสาร XML จะเป็นอะไรก็ได้อาจเป็น ฟิสิคอลไฟล์ใน Hard Disk หรือเป็นแค่สายอักขระในหน่วยความจำหลักในเครื่องก็ได้ เพราะโดยเนื้อแท้แล้วเอกสาร XML มีความประสงค์ที่จะให้เอาไว้ติดต่อสื่อสารกัน

XML เป็นภาษาที่ไม่มีรูปแบบโครงสร้างที่กำหนดไว้ล่วงหน้าใด ๆ เลย นี้เป็นข้อดีของมันเพราะมันทำให้ โปรแกรมประยุกต์ใด ๆ ก็ได้สามารถใช้งานมันได้โดยข้อกำหนดที่ได้ตกลงกันไว้ล่วงหน้า ถึงแม้ว่า XML ไม่มีข้อกำหนดล่วงหน้าถึงโครงสร้างข้อมูลต่าง ๆ แต่ก็มี*รูปแบบที่เป็นที่ตกลงกัน* ดังนี้

## Element
ประกอบไปด้วย แท็กเปิด ข้อมูล และแท็กปิด ยกตัวอย่างเช่น 


```xml
<student> Example_sudent </student>
```


ในที่นี้  คือแท็กเปิด  Example_sudent คือข้อมูล และ  คือแท็กปิด โดยแท็กปิดนั้นจะต้องมีชื่อเหมือนแท็กเปิดของมันแต่ตามหลังจากเครื่องหมาย '/'
จะสังเกตได้ว่า XML นั้นคล้ายกับ HTML เป็นอย่างมากสำหรับข้อแตกต่างที่ชัดเจนคือ HTML ได้กำหนดแท็กไว้ล่วงหน้าแล้วแต่ XML ไม่ว่าใคร ๆ ก็สามารถกำหนดแท็กของเราเองได้
XML นั้นไม่ใช่ภาษาโดยสมบูรณ์มันเป็น*มาตรฐาน*ข้อมูลมากกว่า โดยตัวโปรแกรมประยุกต์จะเป็นผู้กำหนดรูปแบบของตัวเองขึ้นและจะสามารถใช้ได้กับโครงสร้างข้อมูลที่ถูกอนุญาต (เพราะว่ามีรูปแบบของข้อมูลที่เข้ากันได้)
XML นั้นเป็นภาษาที่ case sensitive ดังนั้นการที่เราเขียนว่า  กับ  จึงถือว่าเป็นคนละแท็กกัน
นอกจากนี้แล้ว element ใน XML สามารถบรรจุอยู่ใน  element อื่น ๆ ได้ยกตัวอย่างเช่น


```xml
<student>
  <name>example name</name>
  <id>123456789</id>
</student>
```


จะเห็นว่า element  บรรจุอยู่ภายใน element 
element ไม่สามารถคร่อมกันได้ เช่น


```xml
<student>
  <name>example name
  <id></name>123456789</id>
</student>
```


แบบนี้ถือว่าไม่ถูกต้อง

แต่สามารถมี element ว่างแบบนี้ได้


```xml
<book></book>
```


นอกจากนี้ยังมีข้อยกเว้นสำหรับแท็กว่างจะเป็นแท็กที่ไม่ต้องมีแท็กปิดได้โดยสามารถเขียน


```xml
<book />
```


ซึ่งมีความหมายเหมือนกับด้านบน

## Attribute
นอกจากแท็กแล้วยังมี สิ่งที่เรียกว่า attribute ด้วยโดยที่มีรูปแบบดังนี้


```xml
<student name="example_name"></student>
<student name='example_name'></student>
```


จะเห็นว่าทั้งสองแบบมีความเหมือนกันแตกต่างกันเล็กน้อยคือใช้เครื่องหมาย " กับ ' ซึ่งสามารถใช้ได้ทั้งคู่

## การประกาศ XML
ส่วนต่างๆของ XML คือ node

node ที่ปรากฏบน XML ทุกฉบับคือ การประกาศ Declaration ซึ่งมีลักษณะเหมือนแท็กแต่มีเครื่องหมาย ? อยู่ด้วย
โดยในเอกสาร XML จะต้องมี node นี้ทุกฉบับ


```xml
<?xml version="1.0" ?>
```


## โครงสร้างของเอกสาร XML
ถูกกำหนดขึ้นโดยลำดับชั้น โดยเอกสารใด ๆ นั้นต้องมี root element หนึ่งตัวเสมอ เช่นในที่นี้คือ 


```xml
<?xml version="1.0" ?>
<student>
  <name>example name</name>
  <id>123456789</id>
</student>
```


## การตรวจสอบความถูกต้องของ XML
ความถูกต้องของ XML แบ่งเป็น 2 ระดับ
* **Well-formed** เอกสารที่ well-formed คือใช้ syntax ของ XML ถูกต้องตามมาตรฐานทุกอย่าง มีการเปิด-ปิดแท็กที่สมบูรณ์ แต่ไม่จำเป็นต้องจัดรูปแบบให้สวยงาม เอกสารที่ไม่ well-formed ถือว่าไม่เป็น XML
* **Valid** นอกจาก well-formed แล้ว เอกสารที่ valid ยังต้องใช้แท็ก XML ที่กำหนดเฉพาะใน schema ที่ตกลงกันไว้เท่านั้น ปัจจุบันมี schema ที่นิยม 3 ตัว คือ Document Type Definition (DTD) , XML Schema (W3C) (WXS) และ RELAX NG

## อ้างอิง

## แหล่งข้อมูลอื่น
* เว็บไซต์อย่างเป็นทางการของ XML ที่ W3C
* XeML.net 
* การจัดรูปแบบ XML
* วิธีการสร้าง XML Sitemap 


หมวดหมู่:ภาษามาร์กอัป
หมวดหมู่:มาตรฐานเวิลด์ไวด์เว็บคอนซอร์เทียม
หมวดหมู่:รูปแบบไฟล์คอมพิวเตอร์
หมวดหมู่:ภาษาสำหรับแลกเปลี่ยนข้อมูลระหว่างคอมพิวเตอร์