XSLT - บนเซิร์ฟเวอร์

由于并非所有的浏览器都支持 XSLT,另一种解决方案是在服务器上完成 XML 至 XHTML 的转化。

跨浏览器解决方案

在前面的章节,我们讲解过如何在浏览器中使用 XSLT 来完成 XML 到 XHTML 的转化。我们创建了一段使用 XML 解析器来进行转化的 JavaScript。JavaScript 解决方案无法工作于没有 XML 解析器的浏览器。为了让 XML 数据适用于任何类型的浏览器,我们必须在服务器上对 XML 文档进行转换,然后将其作为 XHMTL 发送到浏览器。

这是 XSLT 的另一个优点。XSLT 的设计目标之一是使数据在服务器上从一种格式转换到另一种格式成为可能,并向所有类型的浏览器返回可读的数据。

XML 文件和 XSL 文件

请看这个在前面的章节已展示过的 XML 文档:

<?xml version="1.0" encoding="ISO-8859-1"?>

  
    Empire Burlesque
    Bob Dylan
    USA
    Columbia
    10.90
    1985
  
.
.
.

查看此 XML 文件

以及附随的 XSL 样式表:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0">
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
    <h2>My CD Collection</h2> 
    <table border="1">
      <tr bgcolor="#9acd32">
        <th align="left">Title</th> 
        <th 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>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

ตรวจสอบไฟล์ XSL นี้

โปรดติดตามว่าไฟล์ XML นี้ไม่มีการอ้างอิงไฟล์ XSL

ความสำคัญ:ประโยคดังกล่าวหมายความว่า ไฟล์ XML สามารถใช้ XSL ซีลลิ่งแบบต่างๆ มาใช้เพื่อการเปลี่ยนแปลง

การเปลี่ยน XML ไฟล์เป็น XHTML บนเซิร์ฟเวอร์

นี่คือรหัสแห้งที่บันทึกการเปลี่ยน XML ไฟล์เป็น XHTML บนเซิร์ฟเวอร์:

<%
'บรรทัด XML
set xml = Server.CreateObject("Microsoft.XMLDOM")
xml.async = false
xml.load(Server.MapPath("cdcatalog.xml"))
'บรรทัด XSL
set xsl = Server.CreateObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load(Server.MapPath("cdcatalog.xsl"))
'บวกไฟล์
Response.Write(xml.transformNode(xsl))
%>

คำเตือน:ถ้าคุณไม่ทราบว่าจะเขียน ASP คุณสามารถเรียนรู้จากเราในหนังสือเรียนของเราที่ชื่อว่าASP คำสั่งศึกษา

第一段代碼創建了微軟的 XML 解析器的一個實例,然後把 XML 文件載入了記憶體。第二段代碼創建了解析器的另一個實例,然後把這個 XSL 文件載入了記憶體。最後一行代碼使用 XSL 文件轉換了 XML 文件,并把結果作為 XHTML 發送到您的瀏覽器。任務完成!

請看它如何工作