XML Tutorial

XML หน้าแรก บทนำ XML XML วิธีใช้งาน XML Tree ไวยากรณ์ XML องค์ประกอบ XML คุณสมบัติ XML XML เนมสเปซ จอแสดงผล XML XML HttpRequest XML Parser XML DOM XML XPath XML XSLT XML XQuery XML XLink เครื่องมือตรวจสอบ XML XML DTD XML Schema XML Server ตัวอย่าง XML แบบทดสอบ XML ใบรับรอง XML

XML AJAX

บทนำ AJAX AJAX XMLHttp คำขอ AJAX การตอบสนอง AJAX ไฟล์ AJAX XML AJAX PHP AJAX ASP ฐานข้อมูล AJAX แอปพลิเคชัน AJAX ตัวอย่าง AJAX

XML DOM

บทนำ DOM โหนด DOM การเข้าถึง DOM ข้อมูลโหนด DOM รายการโหนด DOM DOM Traversing การนำทาง DOM DOM รับค่า DOM เปลี่ยนโหนด DOM ลบโหนด DOM แทนที่โหนด DOM สร้างโหนด DOM เพิ่มโหนด DOM โคลนโหนด ตัวอย่าง DOM

บทช่วย สอนXPath

บทนำ XPath โหนด XPath ไวยากรณ์ XPath แกน XPath ตัวดำเนินการ XPath ตัวอย่าง XPath

กวดวิชาXSLT

บทนำ XSLT ภาษา XSL การแปลง XSLT XSLT <แม่แบบ> XSLT <ค่าของ> XSLT <for-each> XSLT <sort> XSLT <if> XSLT <เลือก> ใช้ XSLT XSLT บนไคลเอนต์ XSLT บนเซิร์ฟเวอร์ XSLT แก้ไข XML ตัวอย่าง XSLT

กวดวิชาXQuery

บทนำ XQuery ตัวอย่าง XQuery XQuery FLWOR XQuery HTML ข้อกำหนด XQuery ไวยากรณ์ XQuery XQuery เพิ่ม XQuery Select ฟังก์ชัน XQuery

XML DTD

บทนำ DTD บล็อกตัวต่อ DTD องค์ประกอบ DTD คุณสมบัติ DTD องค์ประกอบ DTD เทียบกับ Attr หน่วยงาน DTD ตัวอย่าง DTD

ส คีมา XSD

บทนำ XSD XSD วิธีการ XSD <schema> องค์ประกอบ XSD แอตทริบิวต์ XSD ข้อจำกัด XSD

XSD Complex

องค์ประกอบ XSD XSD ว่างเปล่า องค์ประกอบ XSD เท่านั้น XSD Text เท่านั้น XSD ผสม ตัวชี้วัด XSD XSD <ใด ๆ> XSD <anyAttribute> การทดแทน XSD XSD ตัวอย่าง

ข้อมูลXSD

XSD สตริง วันที่ XSD XSD ตัวเลข XSD เบ็ดเตล็ด ข้อมูลอ้างอิง XSD

บริการเว็บ

XML Services XML WSDL XML SOAP XML RDF XML RSS

อ้างอิง

ประเภทโหนด DOM โหนด DOM DOM NodeList DOM NamedNodeMap เอกสาร DOM องค์ประกอบ DOM แอตทริบิวต์ DOM ข้อความ DOM DOM CDATA ความคิดเห็นของ DOM DOM XMLHttpRequest DOM Parser องค์ประกอบ XSLT ฟังก์ชัน XSLT/XPath

XSLT - บนไคลเอนต์


XSLT สามารถใช้เพื่อแปลงเอกสารเป็น XHTML ในเบราว์เซอร์ของคุณ


โซลูชันจาวาสคริปต์

ในบทที่แล้ว เราได้อธิบายว่า XSLT สามารถใช้เพื่อแปลงเอกสารจาก XML เป็น XHTML ได้อย่างไร เราทำสิ่งนี้โดยเพิ่มสไตล์ชีต XSL ลงในไฟล์ XML และปล่อยให้เบราว์เซอร์ทำการแปลง

แม้ว่าจะใช้งานได้ดี แต่ก็ไม่ควรรวมการอ้างอิงสไตล์ชีตในไฟล์ XML เสมอไป (เช่น จะไม่ทำงานในเบราว์เซอร์ที่ไม่ใช่ XSLT)

โซลูชันที่หลากหลายมากขึ้นคือการใช้ JavaScript เพื่อทำการแปลง

โดยใช้ JavaScript เราสามารถ:

  • ทำการทดสอบเฉพาะเบราว์เซอร์
  • ใช้สไตล์ชีตที่แตกต่างกันไปตามเบราว์เซอร์และความต้องการของผู้ใช้

