如何通过xslt读取xml中的外部文件数据

时间:2014-11-20 09:55:01

标签: xml xslt

我有一个XML文件,可以从HTML文件外部读取数据。

XML文件

 <?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="Test.xsl"?>
<!-- Edited by XMLSpy -->
<catalog>
    <cd>
        <title>Empire Burlesque</title>
        <external><![CDATA[2F434A1.htm]]></external>
    </cd>
    <cd>
        <title>Hide your heart</title>
        <external><![CDATA[2F434A1.htm]]></external>
    </cd>
</catalog>

XSLT文件

    <?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited by XMLSpy® -->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th>Title</th>
        <th>External</th>
      </tr>
      <xsl:for-each select="catalog/cd">
      <tr>
        <td><xsl:value-of select="title"/></td>
        <td><xsl:value-of select="external"/></td>
      </tr>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

要打印的数据在html文件中可用,当我们打开这个xml时,我们得到html文件的名称而不是数据。

请向我们提供建议如何在XSLT中引用数据显示xml。

1 个答案:

答案 0 :(得分:1)

您可以使用iframe例如

  <tr>
    <td><xsl:value-of select="title"/></td>
    <td><iframe src="{external}"/></td>
  </tr>

当然,将呈现和包含HTML文档的任务委托给显示XSLT创建的HTML的浏览器。但是XSLT没有办法包含HTML文档,除非你知道它是格式良好的XHTML,在这种情况下你可以使用

  <tr>
    <td><xsl:value-of select="title"/></td>
    <td><xsl:copy-of select="document(external)//body/node()"/></td>
  </tr>