複数の任意のタグの包括関係で一番親のだけをxpathで抽出する。

複数の任意のタグの包括関係で一番親のだけをxpathで抽出する。既存のhtmlから使ってはいけないタグをただの文字列に置換したかった。

<hoge><piyo><fuga>1</fuga></piyo></hoge>
<yap>2</yap>
(//hoge|//fuga|//yap)[not(boolean(ancestor::hoge or ancestor::fuga or ancestor::yap))]

1行目のと2行目のを抽出する。

こんな感じ?任意のタグを抽出するけど、上方向にはそれを持ってないという意図なんだけど、もっと短く書けるのかな。