XSL节点选择引发XPath语法错误

时间:2017-06-08 19:41:10

标签: xml xslt xpath

我正在使用Apache FOP生成PDF。

我有以下XSL转换:

<fo:block>
    <xsl:choose>
        <xsl:when test="$data/mainNode/childNode/code = someFeature/someCode">
            <xsl:value-of select="$data/mainNode/childNode/[code=someFeature/someCode]/value" />                
        </xsl:when>
        <xsl:otherwise>
            <xsl:text>Bar</xsl:text>
        </xsl:otherwise>
    </xsl:choose>
</fo:block>

XML结构示例:

<mainNode>
    <childNode>
        <code>A</code>
        <value>1</value>
    </childNode>
    <childNode>
        <code>B</code>
        <value>2</value>
    </childNode>
    <childNode>
        <code>C</code>
        <value>3</value>
    </childNode>
</mainNode>

通过Oxygen XML Editor运行时,我收到错误消息:XPST0003: To use XPath 3.1 syntax, you must configure the XPath parser to handle it。发动机是Saxon-PE 9.7.0.15。

问题是第4行,我试图从childNode获取与someFeature/someCode返回的代码相同的代码。

有什么方法可以重写这个,所以我不会收到错误吗?

1 个答案:

答案 0 :(得分:1)

我认为不是$data/mainNode/childNode/[code=someFeature/someCode]/value而是$data/mainNode/childNode[code=current()/someFeature/someCode]/value