如何在一个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数据。

+1

你可能需要在'XSL读了起来:含ude'(和'xsl:import')。例如,请参阅http://www.xml.com/pub/2000/11/01/xslt/index.html。 –

+0

@TimC xsl:include(和xsl:import使用的包含文件和使用那里模板使用calltemplate ..我需要不同的东西 – naveen

+0

@TimC xsl:include(和xsl:import使用的包含文件,并使用那里模板使用calltemplate ..我需要不同的东西。例如,如果写入 a.xslt include-html> .it包含调用代码a.xslt – naveen

您不能使用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>