我想要一个包含一些 javascript 函数的单独文件。当 XSLT 处理我的应用程序时,我希望它将此文件的所有内容输出到 HTML。我不想引用库,而是在我的 html 中包含所有函数。
我知道,<xsl:include>
但我不能在里面包含任何东西或<body>
标签。
这可能吗?
我想要一个包含一些 javascript 函数的单独文件。当 XSLT 处理我的应用程序时,我希望它将此文件的所有内容输出到 HTML。我不想引用库,而是在我的 html 中包含所有函数。
我知道,<xsl:include>
但我不能在里面包含任何东西或<body>
标签。
这可能吗?
假设您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>
使用该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>