4

我想要一个包含一些 javascript 函数的单独文件。当 XSLT 处理我的应用程序时,我希望它将此文件的所有内容输出到 HTML。我不想引用库,而是在我的 html 中包含所有函数。

我知道,<xsl:include>但我不能在里面包含任何东西或<body>标签。

这可能吗?

4

2 回答 2

3

假设您scripts.xml要包含的文件(例如)是 XML,例如具有类似的内容

<script type="text/javascript">
function foo() { ... }
function bar() { ... }
...
</script>

然后在 XSLT 中你可以简单地使用

<xsl:template match="/">
  <html>
    <body>
      <xsl:copy-of select="document('scripts.xml')/script"/>
    </body>
  </html>
</xsl:template>

如果这没有帮助,那么您需要更详细地解释您拥有哪种文件,您使用哪个 XSLT 版本(XSLT 2.0 也可以读取非 XML 纯文本文件,如 Javascript 代码)。

[编辑] 这是一个使用未解析文本的 XSLT 2.0 示例(需要像 Saxon 或 AltovaXML 这样的 XSLT 2.0 处理器):

<xsl:template match="/">
  <html>
    <body>
      <script type="text/javascript">
         <xsl:value-of select="unparsed-text('file.js')"/>
      </script>

    </body>
  </html>
</xsl:template>
于 2012-06-22T12:28:10.650 回答
1

使用该unparsed-text()函数读取文本文件的内容。

<xsl:stylesheet version="2.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/">
     <html>
      <body>
        <xsl:sequence select="unparsed-text('YourFile.js')"/>
      </body>
     </html>
 </xsl:template>
</xsl:stylesheet>
于 2012-06-22T12:38:37.743 回答