2011-01-07 9 views
0

とフィールドを含むに基づいてテーブルの行を見つけるためにXPathは、ここで私が今持っているものだ関連付けられたラベルと値

//tr[.//label[.='foo']/@for] 

は私も確認されているstring()機能期待どおりに動作しますが、string()id属性を照合するとハングアップするようです。どんな考え?

ここでXのビットは、これを一致させる必要があります[HT] ML - それは、第二列見つける必要があります。

<tr> 
    <td> 
    <label for="thing1">foo</label> 
    <input id="thing1" value="not-bar" /> 
    </td> 
</tr> 
<tr> 
    <td> 
    <label for="thing2">foo</label> 
    <input id="thing2" value="bar" /> 
    </td> 
</tr> 

感謝を!

+0

扱っているXMLのサンプルを表示できますか? – Flack

+0

また、構文エラーがあります。 1つの角括弧が欠けています。 //tr[.**[id = string(.// label [。= 'foo']/@ for)]と@ value = 'bar']を使用する必要があります。まだ非効率的な表現のように見えます。私たちがXMLを見れば、もっと良いものを提供できるかもしれません。 – Flack

+0

@Flack:不足している右括弧と少しのXMLで質問を更新しました。 – wuputah

答えて

2
//tr[*/input 
    [@id = ../label[.='foo']/@for and @value='bar'] 
    ] 

十分に見えます。

+0

ありがとう、ここで変更したように、問題の核心は 'string()'関数とラベルの兄弟参照です。それを変更して、それは働いている! – wuputah

関連する問題