请解释一下这行代码

时间:2011-11-30 13:24:03

标签: xml xslt

我在XSLT中有一个行代码,但我不理解它的某些部分:

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

这条线是什么意思?

2 个答案:

答案 0 :(得分:3)

这是一个非常好的无效xpath行:

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

结束)在哪里?

也许你的意思是:

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

这将意味着检查以下lieferant元素(Deutsch?)的text()是否不等于当前节点的文本(在foreach中?)

但这些只是猜测。

修改

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

所以你说选择你当前所在的元素(跟随:: lieferant)之后的所有lieferant元素,其文本内容不等于当前()节点的文本元素的内容。

答案 1 :(得分:1)

非常简单

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

表示

如果没有"Processing here ..."节点与当前的某些following::lieferant/text()子节点具有相同的字符串值,则执行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()节点的字符串值都不相同。