2012-05-29 107 views
0

內我不能訪問的XML數據與x路normaly(它循環OK)不容訪問XML數據。 當試圖訪問循環外的相同數據時,沒有問題。當XSL-varible當在for-each循環使用XSL-varible for-each循環

示例:使用撒克遜他9.3.0.5(Kernow 1.7.2)

缺少什麼我在這裏

<xsl:variable name="teams"> 
     <team name="Team one" cg_id="155370" homepage="http://www.teamone.com" enabled="true" /> 
     <team name="Team two" cg_id="430906" homepage="http://www.teamtwo.com" enabled="true" /> 
</xsl:variable> 

<xsl:for-each select="document('')/*/xsl:variable[@name='teams']/team[@active='true']"> 

    <xsl:value-of select="/DATA/ITEMS/ITEM/HEADERTXT" /> 

</xsl:for-each> 

I'm?

回答

2

井的路徑/選擇當前上下文節點的根節點(文檔節點)。當你與它似乎兩個文件,主要輸入文檔和樣式表文件的工作,並使用for-each訪問樣式表文件中的節點,需要將主文件存儲外for-each例如

<xsl:variable name="primary-doc" select="/"/> 

然後裏面的for-each可以使用

<xsl:value-of select="$primary-doc/DATA/ITEMS/ITEM/HEADERTXT" /> 

所以這是一個解釋,爲什麼你的代碼沒有做你想要什麼,以及如何解決與幾個文件的工作的問題。

然而,使用一個變量節點,但隨後與document('')訪問它的整個方法看起來相當奇怪,如果你有一個變量$teams有一個臨時文件(你在XSLT 2.0一樣),你可以簡單地做

<xsl:for-each select="$teams/team[@active='true']"> 
    <xsl:value-of select="$primary-doc/DATA/ITEMS/ITEM/HEADERTXT"/> 
</xsl:for-each> 

當然有兩個文件,你需要確保你存儲其他比對,每一個改變上下文節點和文檔的變量外面已經顯示。

+0

感謝大家的幫助。 – Vytas999