2012-05-18 46 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") 
      ))