首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Marklogic中创建元素范围索引?

如何在Marklogic中创建元素范围索引?
EN

Stack Overflow用户
提问于 2012-05-14 06:56:52
回答 3查看 1.4K关注 0票数 3

我有以下xml:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<patent-assignment>
  <assignment-record>
    <correspondent>
      <name>NORTH AMERICA INTERNATIONAL PATENT OFFIC</name>
      <address-1>P.O. BOX 506</address-1>
      <address-2>MERRIFIELD, VA 22116</address-2>
    </correspondent>
   </assignment-record>
  <patent-assignors>
    <patent-assignor>
      <name>TSAI, YU-WEN</name>
      <execution-date>
    <date>20050331</date>
      </execution-date>
    </patent-assignor>
    <patent-assignor>
      <name>HUANG, CHENG-I</name>
      <execution-date>
    <date>20050331</date>
      </execution-date>
    </patent-assignor>
  </patent-assignors>
  <patent-assignees>
    <patent-assignee>
      <name>FARADAY TECHNOLOGY CORP.</name>
      <address-1>NO.10-2, LI-HSIN ROAD 1, SCIENCE-BASED INDUSTRIAL PARK</address-1>
      <city>HSIN-CHU CITY</city>
      <country-name>TAIWAN</country-name>
    </patent-assignee>
  </patent-assignees>
 </patent-assignment>

现在,我要为patent-Assignorpatent-Assignee.的名称创建范围元素索引。但是在Marklogic中,没有为范围索引指定XPath的选项。它只会将索引名作为“名称”。那么,在patent-Assignorpatent-Assignee名称上创建元素范围索引的正确方法是什么呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-16 11:13:55

Puneet,为了只获得一组名称,MarkLogic需要能够以某种方式区分这些集合。您最好的选择是在摄入期间更改name元素的本地名称(当前为"name")或名称空间(当前为无)。这样做后,您可以构建一个元素范围索引,并使用cts:元素-值()。例如:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<patent-assignment>
  <assignment-record>
    <correspondent>
      <name>NORTH AMERICA INTERNATIONAL PATENT OFFIC</name>
      <address-1>P.O. BOX 506</address-1>
      <address-2>MERRIFIELD, VA 22116</address-2>
    </correspondent>
  </assignment-record>
  <patent-assignors xmlns="http://puneet/assignors">
    <patent-assignor>
      <name>TSAI, YU-WEN</name>
      <execution-date>
        <date>20050331</date>
      </execution-date>
    </patent-assignor>
    <patent-assignor>
      <name>HUANG, CHENG-I</name>
      <execution-date>
        <date>20050331</date>
      </execution-date>
    </patent-assignor>
  </patent-assignors>
  <patent-assignees xmlns="http://puneet/assignees">
    <patent-assignee>
      <name>FARADAY TECHNOLOGY CORP.</name>
      <address-1>NO.10-2, LI-HSIN ROAD 1, SCIENCE-BASED INDUSTRIAL PARK</address-1>
      <city>HSIN-CHU CITY</city>
      <country-name>TAIWAN</country-name>
    </patent-assignee>
  </patent-assignees>
</patent-assignment>

从这个XML中,您可以在每个"name“元素上构建一个范围索引,然后调用

代码语言:javascript
运行
复制
cts:element-values(fn:QName("http://puneet/assignees", "name"))

才能得到受让人的名字。

票数 2
EN

Stack Overflow用户

发布于 2015-03-04 10:40:18

您可以为专利转让人和专利受让人使用cts:path-range-query()

  1. cts:path-range-query("/patent-assignors/patent-assignor","=",$name)
  2. cts:path-range-query("/patent-assignees/patent-assignor","=",$name)
票数 3
EN

Stack Overflow用户

发布于 2012-05-14 09:10:19

您不需要担心元素的父或祖先。可以通过将元素范围查询或元素值查询包装到元素查询中来限制祖先上的元素范围查询或元素值查询:

代码语言:javascript
运行
复制
cts:element-query(xs:QName("patent-assignor"), cts:element-value-query(xs:QName("name"), "my value"))

您可以在单个调用中搜索具有不同祖先的名称,方法是将序列作为第一个param传递给cts:element-query::

代码语言:javascript
运行
复制
cts:element-query((xs:QName("patent-assignor"), xs:QName("patent-assignee")), cts:element-value-query(xs:QName("name"), "my value"))

哈哈!

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

https://stackoverflow.com/questions/10578706

复制
相关文章

相似问题

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