Site icon PlusMagi's Blog By Pitt Phunsanit

XSLT ( Extensible Stylesheet Language Transformations )

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

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


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

  1. XSLT ทำงานโดยการอ่านโครงสร้างต้นไม้ (Tree structure) ของ XML และใช้คำสั่งค้นหาโหนดที่ต้องการผ่าน XPath จากนั้นจึงนำข้อมูลนั้นมาใส่ใน Template ที่เรากำหนดไว้
  2. ส่วนประกอบสำคัญ
    • XSLT Processor: ตัวขับเคลื่อนการแปลง ( เช่น Saxon, Libxslt หรือ Browser ทั่วไป )
    • 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 หลัก ๆ ในปัจจุบัน ( Chrome, Firefox, Safari, Edge ) ยังคงมีตัว engine สำหรับประมวลผล XSLT 1.0 อยู่ในตัว และสามารถเรนเดอร์ไฟล์ XML ที่อ้างอิง XSLT stylesheet ได้โดยตรง

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

ข้อจำกัดที่สำคัญ ( สิ่งที่คุณต้องเจอ )

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


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


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

Exit mobile version