XPath 2.0:如何选择当前节点-current()不再可用

XPath 2.0:如何选择当前节点-current()不再可用,xpath,xpath-2.0,Xpath,Xpath 2.0,在XPath 1.0中,有一个函数current(),当我根据当前所在的节点在XML中的其他位置引用节点时,该函数非常有用。 我的XML具有如下结构: <root> <book> <chapter> <section> <para> <image id="1">1.png</image>

在XPath 1.0中,有一个函数current(),当我根据当前所在的节点在XML中的其他位置引用节点时,该函数非常有用。 我的XML具有如下结构:

<root>
    <book>
        <chapter>
            <section>
                <para>
                    <image id="1">1.png</image>
                </para>
            </section>
        </chapter>
    </book>
    <objects>
        <Object>
            <ID>1</ID>
        </Object>
    </objects>
</root>
当我将解析器切换到XPath2.0时,这个表达式会给出一个错误(函数current不可用)

我已经做了一些搜索,但是还没有找到这个函数的直接替代品。有吗

函数
current()
仅在XSLT(所有版本)中可用。它在XPath(任何版本)中都不可用

请参阅规范“”部分中的函数描述。

函数是在XSLT中定义的,而不是在XPath中定义的。它在XSLT1.0、2.0和3.0样式表中的XPath表达式中可用,但在独立的XPath中不可用(在任何版本中,可能作为非一致性扩展除外)

在XPath 2.0中,有一种使用变量的变通方法:

Object[ID=current()/descendant::image[1]/@id]
变成

for $x in descendant::image[1]/@id return Object[ID=$x]

我在Oxygen15.0中使用XPath/XQuery生成器。当我将其设置为使用XPath 1.0时,它接受查询,当我将其设置为使用XPath 2.0时,会出现错误。我会做更多的测试。这就是氧气问题。@Hobbes-我也能在Oxygen16.1中重现这种行为。也许可以尝试搜索/发布。
for $x in descendant::image[1]/@id return Object[ID=$x]