0

ドキュメントを見ると、目標は最初のテーブルの 2 行目の 2 番目のセルを選択することです。

次の式を作成しました。

//row/td[2]/text()[td[@class="identifier"]/span[text()="identifier"]]

ただし、行は返されません。残念ながら、何が悪いのかわかりません。

私には、それは大丈夫に見えます。式は次のようにする必要があります。

select the text
    in the second cell 
        in any row
where
    the text of a span equals to "identifier"
        and the span is located in cell with a "identifier" class

私が間違っていることを指摘していただければ幸いです。

サンプル XML ドキュメント:

<?xml version="1.0"?>
<html>
    <table class="first">
        <tr>
            <td>row 1, cell 1</td>
            <td>row 1, cell 2</td>
        </tr>
        <tr>
            <td class="identifier">
                <span>identifier</span>
            </td>
            <td>
                foo
                <span>ignore</span>
                bar
            </td>
        </tr>
        <tr>
            <td>row 3, cell 1</td>
            <td>row 3, cell 2</td>
        </tr>
    </table>

    <table class="second">
        <tr>
            <td>row 1, cell 1</td>
            <td>row 1, cell 2</td>
        </tr>
        <tr>
            <td class="identifier">
                <span>not an identifier</span>
            </td>
            <td>
                not a target
            </td>
        </tr>
        <tr>
            <td>row 3, cell 1</td>
            <td>row 3, cell 2</td>
        </tr>
    </table>
</html>
4

1 に答える 1

4

一見すると、次のように書くつもりだと思います。

//tr/td[2][@class="identifier"][span="identifier"]

奇妙なことに、サンプル データには 3 つの条件すべてに一致するノードがありません。

EDIT : フィードバックに基づいて、試してみる別のクエリを次に示します。

//tr[td/@class="identifier"][td/span="identifier"]/td[2]/text()
于 2010-03-21T18:16:45.833 に答える