| Campus Community | CoE Project | Campus Let's Work | Campus Forums | Campus Mailing List | Campus Wiki | Campus Webservices |
Secure Login/Register

การแปลงข้อมูล XML ให้อยู่ในรูปแบบที่ดูง่ายด้วย XSL และ PHP

รูปภาพของ kanda

บ่อยครั้งที่ข้อมูลที่เรามีอยู่ในรูปแบบ XML
ซึ่งอาจจะได้มาจากการเรียกใช้เว็บเซอร์วิส
หรือรูปแบบมาตรฐานของข้อมูลที่เราได้รับมา แต่เรามักจะพบว่าการอ่านข้อมูล
XML นั้นไม่ค่อยง่ายเพราะมีแต่ตัวอักษร
และหลายครั้งที่เราต้องการแปลงข้อมูลเหล่าีนี้อยู่ในรูปแบบของเว็บเพจเพื่อแ
สดงให้คนอื่นดูด้วย

เราสามารถแปลงข้อมูล XML ให้อยู่ในรูปแบบที่ดูง่ายขึ้นด้วย XSL และ PHP

ตัวอย่างเช่น หากเรามีไฟล์ allResults.xml ที่เราได้รับจากการเรียก Yahoo Search ด้วยคำสำคัญ "Kanda Saikaew"
ซึ่งถ้าหากเราดูแล้วจะพบว่ามีข้อมูลที่ซ้อนกันหลายชั้นและดูค่อนข้างจะสลับซับซ้อนดังแสดงในรูป

 

 

 

ถ้าหากเราต้องการเพียงแ่ค่ชื่อของเว็บเพจและลิงก์ไปที่เว็บเพจนั้นเราก็สามาร
ถทำได้โดยการคัดกรองเอาแต่ข้อมูลที่เราต้องการก่อนโดยการเขียนโปรแกรม XML
Parser ด้วยภาษา PHP ดังนี้

<?php
$xml = simplexml_load_file('allResults.xml');
$xml_result = "<?xml version='1.0'?><results>";
$xml_result .="<name>Kanda Saikaew</name>";
foreach ($xml->Result as $result) {
$xml_result .= '<result><title>';
$xml_result .= htmlspecialchars($result->Title);
$xml_result .= '</title><url>';
$xml_result .= htmlspecialchars($result->Url);
$xml_result .= '</url></result>';
}
$xml_result .= "</results>";

$fp = fopen('results.xml','w');

$write = fwrite($fp,$xml_result);
fclose($fp);
?>

เราก็จะได้ไฟล์ results.xml

ซึ่งดูง่ายกว่าไฟล์แรกที่เรามี แต่ถ้าหากเราต้องการทำให้เป็นตารางในรูปแบบของเว็บเพจ เราก็จะเขียนไฟล์ results.xsl

<?xml version='1.0'?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version='1.0'>
<xsl:output method="html"/>
<xsl:template match="/results">
<html>
<head><title>Search Result by Yahoo</title></head>
<body>
<h1>Search Result for <xsl:value-of select="name"/></h1>
<table border="1">
<tr><th>Title</th><th>Url</th></tr>
<xsl:for-each select="result">
<tr><td><xsl:value-of select="title"/></td>
<td><a href="{url}"><xsl:value-of select="url"/></a></td></tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

และเขียนโค้ด PHP เพื่ออ่านและแปลงข้อมูลจาก results.xml
โดยอาศัยรูปแบบของการแสดงข้อมูลที่ระบุไว้น results.xsl ให้เป็น
results.html

<?php

$doc = new DOMDocument();
$xsl = new XSLTProcessor();

$xsl_filename = "results.xsl";

$doc->load($xsl_filename);
$xsl->importStyleSheet($doc);

$xml_filename = "results.xml";

$doc->load($xml_filename);
echo $xsl->transformToXML($doc);

?>

แล้วเราก็จะได้ผลลัพธ์ที่ดูง่ายดังแสดงในรูปนี้

This blog entry is also available at http://thaixmlws.blogspot.com

ขอบคุณครั

รูปภาพของ gigkokman

ขอบคุณครับ มารับความรู้จากอาจารย์ Smile
ช่วงนี้ผมไม่ได้แตะภาษาอื่นเลย..
ว่าง ๆ ก็เข้ามาหาความรู้เพิ่มจาก campus
มีทั้งเรื่องเก่าและเรื่องใหม่ให้ศึกษาอยู่เรื่อย ๆ
เว็บที่มีแต่สิ่งดี ๆ แบบนี้ต้องยิ่งใหญ่ในอนาคตแน่นอนเลย
เป็นกำลังใจให้ทีมพัฒนาทุกคนนะครับ Wink

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

Copy the characters (respecting upper/lower case) from the image.