【发布时间】:2014-05-26 16:07:38
【问题描述】:
我正在寻找 XPath/XQuery 中 descendant-or-self 的替代品。我们使用 XQuery 来查询 MarkLogic DB。我想要替换 descendant-or-self 的原因是我试图将 50 个值与 XML 结构中的属性值进行匹配。 XML 说它有超过 100 万个节点,所以我必须每次做 100 万次后裔或自我来找到精确匹配的节点,这是非常昂贵的操作。下面给出了基本的 XML 层次结构
A (@val=1) -> B (@Val="2") -> C (@val="3") -> A -> A -> A -> A(不定)
上面我正在尝试匹配每个节点中的val 属性以找到确切的节点。由于A 节点在C 之后出现在不同级别,我无法使用任何MarkLogic API 来找到精确匹配的节点,因为我不知道它在XML 中的哪个级别匹配。 (假设分片在B级完成)
【问题讨论】:
-
请提供速度慢的 XPath。
-
这是您当前的 XPath:
A[@val=1]/B[@Val="2"]/C[val="3"]//A吗? -
你说 XML 说它有超过 100 万个节点,所以我不得不做一百万次后裔或自我操作——这是一个了不起的不合逻辑的说法。你能解释一下吗?