我有一个这样的文档:
<?xml version="1.0" encoding="UTF-8"?>
<a>2015-08-12T09:51:16-05:00</a>
在同一个URI中,我有一个如下所示的属性:
<?xml version="1.0" encoding="UTF-8"?>
<prop:properties xmlns:prop="http://marklogic.com/xdmp/property">
<prop:b>2015-08-12T09:51:16-05:00</prop:b>
</prop:properties>
我在元素a
和prop:b
上有dateTime
类型的范围索引。如果我在a
或prop:b
上运行cts:values,我会从词典中获得相应的值,但当我运行以下命令时,我会得到一个空序列:
cts:value-tuples((cts:element-reference(xs:QName("prop:b")),
cts:element-reference(xs:QName("a"))),("any"))
请帮我找出我遗漏了什么。
版本: 7.0.5
发布于 2018-06-02 03:02:28
any
选项表示:
任何片段的
共现都应该包括在内。
其中任何片段都包括document
、properties
和lock
片段。
然而,问题是,每个共现仍然需要出现在 one和相同的片段中,而不管是哪一个。因此,文档片段中的a
和属性片段中的prop:b
永远不会同时返回。实现这一点的唯一方法是将a
和prop:b
放在同一个片段中。
一种推荐的方法是将文档包装在额外的根元素中,以允许兄弟元素。这是MarkLogic中非常常见的模式,称为信封模式。额外的空间通常用于来源、附加元数据、嵌入的三元组、归一化值等。在您的情况下,它看起来就像这样简单:
<envelope>
<header>
<prop:b>2015-08-12T09:51:16-05:00</prop:b>
</header>
<content>
<a>2015-08-12T09:51:16-05:00</a>
</content>
</envelope>
包装器元素的名称并不重要,但是像envelope
、header
和content
这样的元素名称是相当常见的。将这些包装器元素放在单独的名称空间中会很有用,这样可以更容易地区分它们。
哈!
https://stackoverflow.com/questions/32049760
复制相似问题