2011-11-30 82 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()节点相同的字符串值。