我有一个这样的文档:
<?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
any
选项的意思是:
应该包括来自任何片段的共现。
,其中包含document
、properties
和lock
片段。
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
这样的元素名称是相当常见的。将这些包装器元素放在单独的名称空间中是很有用的,这样更容易区分它们。
HTH !