3

考虑以下 xml:

<Record>
   <Author>
      <FirstName>David</FirstName>
      <LastName>Raj</LastName>
   </Author>
   <Author>
      <FirstName>Sim</FirstName>
      <LastName>Son</LastName>
   </Author>
   <Editor>
      <FirstName>Sandy</FirstName>
      <LastName>John<LastName>
   </Editor>
</Record>

目前我用来element-query<Author>.

<constraint name="Author">
    <element-query ns="" name="Author" />
    {$OPTIONS}
</constraint>

我不想搜索或获取<LastName>元素的值,而只需要<FirstName>Author 元素的值。是否可以为此创建嵌套约束?如果可能的话,有人可以详细说明吗?

谢谢。

4

2 回答 2

3

索菲:

您在查询中提供包含元素的条件,而不是在约束中。

在这种情况下,您将创建两个约束:element-query对 ContentOwnerType 的约束和对 Description 的值约束。然后,在查询中,element-constraint-query对于 ContentOwnerType 应该包含value-constraint-query对 Description。

这是文档element-constraint-query

http://docs.marklogic.com/guide/search-dev/structured-query#id_64263

作为替代方案,您可以定义一个包含 ContentOwnerType 并排除 Code 的字段:

http://docs.marklogic.com/guide/admin/fields#id_78911

于 2013-05-31T12:21:50.103 回答
0

如果我们只需要显示 FirstName

我们可以创建约束作者指

FirstName(为此我们需要在 FirstName 上创建索引)

<search:constraint name="Author">
  <search:range collation="http://marklogic.com/collation" type="xs:string" facet="true">
     <search:facet-option>ascending</search:facet-option>
     <search:element ns="" name="FirstName"/>
  </search:range>
</search:constraint>

或者

我们可以有一个 Author/FirstName 的路径索引,以确保 FirstName 仅在 Author 下。

<search:constraint name="Author">
   <search:range collation="http://marklogic.com/collation" type="xs:string" facet="true">
      <search:facet-option>ascending</search:facet-option>
       <search:path-index>*:Author/*:FirstName</search:path-index>
   </search:range>
</search:constraint>

希望这可以帮助 :)

于 2013-11-25T09:01:18.593 回答