2017-04-10 6 views
2

私はアイテム/単語のリストがあります:文書で要素にXQueryでより多くの別個の単語が含まれているかどうかを確認する方法?

<results> 
    <string> 
    <part>Downs</part> 
    <part>1957</part> 
    </string> 
    <string> 
    <part>Carmines</part> 
    <part>Huckfeldt</part> 
    <part>1996</part> 
    </string> 
</results> 

は、私は一度に特定のstringのすべてpartsを含む段落を検索する必要があります。

私にとっては、resultsのアイテムを繰り返してすべての段落をすべて比較する必要があるため、ややこしいと思われます。以下のような

何か:

for $part in $results//part 
let $paragraph := $doc//p[contains(., $part)] 
return 
    $paragraph 

は、これは、すべてのstringから1つ以上の単語を含むすべての段落を返します。この場合は常に一意であるため、グループ化することはできません。

答えて

3

あなたは正確に何をしたい表現するquantified expressionsを使用することができます。

for $p in $doc//p 
where $results//string[every $part in ./part satisfies contains($p, $part)] 
return $p 

そして最後に定量化された式のない短いが不可解なバージョン:

for $p in $doc//p 
where $results//string[not(part[not(contains($p, .))])] 
return $p 

for $p in $doc//p 
where 
    some $string in $results//string 
    satisfies (
    every $part in $string/part 
    satisfies contains($p, $part) 
) 
return $p 

はここで短いバージョンです

文字列があるすべての段落を返します。なしの部分はではなく、段落に含まれるです。 ;)

+0

ありがとうございました!あなたは私の一日を作った:)はい、私は最後の解決策に驚かない。これは一般的に数学者の一種です! –

関連する問題