我認爲這是一個初學者問題,它涉及跨不同XSLT模板的變量引用。結構是這樣的:關於鏈式XSLT中變量引用的問題
我首先有一個XSLT文件,其中我已經聲明瞭一個模板A,並且在它內部,我基本上遍歷了XML文件的每個記錄(行),例如xml_A ,並且我聲明瞭一個變量來引用xml_A中當前記錄的一個稱爲「id」的特定字段。然後,這個for-each循環中,我需要調用另一個模板B.
<xsl:template name="A">
<LoopA>
<xsl:for-each select="$xml_A//xml_A_row">
<xsl:variable name="id_A" select="id"/>
....
</LoopA>
<xsl:call-template name="B"/>
</xsl:template>
對於B模版,其實我創建的相同目錄下的另一個XSLT文件。該B包含數以百萬計的從XML文件「xml_B」的記錄,但我只希望有相同的ID字段作爲模板A的當前記錄的記錄,這是我如何做的:
<xsl:template name="B">
<LoopB>
<xsl:variable name="id_A" select="id"/>
...
</loopB>
</xsl:template>
這纔是我的題。我用上面的<xsl:variable name="id_A" select="id"/>
來指代上層循環所在的當前記錄的id字段。但是,我不確定這是否正確,我已經做了一些測試,因爲數據文件非常龐大,因此如果這樣做是正確的,就不容易進行視覺測試。
所以我想知道是否有人可以建議,如果上述引用外環變量是正確的,因爲如果我刪除它,XML編輯器會抱怨。
在此先感謝。
從評論
更新我覺得我沒有做它不夠清晰。 實際上
xml_A
或xml_B
都不是 即將被XSLTed的xml文件。 它們只是數據文件,我將 用於從中抽取數據,並且有 另一個XML文件C用於 應用樣式表,它是 爲空。所以在我的樣式表中,使用 提供的答案,我必須有辦法讓 使它參考這個數據存儲 文件xml_A。
你的問題不清楚。這些`loopA`和`loopB`元素在樣式表片段中做了什麼? – 2011-01-24 15:58:26
@Aljandro:LoopA和LoopB只是將在輸出xml中顯示的標籤。 – Kevin 2011-01-24 16:06:02