2017-02-15 9 views
0

特定の要素や子ノードを持たない要素(テキストノードでも)を持たない文書を検索したい場合、その要素には特定の親ノードが必要です。例えば特定の要素を持たないか、要素にnull値を持つ文書を検索するにはどうすればよいですか?

サンプルXMLS:

<root> 
    <id>123</id> 
    <root2> 
     <number>1234</number> 
    </root2> 
</root> 

<root> 
    <id>123</id> 
    <root2> 
     <issue/> 
     <number>1234</number> 
    </root2> 
</root> 

<root> 
    <id>123</id> 
    <root2> 
     <volume/> 
     <number>1234</number> 
    </root2> 
</root> 

<root-second> 
    <id>123</id> 
    <root2> 
     <volume/> 
     <issue/> 
     <number>1234</number> 
    </root2> 
</root-second> 

<root-second> 
    <id>123</id> 
    <root2> 
     <volume/> 
     <issue/> 
     <number>1234</number> 
    </root2> 
</root-second> 

新しいドキュメント:

<root> 
    <id>123</id> 
    <root2> 
     <volume>233</volume> 
     <number>1234</number> 
    </root2> 
</root> 
<root> 
    <id>123</id> 
    <root2> 
     <volume>233</volume> 
     <issue>233</issue> 
     <number>1234</number> 
    </root2> 
</root> 
<root> 
    <id>123</id> 
    <root2> 
     <issue>233</issue> 
     <number>1234</number> 
     </root2> 
</root> 

今、私はすべてのXMLSが<root><id>を持つ必要とですは空の<issue>, <volume>要素または要素がまったく存在しないことがあります。

上記の場合と同様に、<root-second>のxmlsをrootとして返すべきではありません。

これは、各XMLを想定すると、ルート

答えて

1

は、独自の文書であるとして、あなたがこれを行うことができるはず<root>ですべてXMLSを返す必要があります:

cts:search(
    fn:doc(), 
    cts:element-query(
    xs:QName("root"), 
    cts:element-value-query(xs:QName("id"), "123") 
) 
) 

私はあなたに完全に明確ではありませんよ質問に含まれているものにかかわらず、root2がルートの下に存在するようにしたいと思っていると思います。その場合は:

cts:search(
    fn:doc(), 
    cts:element-query(
    xs:QName("root"), 
    cts:and-query((
     cts:element-value-query(xs:QName("id"), "123"), 
     cts:element-query(xs:QName("root2"), cts:true-query()) 
    )) 
) 
) 
+0

David、私は質問を更新しました。 私は新しい文書を追加しました(それぞれのXMLは独自の文書にあります)。 3つのドキュメントにすべて,、または両方の要素に値(テキストノード)があるため、新しい追加ドキュメントは結果にならないようにしてください。真のクエリ:の下にもあり、の下に存在することができ、私の場合のように (の兄弟) –

+0

CTSを はいデビッドの下に提示しなければならない、それがの親ノードである必要があり、 ()ML 7を使用しているのでこれを使用できません –

+0

cts:true-query()をcts:and-query(())に置き換えます。 –

関連する問題