我發現無法使用-param來使用應用程序模板。作爲一個例子,我已經破解了w3schools中給出的例子。爲什麼我無法使用參數在XSL中使用apply-templates?
XSL
<xsl:template match="/">
<xsl:apply-templates>
<xsl:with-param name="test" select="'has this parameter been passed?'"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cd">
<xsl:param name="test"></xsl:param>
parameter:
<xsl:value-of select="$test"></xsl:value-of>
</xsl:template>
XML
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
<cd>
<title>Hide your heart</title>
<artist>Bonnie Tyler</artist>
<country>UK</country>
<company>CBS Records</company>
<price>9.90</price>
<year>1988</year>
</cd>
</catalog>
(希望),你會看到,測試參數沒有被傳遞到CD模板。使用呼叫模板時可以使用它,但不能使用應用模板。這是怎麼回事?我正在使用XSL 1.0。請忽略我傳遞硬編碼參數的事實 - 這僅僅是一個例子。
沒趕不上 - 試試這個解決方案。似乎有些東西在沒有指定模板路徑時出錯。 – Goran 2009-02-26 11:58:16
是的,你是對的。無論如何,我相信選擇中的//是糟糕的形式。而且,這個雙斜線似乎是傳遞參數的關鍵。在我的真實代碼中,我已經在select中傳遞了一個節點,但是,該參數僅在使用//爲節點添加前綴後才被傳遞。爲什麼? – darasd 2009-02-26 12:03:33
好吧 - 現在這是行爲奇怪 - 這個問題沒有4個答案也編輯得到顯示,然後隨機丟失... – Goran 2009-02-26 12:04:27