【发布时间】:2015-07-22 12:06:12
【问题描述】:
如何使用 xpath 1.0 语句仅选择第一个和最后一个节点?
Vehicle/Car[position() = 1] 工作正常
Vehicle/Car[position() = last] 工作正常
但是,当我尝试将它们放在一起时,它只会带回第一个结果而忽略第二个条件。 我已经厌倦了我认为应该工作的东西:
Vehicle/Car[position() = 1 or position() = last()]
但这只会带回第一个位置。
我也尝试过以下替代方法:
Vehicle/Car[position() = 1][position() = last()]
它们似乎只返回第一个而不是第一个和最后一个。
已根据要求添加*示例输入和输出。
输入示例:
<Vehicle>
<Car>
<CarNumber>123</CarNumber>
</Car>
<Car>
<CarNumber>456</CarNumber>
</Car>
<Car>
<CarNumber>789</CarNumber>
</Car>
</Vehicle>
预期输出:
123789
实际输出:
123
xslt:
<xsl:template match="/">
<xsl:value-of select="Vehicle/Car[position() = 1 or position() = last()]"/>
</xsl:template>
【问题讨论】:
-
你的第一个代码运行良好
-
我制作 xml
<Vehicle> <Car>Opel</Car> <Car>Mazda</Car> <Car>Chevrolet</Car> </Vehicle>xpath 返回Element='<Car>Opel</Car>' Element='<Car>Chevrolet</Car>' -
请在您的
xpath问题中包含示例XML。 -
如果您使用的是 XSLT-1.0,并且此 xpath 位于
xsl:value-of中,它只会为您提供第一个值。尝试使用 XSLT-2.0 并期待这两个值。 -
@gardni 请向我们展示输入、预期输出和完整代码。