2012-07-04 99 views
3

如果一個特定的屬性返回一個特定的值,我想給一個變量賦值。在這裏,如果pr:all/[@pr:name = current()/ @ cx:name]/pr:properties /(@ ls:middlename)是「cengie」,則在此我想將值「young」賦值給可變「person」 」。那可能嗎?根據xslt中的條件將一個字符串賦值給一個變量

<xsl:variable 
    name='person' select='pr:all/[@pr:name=current()/@cx:name]/pr:properties/(@ls:middlename)'> 
</xsl:variable> 
+0

XSLT不「分配「和」返回「,它匹配和轉換,可能是一個措辭的細微差別,也許是一個範式的誤解 –

+4

XSLT談判」綁定「一個變量的值」綁定「和」分配「之間的區別是一個變量綁定只要它被宣佈並且保持與價值相同的價值,那麼它就是一個價值只要它在範圍內。當然,綁定它的值可以通過運行時評估的條件表達式來確定。 –

+0

感謝Michael的解釋! – harsh

回答

18

你可以把任何XSLT代碼XSL中:變量,結果將被分配到變量。在這種情況下,你可以使用一個的xsl:如果檢查你的病情

​​

如果你想在這裏的「別人的情況下,你可以使用XSL :選擇代替。

+0

感謝您的回答。你能告訴我,如果「xsl:if test」爲假,變量的值是多少。 – harsh

+0

如果答案是錯誤的,變量將是空的。實際上它將是一個空字符串。 –

+0

謝謝隊友! :) – harsh

3

檢查:https://github.com/wildfly/wildfly/blob/master/testsuite/integration/src/test/xslt/enableTrace.xsl

<xsl:template match="//l:subsystem/l:periodic-rotating-file-handler" use-when="$trace"> 
    <xsl:choose> 
     <xsl:when test="$trace='none'"> 
      ... 
     </xsl:when> 
     <xsl:otherwise> 
      ... 
     </xsl:otherwise> 
    </xsl:choose> 
</xsl:template> 

應用,爲您的代碼......

+0

謝謝,但這不是我正在尋找.. – harsh

+0

那麼,把它放入變量,就是這樣 - 不是嗎? –

+0

@TimC和Ondra回答你的問題,因爲它是寫和通常解釋。如果這不是你需要的答案,你將不得不更好地解釋你想要的東西。 –

2
<xsl:variable name='person' 
    select='pr:all/[@pr:name=current()/@cx:name]/pr:properties/(@ls:middlename)'> 

</xsl:variable> 

這在語法上是非法的XPath - 1.0和2.0。位置步驟不能以謂詞開始。違規的子字符串是:/[

另一個語法錯誤(這次XML良好格式之一)是上面引用的<xsl:variable>元素沒有關閉。

您需要糾正此問題。

除此之外,這裏是一個XSLT 2.0溶液(XPath表達式的上方和<xsl:variable>的引用的語法校正:

在XSLT 2.0:

<xsl:variable name="person" as="xs:string?" select= 
    "'young'[current()/pr:all[@pr:name=current()/@cx:name] 
              /pr:properties 
               [@ls:middlename='cengie'] 
      ]"/> 
+0

非常感謝您的建議。我根據你的建議改變了表情。感謝您指出了這一點。 – harsh

+0

@harsh:不客氣。 –

相關問題