2017-09-05 122 views
0

服務器端有沒有包含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 .it包含調用代碼a.xslt – naveen

回答

0

您不能使用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> 
相關問題