这是我的XSLT 1.0代码:
<xsl:for-each select = "segment">
<xsl:if test ="position() != 1 or position() != last()">
<notfirstorlast></notfirstorlast>
</xsl:if>
</xsl:for-each>
这应该添加一个<notfirstorlast>
元素,该元素在所有<segment>
个节点中为第一个和最后一个节点排除。但它不起作用。它将在没有或声明的情况下工作。
这个作品:
<xsl:if test ="position() != 1>
我的陈述有问题。
答案 0 :(得分:6)
必须满足这两个条件,因此您必须使用“和”代替“或”:
<xsl:if test ="position() != 1 and position() != last()">
我的陈述有问题。
是的,确切地说。使用“或”,所有元素都有资格获得notfirstorlast
元素,因为所有元素都是“不是第一个”或“不是最后一个”元素。< / p>
<强>输入强>
<?xml version="1.0" encoding="UTF-8"?>
<root>
<segment/>
<segment/>
<segment/>
</root>
<强>样式表强>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/root">
<xsl:for-each select = "segment">
<xsl:copy>
<xsl:if test ="position() != 1 and position() != last()">
<notfirstorlast></notfirstorlast>
</xsl:if>
</xsl:copy>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
<强>输出强>
<?xml version="1.0" encoding="utf-8"?>
<segment/>
<segment>
<notfirstorlast/>
</segment>
<segment/>