2014-02-23 91 views
1

我米使用這樣調用JavaScript通過XSL功能通過兩個或多個參數:如何使用XSL屬性

<xsl:attribute name="onclick"> 
    <xsl:text>Toggle(</xsl:text> 
    <xsl:value-of select="$i"/> 
    <xsl:text>)</xsl:text> 
    </xsl:attribute> 

和功能是這樣的:

function Toggle(ID) 
    { 
     ------ 
    } 

如果我有傳遞兩個參數呢? 即我怎樣才能調用這個功能?

function Toggle(ID1, ID2) 
    { 
     ----- 
    } 

目前我在做這個:

<xsl:attribute name="onclick" xmlns:xsl="#unknown"> 
     <xsl:text>Toggle(</xsl:text> 
     <xsl:value-of select="$i" /> 
     <xsl:text>,ID)</xsl:text> 
    </xsl:attribute> 

這是正確的???

回答

3

如果你想在一個字符串中傳遞JavaScript的,那麼你可以這樣單引號括起來,如果你想在字符串常量foo在傳給你會用

<xsl:attribute name="onclick"> 
    <xsl:text>Toggle(</xsl:text> 
    <xsl:value-of select="$i" /> 
    <xsl:text>, 'foo')</xsl:text> 
</xsl:attribute> 

我會檢查是否字面結果元素和屬性值溫度晚不允許你,如果你想有一個input元素的onclick屬性編寫更緊湊和可讀性,比如

<input type="button" onclick="Toggle({$i}, 'foo');"/> 

+0

哦!文字引用,那是我想念我猜想..謝謝 – Moranis

2

如果ID1和ID2表示變量(如你與ID所示),它很可能是這樣的,假設$1$2是變量:

<xsl:attribute name="onclick" xmlns:xsl="#unknown"> 
     <xsl:text>Toggle(</xsl:text> 
     <xsl:value-of select="$i1" /> 
     <xsl:text>,</xsl:text> 
     <xsl:value-of select="$i2" /> 
     <xsl:text>)</xsl:text> 
</xsl:attribute> 
+0

不,ID2是靜態的,我必須傳遞一些靜態字符到函數中。基本上,該字符將被附加到ID1以使其唯一。 – Moranis

+0

XSLT只是生成文本。除非您必須以二進制方式生成該文本(將不同的數據傳遞給XSL處理器以生成不同的字符串),否則不需要有變量。你聲明的任何'$ n'都表示你的XSL中的某個地方有一個''或''。 Params從樣式表外部接收數據。 – helderdarocha