「sxpathがとてもわかりにくい」の補足。 sxpathのクエリに正規表現を埋め込めるようにしてみた。 クエリの中に正規表現が出てきた場合、「子ノードの中から」テキスト要素でかつ正規表現にマッチするものを取り出す(子ノードから選ぶのは、他のクエリも(「//」を除いて)子ノードについて探索をおこなうから)。 たとえば ((sxpath-rx '(// a @ href #/\.html$/)) node) で、a要素のhref属性の値のうち、「.html」で終わるものだけを取り出す。a要素全体が必要なら ((sxpath-rx '(// (a (@ href #/\.html$/)))) node) と書く。 やっていることは、クエリに出てくる正規表現を関数に置き換えてからsxpathに渡しているだけ。 (use sxml.sxpath) (define (sxpath-rx query)