gpt4 book ai didi

xml - XPath 2.0 - 1.0 等效?

转载 作者:数据小太阳 更新时间:2023-10-29 02:53:37 25 4
gpt4 key购买 nike

我在生成有效的 XPath 1.0 等效于一个有效的 2.0 示例时遇到了麻烦,它会产生相同的结果(而且,事实上,不会失败)。我必须使用以前版本的原因是 PHP 不支持 XPath 2.0。

我的 xml 看起来像:

<root>
<container id="1">
<elements>
<element value="0"/>
</elements>
</container>
<container id="2">
<elements>
<element value="1"/>
</elements>
</container>
<container id="3">
<elements>
<element value="1"/>
</elements>
</container>
</root>

我想获取 element 节点的 value 属性,其中祖父 container 节点具有属性 id 等于 1 或 3。我还想将上述 id 属性连接到相应的 element value 属性。如果前两个语句不完全可读(这些天我的英语有点生疏),这就是我想要实现的:

1:0
3:1

格式为:

[container id]:[element value]

我编写的有效 XPath 2.0 路径给出了预期的结果:

//container[@id=1 or @id=3]//element/concat(../../@id, ":", @value)

但是,使用 XPath 1.0 tester 运行它导致以下错误:

ERROR - Failed to evaluate XPath expression: Unknown nodetype: concat

这让我感到困惑,因为 concat 出现在 XPath 1.0 specification 中.

我尝试使用不同的方法,比如使用这样的路径:

//container[@id=1 or @id=3]/@id | //container[@id=1 or @id=3]//element/@value

它给出了这样的结果集:

1
0
3
1

我可以有问题地解析以达到预期的格式,但我不确定联合是否会正确配对相应的 idvalue。谁能指出我正确的方向?

最佳答案

您不能在普通的 XPath 1.0 中执行此操作。没有办法进行任何类型的显式循环,让它成为 XPath 2.0 的简化 FLWOR 表达式或将函数应用为轴步骤。

获取 XPath 中的容器,并在 XPath 之外进行进一步处理,或者嵌入 XPath 2.0(或 XQuery,它是一个超集)处理器。

关于xml - XPath 2.0 - 1.0 等效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21939795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com