質問: XPATHを使用してテーブルデータの取得を行いたいと考えています。 テーブルデータは、以下の通りです。 このとき、以下の通り入力すれば「人数」や「平均身長」を指定できますが、その下にある「5」「170」を取得する方法がわからず、質問させていただきます。 ``` /table/tr[td[contains(normalize-space(),"平均身長")]] ``` ※ 「人数」と「平均身長」の数字データを""内を除きすべて同じXPATHを用いたいと考えています。 ``` 人数 平均身長 5 170 ```
回答: XPath 2.0だとこんな風にも書けますよ. `for $i in 1 to count(/table/tr1]/td) return if (contains(/table/tr[1]/td[$i],'平均体重')) then string(/table/tr[2]/td[$i]) else ()` oXygen 20.0でのXPath/XQuery Builderでの実行画面. ![oXygen 20.0での実行画面 御参考まで. 追伸] `index-of`を使うのが一番簡単なんじゃないか?と思います.例えば `/table/tr[2]/td[index-of(/table/tr[1]/td/string(.),'平均体重')]/string(.)` 以下同様の実行画面. ![oXygen 20.0での実行画面