當我嘗試在XSLT 2.0的xsl:for-each循環中嘗試使用XPath之前的兄弟時,遇到語法錯誤。我看到的例子都沒有涉及這個具體案例。我正在迭代變量$ v1中的elemente序列。以下是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。