首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >cts:文档和属性片段中元素都不起作用的值元组

cts:文档和属性片段中元素都不起作用的值元组
EN

Stack Overflow用户
提问于 2015-08-17 19:56:35
回答 1查看 448关注 0票数 1

我有一个这样的文档:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
   <a>2015-08-12T09:51:16-05:00</a>

在同一个URI中,我有一个如下所示的属性:

代码语言:javascript
复制
<?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,我会从词典中获得相应的值,但当我运行以下命令时,我会得到一个空序列:

代码语言:javascript
复制
cts:value-tuples((cts:element-reference(xs:QName("prop:b")),
   cts:element-reference(xs:QName("a"))),("any"))

请帮我找出我遗漏了什么。

版本: 7.0.5

EN

回答 1

Stack Overflow用户

发布于 2018-06-02 03:02:28

any选项表示:

任何片段的

共现都应该包括在内。

其中任何片段都包括documentpropertieslock片段。

然而,问题是,每个共现仍然需要出现在 one和相同的片段中,而不管是哪一个。因此,文档片段中的a和属性片段中的prop:b永远不会同时返回。实现这一点的唯一方法是将aprop:b放在同一个片段中。

一种推荐的方法是将文档包装在额外的根元素中,以允许兄弟元素。这是MarkLogic中非常常见的模式,称为信封模式。额外的空间通常用于来源、附加元数据、嵌入的三元组、归一化值等。在您的情况下,它看起来就像这样简单:

代码语言:javascript
复制
<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这样的元素名称是相当常见的。将这些包装器元素放在单独的名称空间中会很有用,这样可以更容易地区分它们。

哈!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32049760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档