2010-05-26 120 views
3

假設我有一個XSL如下:如何將參數值傳遞給XSL?

<xsl:stylesheet 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="1.0"> 
    <xsl:output method="html" encoding="utf-8" omit-xml-declaration="yes" indent="yes"/> 
    <xsl:param name="sortKey" select="'firstname'"/> 
</xsl:stylesheet> 

然後,XML如下

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<?xml-stylesheet type="text/xsl" href="XYZ.xsl"?> 
<ABC> 
    <firstname>GREG</firstname> 
</ABC> 

我想傳遞一個值從XML的XSL參數名字。我可以這樣做嗎?如果是,如何?

它看起來與答案,這是不可能的。

怎麼樣從相同的XML讀取值並將其分配給該參數。這可以做到嗎?如果是,如何?

+1

但是,如果您已經有XML中的數據,爲什麼要使用參數? – 2010-05-26 07:32:27

回答

5

因爲你想作爲一個參數的值是在你的基地XML,你可以簡單地輸入一個XPath表達式用於指定一個默認值paramater。

<xsl:param name="sortKey" select="/ABC/firstname"/> 

只需用一個變量,也將是有效的這裏,如果pH值總是將是在XML

<xsl:variable name="sortKey" select="/ABC/firstname"/> 

然後,使用此參數/變量,你會簡單地做像這樣

<xsl:template match="/"> 
    <xsl:value-of select="$sortKey" /> 
</xsl:template> 

這隻會輸出值GREG

1

W3C已經沒有建議的機制。可以定義一個新的處理指令,可以做到這一點。但是,如果你在瀏覽器或其他現有的工具使用該計劃,它不是將參數傳遞到它們通過處理指令調用樣式表一個可行的選擇。

另一種選擇是將備用文件在你的「參數」,並使用類似的document() function加載它。

+0

如何,如果我可以讀取相同的XML值,並賦值給參數?這可以做到嗎? – Manish 2010-05-26 07:14:12