【问题标题】:Can an array of atomic values be a node name in an XPath query?原子值数组可以是 XPath 查询中的节点名称吗?
【发布时间】:2020-11-20 18:18:21
【问题描述】:

对于查询“PROJECT[1]/PROPOSAL[1]/SOLUTION[1]/UNIT[1]/distinct-values(LANDING_DOOR_FRAME_FINISH_FRONT/LANDING_DOOR_FRAME_FINISH_FRONT_VALUE)”,如果 distinct-values() 只返回一个值,这似乎有效, 但否则抛出异常。 (顺便说一句,这个查询不是我的主意)。

在查询中使用原子值作为节点名称是不是一个坏主意?或者可以吗?如果没问题,只有返回一个值就可以了吗?

为此从 Java 调用 Saxon。

【问题讨论】:

    标签: saxon xpath-3.1


    【解决方案1】:

    这是一个完全有效的查询,无论distinct-values() 是否只返回一个值。

    (如果失败,请向我们展示重现问题:重现问题所需的所有数据,以及错误消息)。

    但是您的问题是关于使用原子值作为节点名称,这表明您不理解表达式的含义。 distinct-values() 返回的值不必是节点名,也不能用作节点名。

    这些天我更喜欢使用“!”当 RHS 表达式返回原子值而不是节点时,运算符。它是等效的,但更清晰。

    【讨论】:

    • 那么这个查询到底发生了什么?它是否将 PROJECT[1]/PROPOSAL[1]/SOLUTION[1]/UNIT[1]/LANDING_DOOR_FRAME_FINISH_FRONT/LANDING_DOOR_FRAME_FINISH_FRONT_VALUE 的不同值作为原子值返回?或者是其他东西?谢谢
    • @DavidThielen,如果您在路径表达式的最后一步中有函数调用,例如foo/bar/distinct-values(foobar) 那么它基本上是for $bar in foo/bar return distinct-values($bar/foobar),见w3.org/TR/xpath-31/#id-path-operator,所以最后你得到所有不同值的连接序列,只有,给定你的路径示例PROJECT[1]/PROPOSAL[1]/SOLUTION[1]/UNIT[1],看来你只选择了一个@987654326 @ 不管怎样,其后代 LANDING_DOOR_FRAME_FINISH_FRONT/LANDING_DOOR_FRAME_FINISH_FRONT_VALUE 的不同值被计算出来。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2012-05-15
    相关资源
    最近更新 更多