PlusMagi's Blog By Pitt Phunsanit

XSLT (Extensible Stylesheet Language Transformations )

ครั้งหนึ่งเคยใช้ XSLT แปลง XML ให้แสดงออกมาเป็น photo book ในสมัยที่โปรแกรมดูรูปมันไม่ถูกใจ folder นี้อยากใช้ template นี้ อีก folder อยากใช้อีกแบบ แล้วเขียน CD เก็บไว้ ส่งให้เพื่อน
โดยพื้นฐานมันคือ ภาษาที่ใช้สำหรับ “แปลงร่าง” เอกสาร XML ให้กลายเป็นรูปแบบอื่น เช่น HTML (สำหรับหน้าเว็บ) , XML รูปแบบใหม่ หรือแม้แต่ Text ไฟล์ธรรมดา

เพื่อให้เห็นภาพง่ายขึ้น ให้ลองนึกถึง XML เป็น “วัตถุดิบ” และ XSLT เป็น “สูตรอาหาร” ที่บอกว่าต้องหยิบวัตถุดิบชิ้นไหนมาจัดวางอย่างไรเพื่อให้ได้จานอาหารที่สวยงาม


หลักการทำงานของ XSLT

  1. XSLT ทำงานโดยการอ่านโครงสร้างต้นไม้ (Tree structure) ของ XML และใช้คำสั่งค้นหาโหนดที่ต้องการผ่าน XPath จากนั้นจึงนำข้อมูลนั้นมาใส่ใน Template ที่เรากำหนดไว้
  2. ส่วนประกอบสำคัญ
    • XSLT Processor: ตัวขับเคลื่อนการแปลง
    • XPath: ภาษาที่ใช้ระบุตำแหน่งของข้อมูลใน XML เช่น /root/user/name
    • Templates: กฎที่ระบุว่าถ้าเจอ Tag นี้ ให้ทำอะไรต่อไป
  3. ตัวอย่างการเขียน XSLT เบื้องต้น
    <library> <book> <title>Learning XSLT</title> <author>Pitt Phunsanit</author> </book>
    </library>
    
  4. จากนั้นเขียนไฟล์ .xsl เพื่อแปลงเป็น HTML
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2>My Books</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>Title</th> <th>Author</th> </tr> <xsl:for-each select="library/book"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="author"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
    

ข้อดีของ XSLT


สถานะการรองรับในปัจจุบัน

Browser หลัก ๆ ในปัจจุบัน ยังคงมีตัว engine สำหรับประมวลผล XSLT 1.0 อยู่ในตัว และสามารถเรนเดอร์ไฟล์ XML ที่อ้างอิง XSLT stylesheet ได้โดยตรง

Browserการรองรับ XSLT 1.0การรองรับ XSLT 2.0 / 3.0
Chrome / Edgeรองรับ ไม่รองรับ (ต้องใช้ Library เสริม)
Firefoxรองรับ ไม่รองรับ
Safariรองรับ ไม่รองรับ

ข้อจำกัดที่สำคัญ

แนวทางที่แนะนำในปัจจุบัน


น่าเสียดายที่ XSLT ไม่ได้รับการสนับสนุนเท่าที่ควร จะบอกว่าล้าสมัยไปแล้วก็ได้ ส่วนหนึ่งคือเรื่องความปลอดภัย และ JSON ที่ดีกว่าในการเก็บข้อมูล


อ่านเพิ่มเติม

Exit mobile version