หน้าเว็บ

วันศุกร์ที่ 5 ตุลาคม พ.ศ. 2561

What is XML ?

Image result for xml


XML ย่อมาจาก Extensible Markup Language

Extensible หมายถึง การเพิ่มขยายได้, การยืดออกได้

Markup Language เป็นภาษาคอมพิวเตอร์ที่แสดงข้อมูล และข้อมูลรูปแบบที่เป็นตัวอธิบายโครงสร้างหรือการแสดงผล ซึ่งส่วนนี้เรียกว่า Markup โดยจะอยู่รวมกับข้อมูลปกติ Markup Language ที่รู้จักกันมากที่สุดก็คือ HTML

    สรุปแล้ว XML ก็คือ ภาษาที่มีรูปแบบเป็น Markup Language เหมือนกับ HTML แต่สามารถที่จะกำหนด tag เพิ่มขึ้นมาเองได้ ถูกออกแบบมาเพื่อเก็บและ ติดต่อส่งข้อมูล โดยสามารถที่จะติดต่อกันในระบบที่ต่างกันได้(ระบบปฏิบัติการณ์ต่างกัน หรือคนละโปรแกรม)


    ภาษา XML นั้นเป็นภาษาสามารถอธิบายตัวเองได้ ดังตัวอย่างต่อไปนี้



    จากตัวอย่างข้างต้น จะเห็นได้ว่าเป็นข้อมูลเกียวกับการส่งโน๊ต โดยที่ tag แต่ละตัวจะมีชื่อที่สื่อความหมาย เห็นแล้วสามารถเข้าใจได้ทันทีว่าข้อมูลภายในเป็นข้อมูลอะไร เช่น ข้อมูลด้านใน Tag <to> นั้นหมายถึง ผู้รับ และด้านใน Tag <from> หมายถึงชื่อผู้ส่ง เป็นต้น


XML vs HTML

  • XML ถูกออกแบบเพื่อใช้เก็บและรับส่งข้อมูล จะเน้นเกี่ยวกับเรื่องข้อมูลแต่ละตัวคือข้อมูลอะไร
  • HTML ถูกออกแบบมาเพื่อแสดงผลข้อมูล จะเน้นเรื่องของหน้าตาการแสดงผลของข้อมูล
  • XML Tags ไม่ได้ถูกกำหนดมาตายตัวเหมือนกับ HTML Tags เราสามารถที่จะสร้าง XML Tags เพิ่มเองได้


XML Element

    XML Element คือส่วนประกอบทุกๆอย่างตั้งแต่ Start Tag ไปจนถึง End Tag ซึ่งใน Element ก็จะมี Text, Attribute หรือ Element  ต่างๆอยู่ภายใน หรืออาจจะปนๆกันไป โดยกฎการตั้งชื่อนั้นก็จะมีดังนี้

  • ชื่อของ Element เป็น Case-Sensitive ดังนั้น Tag เปิดและ Tag ปิด ต้องใช้ตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่ให้เหมือนกัน
  • ชื่อจะต้องขึ้นต้นด้วยตัวอักษร หรือ Underscores( _ ) เท่านั้น และต้องไม่ขึ้นต้นด้วยคำว่า XML ไม่ว่าจะตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่ก็ตาม
  • ชื่อ Element สามารถประกอบไปด้วย ตัวอักษร, ตัวเลข, Hyphens( - ), Underscores( _ ), and periods( . ) แต่ต้องไม่มีการเว้นวรรค
  • จะตั้งชื่อว่าอะไรก็ได้ ไม่มีคำสงวน ยกเว้นเพียวคำว่า xml

    ถัดจากกฎการตั้งชื่อ อีกข้อบังคับนึงก็คือ XML Element จะต้องเป็น Properly Nested หรือแบบซ้อนกัน กล่าวคือ Tag ต้องมีลักษณะการซ้อนกัน ต้องปิด Tag ชั้นข้างในก่อนจึงจะปิด Tag ชั้นถัดมาข้างนอกได้ ดังรูปด้านล่าง ซึ่งต่างจาก HTML ที่จะไม่ได้เคร่งเรื่องนี้นัก ทำให้อาจพบเห็นได้บ้าง



