2012-05-18 123 views
0

我有一些xml文档。该文件的结构是这样的: - 对assignor-nameassignee-name问题与cts:和marklogic查询

<?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> 
     <assignor-name>TSAI, YU-WEN</name> 
     <execution-date> 
     <date>20050331</date> 
     </execution-date> 
    </patent-assignor> 
    <patent-assignor> 
     <assignor-name>HUANG, CHENG-I</name> 
     <execution-date> 
     <date>20050331</date> 
     </execution-date> 
    </patent-assignor> 
    </patent-assignors> 
    <patent-assignees> 
    <patent-assignee> 
     <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> 

我创建领域。现在我运行cts:search这样的查询: -

let $query:=cts:and-query((

    cts:element-query(xs:QName("assignor-name"), 
     cts:field-word-query("Assignor Name", "apple")), 
    cts:element-query(xs:QName("assignee-name"), 
     cts:field-word-query("Assignee Name", "salix")) 
)) 

for $x in cts:search(fn:doc(), $query) 
return $x 

其中转让人姓名和专利权人名称是我所创建的字段的名称。这些字段分别为assignor-nameassignee-name作为其本地名称。但是当我运行这个查询时,它给了我空序列。我也检查过我的xml文件和文件,其中assignor-name是“apple”,assignee-name是“salix”,但我没有得到结果。当我运行此查询只为转让人姓名或受让人名称,然后我得到的结果,但是当我将它们合并到一个and-query然后我没有得到任何结果。请帮忙。

+2

普尼特,您的样本数据不匹配你想要做什么:你的查询使用一个命名空间(“PA: “)没有显示在您的数据中,以及苹果和沙柳不在那里。你能否更新一个应该匹配的样本? –

回答

2

除了Dave指出的命名空间问题之外,element-queryfield-query的组合并不常见,并且可能不会产生令人满意的结果。

对于此查询,您可以放弃对该元素的简单cts:element-word-query

1

是的,你可以通过以下方式使用cts:element-word-query功能:

cts:and-query((cts:element-word-query(xs:QName("pa:assignor-name"), 
             "apple", 
             "case-insensitive" 
            ), 
       cts:element-word-query(xs:QName("pa:assignee-name"), 
            "salix", 
             "case-insensitive") 
      ))