Friday, May 25, 2007

แนะนำ XSL-FO

XSL-FO ย่อมาจาก eXtensible Stylesheet Language - Formatting Object เป็นส่วนหนึ่งของภาษา XML
Format) ของข้อมูล ลักษณะคล้ายๆกับภาษา HTML


ต่างกันที่ภาษา็ HTML ใช้อฺธิบายรูปแบบของข้อมูลเช่น อักษรตัวหนา header เพื่อให้ แสดงผลได้โดยการใช้ Browser เชน Internet Explorer หรือ Firefox แต่ XSL-FO เน้นไปที่งานพิมพ์ หรือการแสดงผลลัพท์ในรูปแบบของ PDF ไฟล์ Postscript file หรือการสั่งพิมพ์ออกไปยัง printer

ตัวอย่าง XSL-FO ไฟล์

<?xml version="1.0" encoding="utf-8" ?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master margin-right="0.0in" margin-left="0.0in"
margin-bottom="0.5in" margin-top="0.0in" page-width="210mm"
page-height="297mm" master-name="book-page">
<fo:region-body margin="0in"/>
</fo:simple-page-master>"
</fo:layout-master-set>
<fo:page-sequence master-reference="book-page">
<fo:flow flow-name="xsl-region-body">
<fo:block>Hello World
</fo:flow>
</fo:page-sequence>
</fo:root>


สังเกตได้ว่าคำสั่ง (Tag) จะเป็นประเภทที่เกี่ยวข้องกับการจัดรูปแบบงานพิมพ์เช่น set layout, margin, page, size สำหรับรายละเอียดที่มากว่านี้ลองหาอ่านจาก web XSL-FO Tutorial

การสร้างไฟล์ก็ใช้พวก notepad ก็ได้ หลังจากที่เราได้สร้างข้อมูลแล้วขั้นต่อไปก็เตรียมเอาไปใช้ ลอง copy ตัวอย่างข้างบนไปใส่ใน notepad แล้ว save โดยตั้งชื่อไฟล์เป็น c:\hello.fo

การนำไฟล์ XSL-FO ไปใช้งานทำได้โดยใช้โปรแกรมมาแปลงไฟล์ไปเป็น format ที่เราต้องการตัวอย่างนี้เราจะแปลงไปเป้น ไฟล์ PDF ถ้าเรานึกถึง HTML เราไม่อ่านไฟล์นั้นตรงๆแต่จะดู file ผ่าน Internet explorer หรือ Firefox

ในกรณีของ XSL-FO ก็จะมีคนพัฒนาโปรแกรมที่ผมเรียกเองว่า FO processer ใช้ในการแปลงไฟล์ ในตัวอย่างนี้เราจะแปลง hello.fo ให้เป็นไฟล์ PDF โดยใช้โปรแกรมชื่อ Apache FOP ดาวน์โหลดได้จาก xmlgraphics.apache.org/fop/ FOPเป็นโปรแกรมที่เขียนด้วยจาวา การติดตั้งก็ไม่ยากดาวน์โหบดจากเวบเสร็จแล้วกั็ unzip ลงใน hard disk ที่โฟลเดอร์ที่เรากำหนด

จากคอมมานด์ไล์ให้ลองพิมพ์คำสั่ง
fop.bat c:\hello.fo c:\hello.pdf
โปรแกรมจะทำการแปลงไฟล์ได้ผลเป็น c:\hello.pdf เปิดดูได้ acrobat writer

FOP แปลงไฟล์ XSL-FO เป็นรูปแบบ postscript, PDF, RTF ตัวอย่างเช่น
fop.bat -ps hello.fo hello.ps ได้ผลลัพธ์เป็น postscript


โดยหลักการ XSL-FO เหมาะสำหรับการสร้าง report โดยความฝันของผู้ออกแบบเขาก็หวังว่าจะใชั Format นี้กับงานพิมพ์หนือ report โดยไม่ขึ้นกับช hardware หรือ OS

No comments: