2012-05-18 2 views
0

일부 XML 문서가 있습니다. 문서의 구조는 다음과 같다 : - assignor-nameassignee-nameMarklogic에서 cts : and-query 문제가 발생했습니다.

<?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

Puneet, 샘플 데이터가 당신이하려고하는 내용과 일치하지 않습니다 ")는 귀하의 데이터에 표시되지 않습니다. 사과와 살리실린도 없습니다. 일치해야하는 샘플로 업데이트 할 수 있습니까? –

답변

2

데이브가 지적한 네임 스페이스 문제 외에도 element-queryfield-query의 조합은 드문 경우이며 만족스러운 결과를 내지 못할 것입니다.

이 쿼리의 경우 두 요소를 모두 요소의 cts:element-word-query을 사용하여 삭제할 수 있습니다.

1

예, 다음과 같은 방식으로 cts:element-word-query 기능을 사용할 수 있습니다 : 조회 네임 스페이스 ("PA를 사용하고 있습니다 :

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") 
      )) 
관련 문제