【发布时间】:2015-07-02 05:47:57
【问题描述】:
当我尝试在 XSLT 2.0 的 xsl:for-each 循环中使用 XPath 前同级时遇到语法错误。我见过的所有例子都没有解决这个具体案例。我正在迭代变量 $v1 中的一系列元素。下面是 XSLT 的结构:
<xsl:for-each select="$v1/*">
<xsl:choose>
<!-- minus in previous element means loss -->
<xsl:when
test="matches(preceding-sibling::.[1]/.string(), '-')">
<xsl:copy>
<xsl:sequence
select="concat('Loss: ', ./string()"/>
</xsl:copy>
</xsl:when>
<!-- just copy node and children -->
<xsl:otherwise>
<xsl:sequence select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
这是运行代码的简化。工作版本还有其他可以正确编译的when 子句。我只显示给我编译时错误的when 子句。
错误是指Unexpected token "." after axis name。当我引用当前节点时,我使用matches(./string(), '(\(|\))'),我没有问题。为什么我不能对上一个节点使用相同的.?
我正在使用 Saxon HE9.5.1.4。
【问题讨论】: