ขอความร่วมมือและแจ้งแนวทาง สำหรับเขียนบันทึกและแสดงความคิดเห็นเกี่ยวกับการเมืองอย่างสันติและสมานฉันท์
กรุณาเข้าระบบก่อน
อ่าน: 953
ความเห็น: 1

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

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

บ่อยครั้งที่ข้อมูลที่เรามีอยู่ในรูปแบบ 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);

?>

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


 

 

หมวดหมู่: วิทยาศาสตร์ เทคโนโลยี
คำสำคัญ: php  xml  xsl  transform  เอกซ์เอ็มแอล
สัญญาอนุญาต: สงวนสิทธิ์ทุกประการ Copyright
สร้าง: อ. 29 ม.ค. 2551 @ 22:00 แก้ไข: อ. 29 ม.ค. 2551 @ 22:00

ความเห็น

1.
30
จั่น [IP: 124.120.151.195]
เมื่อ อ. 29 ธ.ค. 2552 @ 00:08
#1766222 [ ลบ ]

ชัดเจนมาก ขอบคุณครับ

ชื่อ:
อีเมล:
IP แอดเดรส: 38.107.191.114
ข้อความ:  
เรียกใช้งานตัวจัดการข้อความ
 
รหัสสุ่ม: ( ใส่รหัสสุ่มที่แสดงไว้ด้านบน )
  ยกเลิก หรือ ดูตัวอย่างก่อนบันทึก หรือ

บันทึกอื่นๆ