- PR -

Xpathによる同一の属性値と同じ親ノードを持つ複数の子ノードの検索

1
投稿者投稿内容
アバニ
会議室デビュー日: 2005/10/27
投稿数: 8
投稿日時: 2006-06-05 22:18
以前に「Xpathによる属性値の取」得の件でお世話になりました。その節はありがとうございました。今回予期してなかったことが出てきて行き詰まっており、助言を再びお願いいたします。表題の通り同一の属性値を持つ複数の子ノードを含んだ親ノードの検索を試みてるのですがうまく行きません。例えば下記の例のように女性で日本語ができる人が二人含まれるグループを検索したいのです。
<group>
<person sex="F" age="20" lang="english japanese">AAA</person>
<person sex="M" age="27" lang="english">BBB</person>
<person sex="F" age="29" lang="japanese">CCC</person>
</group>

検索式に'//group[person[contains(@sex, "F") and contains(@lang, "japanese")] and person[contains(@sex, "F") and contains(@lang, "japanese")]]' のようなのを使うと結局同じことの繰り返しになり、下記のように条件を満たす人が一人しかないグループまで引っ掛かってしまいます。

<group>
<person sex="F" age="21" lang="japanese">DDD</person>
<person sex="M" age="30" lang="japanese">EEE</person>
</group>

これを必ず二つ以上みたいな条件を検索式に含めることが可能でしょうか? 何卒宜しくお願いいたします。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2006-06-05 23:38
二つ以上 → count関数を出せるかどうかの違い
XPath の関数は少ないので、脳力ゲームより記憶はらく

group[count(person[(@sex = "F") and contains(@lang, "japanese")]) > 1]
みたいな
アバニ
会議室デビュー日: 2005/10/27
投稿数: 8
投稿日時: 2006-06-05 23:47
MMXさま、早速のお答えありがとうございます。
前回といい今回といい全く進歩がなくて恥ずかしいばかりです。いただきました式をもとに色々と試してみます。本当にありがとうございました。
アバニ
会議室デビュー日: 2005/10/27
投稿数: 8
投稿日時: 2006-06-06 14:14
MMXさま
うまく行きました。ありがとうございました。今後関数をもっと勉強します。
1

スキルアップ/キャリアアップ(JOB@IT)