2011-11-30 33 views
1

我在XSLT一行代碼,但我不明白它的某些部分:請給我解釋一下這行代碼

<xsl:if test="not(following::lieferant/text()=current()/text)"> 
     . 
     . 
     . 
     . 
</xsl:if> 

是什麼線是什麼意思?

+0

'0'應該是''''? – 2011-11-30 13:26:17

+0

是的,這是真的 –

回答

3

這是XPath的非常漂亮的無效行:

"not(following::lieferant/text()0current()/text" 

在哪裏結束)

也許你的意思是這樣的:

"not(following::lieferant/text() = current()/text())" 

這意味着檢查以下lieferant元素(德語?)的文本()不等於當前節點(在foreach內的文字? )

但這些只是猜測。

編輯:

"not(following::lieferant/text() = current()/text)" 

所以你說選擇的元素,你目前正在(以下:: lieferant),其文字內容不符合的文本元素的含量等於以下所有lieferant元素的當前()節點。

+0

哦,是的,我更新了它,這是德國:) –

+0

謝謝你的答案。但以下內容是什麼? –

+0

@BabakBst你的current()節點是否有文本元素? – FailedDev

1

很簡單

<xsl:if test="not(following::lieferant/text()=current()/text)"> 
    <!-- Processing here ... --> 
</xsl:if> 

意味着

執行"Processing here ..."只有如果心不是有相同的字符串值,因爲一些在text孩子的following::lieferant/text()節點當前(由當前模板匹配或由最內層xsl:for-each指令選擇和處理)節點。

換句話說,沒有一對節點,一個following::lieferant/text()和另一個current()/text - 它們都具有相同的字符串值。

所提供的代碼可能是一個錯字:

<xsl:if test="not(following::lieferant/text()=current()/text())"> 
    <!-- Processing here ... --> 
</xsl:if> 

在這種情況下,在上述說明仍然是正確的,所不同的是該特定的條件現在是:不存在一對節點,一個following::lieferant/text()和另一個current()/text() - 它們都具有相同的字符串值。

換句話說:當前匹配(或由最內層xsl:for-each)節點選擇的文本節點子節點都不具有與任何following::lieferant/text()節點相同的字符串值。