如何在 xml 中查找具有特定值的属性而不将特定元素放入 MarkLogic Xquery?

问题描述 投票:0回答:1
<book>
    <abc x="1">value</abc>
    <xyz>sadf</xyz>
</book>

<book>
    <ijk x="1">value</ijk>
    <xyz>sadf</xyz>
</book>

<book>
    <plm x="1">value</plm>
    <xyz>sadf</xyz>
</book>

我有像上面这样的xml,我想要属性x=1(元素名称不固定)的所有xml。我可以使用 XPath 轻松完成此操作,但我需要在巨大的数据集上运行此查询,那么我们是否有任何 cts 查询来使其更快?或者更好的方式来查询这个?

xquery marklogic marklogic-10
1个回答
0
投票

不幸的是,查询属性的内置 cts:* 函数必须指定元素 QName。如果您不知道哪些元素可能具有该属性,那么创建字段索引TDE可能会更容易。

一种选择是使用通用 XPath 创建一个 path 字段,例如

//*/@x
/book/*/@x

如果您启用字段值搜索的选项,那么您可以使用如下查询:

cts:field-value-query("x", "1")
© www.soinside.com 2019 - 2024. All rights reserved.