2017-05-18 1 views
0

이 문제는 this one과 같지만 다릅니다. 요소의 값과 동일한 요소의 다중 속성을 기반으로 한 Marklogic 쿼리

I가 다음 XMLS :

doc1.xml

<Companies> 
<Company id="63919" isSubject="N" refType="SEC"> 
    <IsRestricted value="true"/> 
    <Name>Caixa</Name> 
</Company> 
<Company id="13332" isSubject="Y" refType="PRI"> 
     <Name>Banco</Name> 
</Company> 
</Companies> 

doc2.xml

<Companies> 
<Company id="13336" isSubject="N" refType="SEC"> 
    <IsRestricted value="false"/> 
    <Name>Santander</Name> 
</Company> 
<Company id="117436" isSubject="N" refType="PRI"> 
    <Name>Bankia</Name> 
</Company> 
</Companies> 

doc3.xml

<Companies> 
<Company id="12236" isSubject="N" refType="SEC"> 
    <Name>Inter</Name> 
</Company> 
<Company id="134562" isSubject="N" refType="PRI"> 
    <IsRestricted value="true"/> 
    <Name>Liber</Name> 
</Company> 
</Companies> 

내 검색이 문서를 제외 필요 where refType = 'PRI

나는 다음과 같은 쿼리가 작업 할 것이라고 생각 :

cts:search(/, 
    cts:not-query(
    cts:element-query(xs:QName("Company"),cts:and-query((
    cts:element-attribute-value-query(xs:QName("Company"),xs:QName("refType"),"PRI",(),0), 
    cts:element-attribute-value-query(xs:QName("Company"),xs:QName("isSubject"),"Y",(),0), 
    cts:element-attribute-value-query(xs:QName("IsRestricted"),xs:QName("value"),"true",(),0) 
    ))) 
) 
) 

을하지만 그냥 doc2.xml를 반환합니다. 쿼리를 업데이트했습니다.

cts:search(/, 
    cts:not-query(
    cts:near-query((
    cts:element-attribute-value-query(xs:QName("Company"),xs:QName("refType"),"PRI",(),0), 
    cts:element-attribute-value-query(xs:QName("Company"),xs:QName("isSubject"),"Y",(),0), 
    cts:element-attribute-value-query(xs:QName("IsRestricted"),xs:QName("value"),"true",(),0) 
    ))) 
) 

도 작동하지 않는 것 같습니다. 단지 doc2.xml을 반환합니다.

답변

0
cts:search(fn:collection("companies"), 
cts:not-query(
    cts:and-query((
        cts:element-attribute-value-query(xs:QName("Company"), 
        xs:QName("refType"), "PRI"), 
        cts:element-attribute-value- 
       query(xs:QName("Company"),xs:QName("isSubject"),"Y"), 
       cts:element-attribute-value- 
       query(xs:QName("IsRestricted"),xs:QName("value"),"true"))))) 

이렇게하면 원하는 결과를 얻을 수 있습니다.

관련 문제