samira samilan
ตอนที่ ๒ การแปลงเอกสาร (Transformation)
นี่คือ เทคนิคในการ แยก ข้อมูล ออกจาก web design และ เมื่อไร ที่ web design ทำออกมาเสร็จแล้ว มันก็ทำหน้ที่ เป็น template ให้เราตลอดเลย ไม่ว่า เราจะเพิ่ม หรือลด ก็ตาม หน้าตา จะออกมาเหมือนกันหมด โดยที่ไม่ต้องไป เขียน หน้าจอใหม่ ( นี่คือ เทคนิคที่ใช้ ใน CMS บางตัว เช่น mambo )
เมื่อเราได้ file ทั้งหมด 3 files แล้ว คือ dtd , xml & xsl แล้ว ต่อไปนี้ ก็เป็นการแปลงจริงๆ โดยการ เอาโปรแกรม xml เข้าไปแปลงโฉมรูป (TRANSFORM) ของ xml ให้หน้าตา ออกมาตามที่ เราบังคับใน xsl ที่เราเขียนสร้าง ขึ้นมา โดยอาศัย โปรแกรม ที่เขาเรียกว่า XSLT processor หรือ parser
โปรแกรม parser เหล่านี้ ได้แก่ xsltproc, Xalan , SAXON เป็นต้น จะเลือกใช้ตัวใหนก็ได้ เราก็สั่ง ให้โปรแกรม เหล่านี้ จัดการ แปลงโฉม ให้ออกมาตามที่เราตั้งใจใว้ ผู้เขียนคนนี้ใช้ Xalan ที่สร้างจากภาษา C++ เพราะ การติดตั้งง่ายดี อีก version สร้างจากภาษา Java
คำถามก็คือว่า แล้วทำไม ต้องไปทำ ให้มันวุ่นวาย เขียน dtd เอย xsl เอย xml เอย ข้อดีที่ว่า ก็คือ
๑ เราสามารถ ส่ง ข้อมูลนี้ ในรูป text file แล้ว คนอื่น สามารถเอาไปแปลงได้ เพราะฉนั้น มันเป็นรูปแบบ ที่เอาไปใช้ ใน platform ใหนก็ได้
๒ การที่เรามี dtd & xsl แล้ว นั่นก็คือ แม่แบบ หรือ template ที่เราสร้างหนเดียว ที่เหลือ มันจะออกมามาตรฐานเดียวกันหมด่ ตามที่เรากำหนด ใน XSL
๓ รูปโฉม ที่เราต้องการจะแปลงออกไปนั้น เราสามารถจะให้ มันแปลงออกมาในรูป text , PDF , HTML หรือแม้แต่ microsoft Help format ก็ได้ เพียงแต่ สั่งใน file xsl นี้ แค่นั้นเอง
๔ ซึ่งเป็นจุดประสงค์ ที่เอามาเล่า ก็คือ รูปแบบของเอกสาร ที่สำคัญ เช่น การเขียน ตำรา หนังสือ บทความ รวมทั้ง QandA หรือ FAQ's นั้น เขาได้สร้าง dtd & XSL มารองรับแล้ว เราเอามาใช้ได้เลย ทั้งนี้ เราก็ต้องเข้าไปอ่าน ว่า ใน dtd ที่เขาให้มานั้น มันมี tags อะไรบ้าง สำหรับ book.dtd นั้น มีให้ท่านเลือกใช้ ประมาณ เกือบ 500 tags ครับ มีหมด ตั้งแต่ สร้าง สารบัญ สร้าง index และ เอกสารอ้างอิง คือ เขาสร้างมาให้เราใช้ ครบ ทุกอย่างที่อยากจะใช้ ไม่เพียงแค่นั้น มันสามารถแยกบทความที่สร้าง ให้ออกมาเป็นบท กำหนด หมายเลข แต่ละหัวข้อให้ดัวย เป็นต้น
Docbook.xsl file เหล่านี้ สามารถ download มาเก็บ ในเครื่องของเรา เพื่อใช้ ตอนออกคำสั่ง เวลาจะ transform ( แปลงหน้าตา)
ฉนั้น สิ่งที่เหลือ ที่เราต้องทำก็คือ เขียน แค่ ตำรา บทความ QandA หรือ FAQ's ให้ออกมาในรูป ของ XML จากนั้น เราเวลาเราจะแปลงโฉม ก็เรียก XSLT processor หรือ parser นี้ มาใช้
ยกตัวอย่าง ผู้เขียนคนนี้ ใช้ xalan ( หาใช้ได้ จาก www.apache.org) คำสั่งเป็นดังนี้
xalan -o teacher.html teacher.xml teacher.xsl
แค่นี้ เราก็จะได้ file ที่เชื่อว่า teacher.html ออกมา สามารถเอาไปวาง บน web server ได้เลย
ในทำนองเดียวกัน อย่างที่ว่ามาข้างบน นั้น เช่น การสร้าง QandA เราก็สร้าง QandA.xml ขึ้นมา เช่น
QandA.xml
========================================
<?xml version="1.0" encoding="windows-874"?>
<!DOCTYPE qandaset PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<qandaset>
<title>"The ThaiBSD.COM" Q & A</title>
<para><emphasis role="bold">ตัวอย่างของ QandA หรือ จะใช้ใน FAQ's ก็ได้เช่นกัน</emphasis></para>
<anchor id="example.anchor.1"/>
<qandaentry>
<question><para>การติดตั้ง FAMP แบบ ดานาส **</para></question>
<answer>
<programlisting>
โปรแกรมที่ติดตั้ง การเรียกใช้ URL
Freebsd 6.0
cvsup
Perl <ulink url="http://www.thecyberoutlets/cgi-bin/test.cgi ">http://www.thecyberoutlets/cgi-bin/test.cgi</ulink>
apache2 <ulink url="http://www.thecyberoutlets.com/ ">http://www.thecyberoutlets.com/</ulink>
MySQL4.1
PHP5.0.4 <ulink url="http://www.thecyberoutlets.com/test.php">http://www.thecyberoutlets.com/test.php</ulink> ใช้ได้
phpMyAdmin 2.6.3 <ulink url="http://www.thecyberoutlets/pma/ ">http://www.thecyberoutlets/pma/ </ulink>
ZendOptimizer-2.5.7-i386
unzip552.tar.gz
Mambo <ulink url="http://www.thecyberoutlets/mambo/index.php">http://www.thecyberoutlets/mambo/index.php</ulink>
phpsysinfo-2.3 <ulink url="http://www.thecyberoutlets.com/phpsysinfo-">http://www.thecyberoutlets.com/phpsysinfo- </ulink>
dev/index.php ใช่ได้
Webalizer 2.01 <ulink url="http://www.thecyberoutlets.com/webalizer/">http://www.thecyberoutlets.com/webalizer/ </ulink>
openwebmail 2.51 <ulink url="http://www.thecyberoutlets.com//cgi-">http://www.thecyberoutlets.com//cgi- </ulink>
bin/openwebmail/openwebmail.pl
mrtg-2.12.2,1
</programlisting>
</answer>
</qandaentry>
<qandaentry>
<question><para>ติดตั้ง perl?</para></question>
<answer>
<programlisting>
การติดตั้ง Perl5.8
<link linkend="example.anchor.1">back top</link>
<procedure>
<step>#cd /usr/ports/lang/perl5.8 </step>
<step>เนื่องจากมีเวอร์ชั่นเก่าที่ติดตั้งมาพร้อม FreeBSD อยู่ก่อนแล้ว ให้จัดการลบออกก่อน </step>
<step>#make deinstall && make clean </step>
<step>เริ่มติดตั้ง </step>
<step>#make \
? WITHOUT_PERL_64BITINT=yes \
? WITH_THREADS=yes \
? ENABLE_SUIDPERL=yes \ </step>
<step>? install clean </step>
</procedure>
</programlisting>
</answer>
</qandaentry>
<qandaentry>
<question><para>การติดตั้ง MySQL4.1 ผ่าน Ports </para></question>
<answer>
<programlisting>
แนะนำให้ติดตั้ง MySQL ก่อนเป็นอันดับแรกนะครับ
สำหรับการติดตั้งโปรแกรมทั้ง 4 ตัวข้างต้น
<link linkend="example.anchor.1">top</link>
<procedure>
<step>$ su </step>
<step># cd /usr/ports/databases/mysql41-server </step>
<step># make \ </step>
WITH_CHARSET=tis620 \
WITH_XCHARSET=all \
WITH_OPENSSL=yes \
<step>install clean </step>
==== รอ ครู่ใหญ่ ====
<step># pico /etc/rc.conf </step>
<step>เพิ่มคำสั่ง mysql_enable=”YES” เข้าไป </step>
<step>reboot เครื่องใหม่ </step>
<step>สามารถทดลองเรียกใช้งานได้ด้วยคำสั่ง mysql </step>
<step>เพื่อความปลอดภัยให้ใส่รหัสเพื่อเข้าไปใช้ MySQL </step>
<step>ด้วยคำสั่ง mysqladmin ดังนี้ </step> <step># /usr/local/bin/mysqladmin -u root password 'password ที่ต้องการ' </step>
<step># /usr/local/bin/mysqladmin -u root -h servername password 'password ที่ต้องการ' </step>
<step>สำหรับ MySQL ก็ติดตั้งเสร็จเรียบร้อยสามารถใช้งานได้แล้ว</step>
<step># mysql -u root -pzxcvbn
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 22 to server version: 4.1.10a
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> exit </step>
</procedure>
</programlisting>
</answer>
</qandaentry>
</qandaset>
========================================
ผู้อ่านอาจจะคิดว่า แหมต้องมาสร้าง setup อะไรกันมากมาย ต้องมานั่ง ใส่ tag กันวุ่นวาย
เท็จจริงแล้ว ทำได้ง่ายมาก หากมี text editor ที่ดี จะสดวก เพราะหากเข้าไปดูรายละเอียด จะเห็นว่า
มี tags ที่ใช้อยู่ไม่กี่ตัว ไม่เพียงแค่นั้น รูปแบบที่ออกมา ก็เป็นรูปแบบ ของ QandA หรือ FAQ's ที่สมบูรณ์ เราไม่ต้องไปนั่งสร้างเอง เพราะเขามี XSL ที่สำหรับทำการนี้ โดยเฉพาะอยู่แล้ว นี่คือ คุณประโยชน์ ที่ลดเวลา ไปมากมาย และมาตรฐาน หน้าตา จะออกมา คงเส้นคงวา ตามแบบ ของเขาเลย
ที่มา : http://www.thaibsd.com/webboard/show.php?Category=thaibsd&No=6402