在文档和属性片段中都有元素的值元组不工作



我有一个这样的文档:

<?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>

我在元素aprop:b上有dateTime类型的范围索引。如果我在aprop:b上运行cts:values,我将从词典中获得相应的值,但是当我运行以下命令时,我将得到一个空序列:

cts:value-tuples((cts:element-reference(xs:QName("prop:b")),
   cts:element-reference(xs:QName("a"))),("any"))

请帮我弄清楚我错过了什么。

版本号:7.0.5

any选项的意思是:

应该包括来自任何片段的共现。

,其中包含documentpropertieslock片段。

但问题是,无论在中哪一个片段,每个共现仍然需要在中出现。因此,文档片段中的a和属性片段中的prop:b永远不会作为共现返回。唯一的方法是将aprop: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>

包装器元素的名称并不重要,但是像envelopeheadercontent这样的元素名称是相当常见的。将这些包装器元素放在单独的名称空间中是很有用的,这样更容易区分它们。

HTH !

最新更新