如何在一个XSLT文件中包含另一个输出?
问题描述:
服务器端有没有包含XSLT文件的方法?
我的意思是一个文件的输出显示在第二个文件中?如何在一个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>
现在输出将是
SS在
p
标签
为什么我这样做是因为我将我的页面分成多个组件,之后将其输出包含在主XSLT文件中。每个XSLT文件都有单独的XML数据。
答
您不能使用XSLT样式表的输出作为输入,以在单个样式表中再次在香草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>
你可能需要在'XSL读了起来:含ude'(和'xsl:import')。例如,请参阅http://www.xml.com/pub/2000/11/01/xslt/index.html。 –
@TimC xsl:include(和xsl:import使用的包含文件和使用那里模板使用calltemplate ..我需要不同的东西 – naveen
@TimC xsl:include(和xsl:import使用的包含文件,并使用那里模板使用calltemplate ..我需要不同的东西。例如,如果写入 a.xslt include-html> .it包含调用代码a.xslt –
naveen