2017-05-18 10 views
0

この問題はthis oneのように異なります。要素の値と同じ要素の複数の属性に基づくMarklogicクエリ

私は、次の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"))))) 

これにより、望ましい結果が得られます。

関連する問題