Entity References

    ในส่วนของ Text นั้นการใช้เครื่องหมายบางตัวอาจทำให้เกิด Error ได้ จึงจำเป็นต้องมี Entity References มาใช้แทนเครื่องหมายเหล่านั้น ซึ่งหลักๆแล้วที่นิยมใช้มากจะมีอยู่ 5 ตัว ได้แก่



XML Tree

    คือโครงสร้างของ XML ในลักษณะต้นไม้ โดยจะเริ่มต้นแต่ Root Element ตามด้วย Element ภายใน Attribute ไล่ไปจนถึง Text หรือข้อมูลที่เก็บไว้ 



XML Namespaces

    เป็นการกำหนด Prefix เพื่อเอามาใช้นำหน้าของ Tag เพื่อป้องกันการเกิดการขัดแย้งหรือสับสนเมื่อมีการรวม XML หลายอันเข้าด้วยกัน โดยเมื่อกำหนด Prefix จะต้องกำหนด URI เพื่อบอกที่มาด้วย ตาม Syntax นี้

xmlns:prefix="URI"

        ซึ่งหากเทียบกับภาษา Programming ก็จะเหมือนกับเป็นการ import library เข้ามาแล้วทำการ alias เป็น prefix เพื่อนำไปใช้นั่นเอง โดยการกำหนด Namespace นั้น สามารถที่จะกำหนดได้ทั้งตรง Element ที่ต้องการ หรือจะประกาศตรง root เลยก็ได้ แต่ถ้าประกาศตรง Element จะใช้ Namespace ได้เฉพาะภายใน Element นั้นๆ




XML Display

 

    XML File สามารถเปิดดูได้บนเว็บเบราว์เซอร์แทบทุกตัว โดยที่เว็บเบราว์เซอร์บางตัวสามารถที่จะแจ้ง error ได้ในกรณีที่ข้อมูลใน XML File ข้อผิดพลาด
    ส่วนการแสดงผล XML File นั้นจะเป็นดังรูปด้านบน ซึ่งจะไม่แสดงผลเหมือนกับ HTML Page แต่เราก็ยังสามารถใช้ CSS มาช่วยในการตกแต่งการแสดงผลได้

  


XML Parser

XML parsers
    XML Parser เป็นเหมือน API หรือ ตัวช่วยที่ใช้ในการเข้าถึงข้อมูลที่อยู่ภายใน XML File โดยจะมีหน้าที่หลักๆก็คือ read(อ่าน) create(สร้าง) update(แก้ไข) และ manipulate(เข้าถึง) โดยจะทำการ Parse จาก Text String ให้กลายเป็น XML DOM object ก่อนที่จะนำไปใช้งาน
    ซึ่งวิธีการ Parse นั้นมีอยู่หลายวิธี โดย 2 วิธีที่จะแนะนำก็คือ DOM (Document Object Model) และ SAX (Simple API for XML)

DOM(Document Object Model) Parser

    DOM จะทำโหลดไฟล์ XML ทั้งไฟล์ใน memory จากนั้นจึงประมวลผลโครงสร้างออกมาในลักษณะต้นไม้ เพื่อให้แอปพลิเคชันสามารถเข้าถึงข้อมูลภายในได้
    ข้อดีคือ หลังจากที่มีการเรียกใช้ครั้งแรกแล้ว การเข้าถึงต่างๆจะถูกเก็บไว้ใน memory ทำให้เรียกใช้ได้เร็ว (แต่การเรียกใช้จะค่อนข้างช้า ขึ้นอยู่กับขนาดไฟล์)
    ข้อสียคือ ไม่เหมาะกับไฟล์ที่มีขนาดใหญ่ เนื่องจากต้องโหลดทั้งไฟล์ลง memory ทำให้มีข้อจำกัดของหน่อยความจำ

SAX (Simple API for XML) Parser

    SAX จะทำงานแบบ Event Driven คือจะไล่อ่านข้อมูลตั้งแต่จุดเริ่มต้นและสิ้นสุดของ elements ต่าง ๆ ไปให้แอพพลิเคชั่น โดยไม่จำเป็นต้องโหลดข้อมูลทั้งหมดลงใน memory
    ข้อดีคือ ใช้ memory น้อย เปิดไฟล์ขนาดใหญ่ที่มากกว่า memory ได้
    ข้อเสียคือ ไม่สามารถที่จะ random access หรือเปลี่ยนแปลงแก้ไขข้อมูลได้

ไม่มีความคิดเห็น:

แสดงความคิดเห็น