นั่นคือความงามของ XSLT! เป้าหมายการออกแบบประการหนึ่งสำหรับ XSLT คือการทำให้สามารถเปลี่ยนข้อมูลจากรูปแบบหนึ่งเป็นอีกรูปแบบหนึ่งได้ โดยสนับสนุนเบราว์เซอร์ที่แตกต่างกันและความต้องการของผู้ใช้ที่แตกต่างกัน


ไฟล์ XML และไฟล์ XSL

ดูเอกสาร XML ที่คุณเห็นในบทก่อนหน้านี้:

<?xml version="1.0" encoding="UTF-8"?>
<catalog>
  <cd>
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>10.90</price>
    <year>1985</year>
  </cd>
.
.
</catalog>

ดูไฟล์ XML

และสไตล์ชีต XSL ที่มาพร้อมกัน:

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <h2>My CD Collection</h2>
  <table border="1">
    <tr bgcolor="#9acd32">
      <th style="text-align:left">Title</th>
      <th style="text-align:left">Artist</th>
    </tr>
    <xsl:for-each select="catalog/cd">
    <tr>
      <td><xsl:value-of select="title" /></td>
      <td><xsl:value-of select="artist" /></td>
    </tr>
    </xsl:for-each>
  </table>
</xsl:template>

</xsl:stylesheet>

ดูไฟล์ XSL

โปรดสังเกตว่าไฟล์ XML ไม่มีการอ้างถึงไฟล์ XSL

สำคัญ:ประโยคด้านบนระบุว่าไฟล์ XML สามารถแปลงได้โดยใช้สไตล์ชีต XSL ที่แตกต่างกันมากมาย



การแปลง XML เป็น XHTML ในเบราว์เซอร์

นี่คือซอร์สโค้ดที่จำเป็นสำหรับการแปลงไฟล์ XML เป็น XHTML บนไคลเอนต์:

ตัวอย่าง

<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc(filename)
{
if (window.ActiveXObject)
  {
  xhttp = new ActiveXObject("Msxml2.XMLHTTP");
  }
else
  {
  xhttp = new XMLHttpRequest();
  }
xhttp.open("GET", filename, false);
try {xhttp.responseType = "msxml-document"} catch(err) {} // Helping IE11
xhttp.send("");
return xhttp.responseXML;
}

function displayResult()
{
xml = loadXMLDoc("cdcatalog.xml");
xsl = loadXMLDoc("cdcatalog.xsl");
// code for IE
if (window.ActiveXObject || xhttp.responseType == "msxml-document")
  {
  ex = xml.transformNode(xsl);
  document.getElementById("example").innerHTML = ex;
  }
// code for Chrome, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
  {
  xsltProcessor = new XSLTProcessor();
  xsltProcessor.importStylesheet(xsl);
  resultDocument = xsltProcessor.transformToFragment(xml, document);
  document.getElementById("example").appendChild(resultDocument);
  }
}
</script>
</head>
<body onload="displayResult()">
<div id="example" />
</body>
</html>

เคล็ดลับ:หากคุณไม่ทราบวิธีเขียน JavaScript โปรดศึกษา บทช่วย สอน JavaScriptของ เรา

ตัวอย่างที่อธิบาย:

ฟังก์ชัน loadXMLDoc() ทำสิ่งต่อไปนี้:

  • สร้างวัตถุ XMLHttpRequest
  • ใช้เมธอด open() และ send() ของอ็อบเจ็กต์ XMLHttpRequest เพื่อส่งคำขอไปยังเซิร์ฟเวอร์
  • รับข้อมูลการตอบสนองเป็นข้อมูล XML

ฟังก์ชัน displayResult() ใช้เพื่อแสดงไฟล์ XML ที่จัดรูปแบบโดยไฟล์ XSL:

  • โหลดไฟล์ XML และ XSL
  • ทดสอบชนิดของเบราว์เซอร์ที่ผู้ใช้มี
  • หาก Internet Explorer:
    • ใช้เมธอด transformNode() เพื่อใช้สไตล์ชีต XSL กับเอกสาร xml
    • ตั้งค่าเนื้อหาของเอกสารปัจจุบัน (id="example") เพื่อให้มีเอกสาร xml ที่มีสไตล์
  • หากเบราว์เซอร์อื่น:
    • สร้างวัตถุ XSLTProcessor ใหม่และนำเข้าไฟล์ XSL ไปที่มัน
    • ใช้เมธอด transformToFragment() เพื่อใช้สไตล์ชีต XSL กับเอกสาร xml
    • ตั้งค่าเนื้อหาของเอกสารปัจจุบัน (id="example") เพื่อให้มีเอกสาร xml ที่มีสไตล์