2012-11-05 58 views
0

就在這個link.XSLT - 編程技術

XSLT的編程奧利弗·貝格爾有效的方法的問題,我們知道,使用此代碼,我們可以消除冗長的XSL選擇方法

concat(
substring(Str1,1 div Cond), 
substring(Str2,1 div not(Cond)) 
) 

但是我們能指定在'條件'中,只是爲了檢查是否存在節點?

我們不能指定

concat(
substring(Str1,1 div test="/node"), 
substring(Str2,1 div not(test="/node")) 
) 

這將引發語法錯誤。

+1

電導率必須是一個布爾XPath表達式。 (test =「/ node」)是一個布爾XPath表達式,但可能不是您想要的那個,並且可能會失敗,因爲您處於不允許使用雙引號的上下文中。使用布爾(/節點)。 –

回答

2

試試這個表達式(其中節點是要測試的節點的名稱):

<xsl:value-of select="concat(
    substring('Yes', 1 div not(not(/root/node))), 
    substring('No', 1 div not(/root/node)))"/> 

或者更好的

<xsl:value-of select="concat(
    substring('Yes', 1 div boolean(/root/node)), 
    substring('No', 1 div not(/root/node)))"/> 

當應用於此XML,然後輸出

<root> 
    <node>Test</node> 
</root> 

但是,當施加到該XML中,是輸出

<root> 
    <othernode>Test</othernode> 
</root> 
+0

好,+1,但最好用'boolean()'替換'not(not())' –

+0

啊,是的,那會更好。爲了證明這一點,我修改了我的答案。謝謝! –