cts:element-query(xs:QName("elm"),cts:and-query(()))
将给出元素榆树存在的所有片段.
同样地,如果我想要所有在elm下存在属性(例如atr)的文档,我还需要做什么?
cts:element-attribute-value-query()
要求我传递一个值来匹配属性值.但我想只检查属性的存在,而不管它包含什么值.
在我的文档中,有两个元素(<a>和<b>),其中存在范围索引(相同类型).我想要所有那些<a>和<b>的值相同的文档.我知道使用cts:element-value-co-occurrences()
我可以从每个片段中获取<a>和<b>的值对并比较这些值.但是,如何返回找到匹配的片段?或者有更简单的方法吗?我想要的只是要使用的范围索引.
我有以下xmls:
sample1.xml
<root>
<subjectInfo>
<subject id="001"/>
<subject id="002" role="cross"/>
</subjectInfo>
</root>
sample2.xml
<root>
<subjectInfo>
<subject id="002"/>
<subject id="001" role="cross"/>
</subjectInfo>
</root>
我正在搜索id
属性subject
值为"001"但是role
(如果它在那里)相同subject
元素的文档不是"交叉".所以,在我的例子中结果应该包含sample1.xml
而不是sample2.xml
我认为以下查询可以完成这项工作:
<code>
cts:search(/root,
cts:near-query((
cts:element-attribute-value-query(xs:QName("subject"),xs:QName("id"),"001"),
cts:not-query(cts:element-attribute-value-query(xs:QName("subject"),xs:QName("role"),"cross"))),0)
)
</code>
Run Code Online (Sandbox Code Playgroud)
但它没有(返回一个空序列).请给我一个.
我的文档如下所示:
<a>
whatever
</a>
Run Code Online (Sandbox Code Playgroud)
如果我运行/
或/a
对整个文档返回(至少有效)。如果我运行/a/..
,则返回整个文档。但/..
返回一个空序列考虑 /
和/a
正在返回相同的节点怎么来的/a/..
和/..
有什么不同?
我在ML文档中发现了以下内容:范围索引允许服务器将值映射到片段,并将片段映射到值...前者的功能用于支持"范围谓词"....后者用于支持快速排序任何人都可以向我解释一下.描述如何保持这种映射的某种图表将非常有帮助.
使用xdmp:plan可以查看cts的计划:search()和可搜索的Xpath.但为什么像这样的表达 cts:search()/Xpath
不可规划?另外,我会问同样的问题cts:uri-match()
.
假设,我有一堆带有根元素的医学期刊作为medicalJournal.All医学期刊属于'mj'集合,'mj'集合只有医学期刊.其他类型的期刊也有自己的集合(physicsJournal - >'pj')为了检索所有医学期刊,我写了世界上最简单的查询:
cts:search(/medicalJournal,cts:and-query(()))
Run Code Online (Sandbox Code Playgroud)
但是,我的同行说为什么不对'pj'而不是空和查询放置一个集合查询,从而添加一个额外的约束.理由是,这可能会避免获取所有片段id的列表虽然当我第一次运行集合查询时,查询表显示了一些列表缓存未命中.请告诉我应该选择哪个选项?