服务器端是否有任何方式包含XSLT文件?
我的意思是一个文件的输出显示在第二个文件中?
例如:
主XSLT文件:
<xsl:template match="pt">
<xsl:comment>#include virtual="a.xsl"</xsl:comment>
</xsl:template>
第二个XSLT文件a.xslt
:
<xsl:template match="a">
<xsl:variable name="ab" select="'ss'"/>
<p><xsl:value-of select="$ab"/></p>
</xsl:template>
现在输出
p
代码中的ss
为什么我这样做是因为我将页面分成多个组件,之后我将它们的输出包含在主XSLT文件中。每个XSLT文件都有单独的XML数据。
答案 0 :(得分:0)
您不能使用XSLT样式表的输出作为输入,在单个样式表中的vanilla XSLT 1.0中再次对其进行转换。
您需要运行XSLT处理器两次,使用第一次传递的结果作为第二次传递的结果,或者您需要使用支持node-set()
之类的处理器,它允许转换结果树片段回到节点集以进行进一步处理。
https://www.xml.com/pub/a/2003/07/16/nodeset.html
您可以在输出中包含任意XML,只要它是有效的XML,使用document()
函数。
<强> stylesheet.xslt 强>
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<externalData>
<xsl:copy-of select ="document('some.xml')"/>
</externalData>
</xsl:template>
</xsl:stylesheet>
<强> some.xml 强>
<?xml version="1.0" encoding="utf-8"?>
<content>
<foo>bar</foo>
</content>
<强>结果强>
<?xml version="1.0" encoding="utf-8"?>
<externalData>
<content>
<foo>bar</foo>
</content>
</externalData>