我正在使用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编辑器运行时,出现错误:XPST0003: To use XPath 3.1 syntax, you must configure the XPath parser to handle it
。引擎是 Saxon-PE 9.7.0.15。
问题是第 4 行,我试图从与someFeature/someCode
返回的代码相同的childNode
中获取值。
有什么方法可以重写它,这样我就不会收到错误?
我认为你想要的不是$data/mainNode/childNode/[code=someFeature/someCode]/value
$data/mainNode/childNode[code=current()/someFeature/someCode]/value
.