2013-05-13 62 views
2

請考慮我的「A/B」 XPath表達式返回以下節點變量在XSLT如何聲明,指定值,並使用該變量在不同的位置以相同的XSLT

<Q ID="12345"> 
    ---- 
    ---- 
    </Q> 

這是我的可變

這是我正在努力值賦給我的tempVariable可變

<xsl:for-each select="A/B"> 
    <xsl:variable name="tempVariable"><xsl:value-of select="@ID"/></xsl:variable> 
    </xsl:for-each> 

而且畢竟我想使用這個變量

<xsl:if test="$tempVariable='12345'"> 
    .... 
    .... 
    </xsl:if> 

但在這裏據我所知我得到$ tempVariable =「」這是不正確的。

有人可以告訴我我做錯了什麼,或者我該如何以適當的方式做到這一點。 謝謝。

+1

所以Q是B的孩子嗎? ...那麼它應該是Q/@ ID ... – kiwiwings 2013-05-13 16:26:38

+0

Seee類似的問題在這裏發佈的答案http://stackoverflow.com/questions/17066455/declare-global-variable-in-xslt-re-assign-a -value-locally/25338485#25338485 – TonyP 2014-08-16 08:51:59

回答

3

爲什麼會像A/B這樣的路徑選擇Q元素?如果你想使用一個變量,你需要確保它在範圍內。您在示例中顯示的變量範圍在xsl:for-each之內,在xsl:variable元素之後。

如果要使用for-each之外的變量,則需要在for-each之外聲明該變量。

不過我覺得你可以簡單地做

<xsl:variable name="v1" select="A/B/@ID"/> 
<xsl:if test="$v1 = '12345'">..</xsl:if> 

沒有必要爲for-each

+0

謝謝你的回答Martin。我怎樣才能給變量「v1」重新賦值,好像XSLT不允許我爲變量賦值? – 2013-05-14 09:03:12

+0

XSLT是一種聲明性編程語言,賦值和尤其是重新賦值給變量是程序編程的一個概念,假設某些語句的順序執行順序。這不是XSLT的工作方式,如果您需要幫助解決XSLT中的問題並且不熟悉它,那麼請考慮發佈輸入示例以及您想要創建的相應結果示例,然後這裏的人員可以向您展示XSLT方法解決問題。 – 2013-05-14 10:37:37

相關問題