xpthの最近のブログ記事

ちょっと必要な部分だけ引用

引用元は、

CSS3セレクタとXPathでの表現の対応表 - outsider reflex" href="http://piro.sakura.ne.jp/latest/blosxom/mozilla/xul/2007-09-13_selector-to-xpath.htm">Latest topics > CSS3セレクタとXPathでの表現の対応表 - outsider reflex

E[foo~="bar"]

E[contains(concat(" ",@foo," "), " bar " )]

「空白区切りのリストの中で、対応する値がある」という条件に対して、属性値と検索したい文字列の両方の前後に空白文字を加えた上で、contains()で検索している。

E[foo]

E[@foo]

E[foo="bar"]

E[@foo="bar"]

E[foo^="bar"]

E[starts-with(@foo, "bar" )]

E[foo$="bar"]

E[substring(@foo, string-length(@foo) - string-length("bar") + 1) = "bar"]

XPath 1.0にはend-with()が無いので、文字列操作を使う必要がある。XPath 1.0では文字の位置は0からではなく1から始まることに注意が必要。なお、検索対象の文字列が固定なら、- string-length("bar") + 1の部分は- 2のように直接数値を書いてもよい。

E[foo*="bar"]

E[contains(@foo, "bar" )]

AutoPagerize (swdyh)の対応ページを作っているときにちょっと勉強したことを記しておくよ。

今回は、Latest jQuery Plugin Releases | jQuery PluginsMost Popular Plugins | jQuery Pluginsのページを対応できるXpathを作ってみた。

両ページともにpageElementの指定でclassが異なる。わざわざ二つのコードを追加するのもアレなんで、二つとも対応できるように指定することについて調べてみた。

Xpathの型と演算子XPathXML -TECHSCORE-に書かれているように、Xpath演算子が使える。演算子"or"を使って、classが複数でも対応できるようにする。

or
各オペランドを評価し、どちらかの値が true の場合は true、それ以外は false を返す

 

とあるので、Xpath指定でor演算子を使ってみたらうまくいった。

        url:          'http://plugins.jquery.com/',
        nextLink:     '//div[@class="pager"]/a[@class="pager-next active"]',
        insertBefore: '//div[@class="view view-latest-release" or @class="view-content view-content-popular-plugins"]/following-sibling::node()',
        pageElement:  '//div[@class="view view-latest-release" or @class="view-content view-content-popular-plugins"]',
    

任意のノードの次のノードを指定するなら、このfollowing-sibling::node()を使うといい。

LPO Feed

人気アクセスランキング

Photos

このアーカイブについて

このページには、過去に書かれたブログ記事のうちxpthカテゴリに属しているものが含まれています。

前のカテゴリはubuntuです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。