我有以下xml:
<?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-Assignor和patent-Assignee.的名称创建范围元素索引。但是在Marklogic中,没有为范围索引指定XPath的选项。它只会将索引名作为“名称”。那么,在patent-Assignor和patent-Assignee名称上创建元素范围索引的正确方法是什么呢?
发布于 2012-05-16 11:13:55
Puneet,为了只获得一组名称,MarkLogic需要能够以某种方式区分这些集合。您最好的选择是在摄入期间更改name元素的本地名称(当前为"name")或名称空间(当前为无)。这样做后,您可以构建一个元素范围索引,并使用cts:元素-值()。例如:
<?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“元素上构建一个范围索引,然后调用
cts:element-values(fn:QName("http://puneet/assignees", "name"))
才能得到受让人的名字。
发布于 2015-03-04 10:40:18
您可以为专利转让人和专利受让人使用cts:path-range-query()
。
cts:path-range-query("/patent-assignors/patent-assignor","=",$name)
cts:path-range-query("/patent-assignees/patent-assignor","=",$name)
发布于 2012-05-14 09:10:19
您不需要担心元素的父或祖先。可以通过将元素范围查询或元素值查询包装到元素查询中来限制祖先上的元素范围查询或元素值查询:
cts:element-query(xs:QName("patent-assignor"), cts:element-value-query(xs:QName("name"), "my value"))
您可以在单个调用中搜索具有不同祖先的名称,方法是将序列作为第一个param传递给cts:element-query::
cts:element-query((xs:QName("patent-assignor"), xs:QName("patent-assignee")), cts:element-value-query(xs:QName("name"), "my value"))
哈哈!
https://stackoverflow.com/questions/10578706
复制相似问题