配列は0からではなく1から始まる([1]から) 先頭が / から始まれば絶対パス、そうでなければ相対パス、//なら全要素が対象。 ()で評価順序を考慮する
XPathというと、XSLTと一緒に使ってXMLをデータの整形する、主にプログラマー向けの技術という認識が一般的にあるような気がします。 確かに開発の現場では避けにくい技術だとは思いますが、XPathはプログラミングを主な業務としないマークアップエンジニア、フロントエンドエンジニアにとっても重宝する技術です。 普段、仕事でHTMLを編集することがあるが、XPathは使ったことないしわからないという人は是非この機会に試してみてはどうでしょうか。 XPathとは XML Path Language (XPath; XMLパス言語) は、マークアップ言語 XML に準拠した文書の特定の部分を指定する言語構文である。 引用元:Wikipedia マークアップ言語 XMLと記されていますが、XHTMLは勿論、HTMLに対しても使用出来ます。 正規表現は文字列から任意の情報を抽出したりできますが、X
関数を利用したXPath式 「XPath」は、 既に昔の正規表現によるHTMLからの情報抽出を形骸化させるほどに流行っています。 ネット上にも、XPathを紹介しているページが沢山ありますが、ここでは、 普段あまりネット上で見ないXPathの関数を使って、 より強力なXPath式を紹介したいと思います。 レファレンス テキストノードではなくテキストを取り出す perlでいうtrを、XPathで使う テキストを X 文字以上含む要素の取り出す 特定の拡張子を持つリンクのみを取り出す まとめ テキストノードではなくテキストを取り出す 使用する関数の紹介 Function: string string(object?) (example) string(id('hoge')) = id が hoge の要素内のテキストを返す 案外知られてないですが、要素内にあるテキストをそのまま文字列の形で取り
This document describes the interface for using XPath in JavaScript internally, in extensions, and from websites. Mozilla implements a fair amount of the DOM 3 XPath, which means that XPath expressions can be run against both HTML and XML documents. The main interface to using XPath is the evaluate function of the document object. document.evaluate This method evaluates XPath expressions against a
node()と*の違い //node() //* をそれぞれ実行してみればわかるが、node()はテキストノードなどを含めたすべてのノードを、*はNode.ELEMENT_NODEな要素だけを選択する。この違いはパフォーマンスに影響を与えるので、意識して使い分けるのが良い。 なお、 * はattributeとnamespaceを基準点とした場合はそれぞれattributeとnamespaceを選択する(例://@* は全てのAttrを選択する)。 詳細は仕様書でXML Path Language (XPath) - 2.3 ノードテスト 省略シンタックスと非省略、そして少しの応用 // は /descendant-or-self::node()/ の省略形である。/divは/child::divの省略形で、//div[1]は//div[position()=1]を(さらに)省略した形である
[ http://d.hatena.ne.jp/itouhiro/20101030 の続きです] [話者] XPathの勉強しようと、はてなブックマークでXPathタグのついた記事 http://b.hatena.ne.jp/t/xpath を探してみた。 http://d.hatena.ne.jp/mollifier/20100607/p1 さんの記事を読むと、 XPathを学ぶには FireBugを使うといいらしい。 [合いの手] しかしFireBugの配布サイト https://addons.mozilla.org/ja/firefox/addon/1843/ 、画像がなんか・・いやな画像だよね。 [話者] そこで、「FireBugのアイコンを置き換えようじゃなイカ」 http://ai11.net/2010/fbicon/ というサービスを作ったよ。 アイコン画像を別のに置き換えで
先日の機能追加で注目エントリーページにカテゴリータブがつきました カテゴリごとの注目エントリーを追加しました - はてなブックマーク日記 - 機能変更、お知らせなど これはこれとして、リリース文には触れられていませんが注目エントリーに大きな変更が加えられましたね、それは表示エントリーが50件から20件に縮小されたことです。 http://b.hatena.ne.jp/entrylist 従来の50件から半分以下になったことで、どのような変化が起きるかざっくり考えてみました。 1ページに表示されるエントリー数が減ることで流れが速くなる それによって キャッチーなタイトルでないと、なかなかブックマーク数を伸ばすことができない 人気ブログでないと、なかなかブックマーク数を伸ばすことができない ウチみたいな弱小ブログ涙目>< という。 まぁ、実際はどうなるかは分かりません。 カテゴリーのタブがうま
XPathの勉強。LDRFullFeedの仕様がXPathで本文を指定するというものだったので、HTML(XHTML)から必要な部分を抜き出すためにどのようなXPathが書けるかを考えてみる。 特に意味はないけどhttp://labs.cybozu.co.jp/blog/akky/archives/2009/02/interviewd-by-junior-high.htmlを例にしてみる。勝手に使ってすみません。 ... <div id="center"> <div class="content"> <p align="right"> <a href="http://labs.cybozu.co.jp/blog/akky/archives/2009/02/google-news-widget.html">« Googleニュースの新ブログパーツ(ウィジェット)</a> | <a
Latest topics > CSS3セレクタとXPathでの表現の対応表 宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能! « getElementsByなんちゃら の代わりにXPathを使う Main Mozilla 24 » CSS3セレクタとXPathでの表現の対応表 - Sep 13, 2007 拡張機能勉強会の時に焚き付けられた、Text Shadowのコード(textshadow.js)を教材にして拡張機能開発のノウハウを解説していくシリーズ。 XPathをノードの検索に活用する方法を紹介したけど、肝心のXPathが書けなきゃ意味がないわけで。でもXPathって、ノードセットがどうとかノードテストがどうとか軸がどうとか修飾がどうとか、い
This converts CSS 3 Selectors to an XPath 1.0 expression. Some CSS 3 Selectors (especially pseudo-selectors) cannot be translated (you'll get an error if you try one of these). To access this programmatically GET http://css2xpath.appspot.com?css={css} -- the response will be the XPath expression (Content-Type: text/plain), or if there is an error the response code will be 400 Bad Request and the
AutoPagerizeのSITEINFOを書くとき、ネックになりがちなのはnextLinkのXPath。 pageElementのXPathは割とシンプルに書ける*1し、insertBeforeは省略しても構わない。 というわけで、nextLinkのXPathのパターンを簡単にまとめてみる。 aタグを直接指定できるケース 次のページのURLを情報*2を含む要素を直接指定できるケース。精度が高く、メンテナンス面も優れる。 Microformats 例:はてなダイアリー AutoPagerize本体にも組み込まれている通り、aタグもしくは、linkタグのrel属性にnextが指定された要素を取得する。 html <link rel="prev" href="/os0x/?of=5" title="前の5日分"> XPath nextLink: '//link[@rel="prev"]' 大抵
SITEINFOのnextLinkケーススタディ - 0x集積蔵を読んで自分が書いたのを思い出したら、これを公開したつもりで公開してませんでした… os0xさんの書かれた記事のほうが網羅的なので、あちらを読んでもらえばよいですが、兄弟要素から取得するケースでnumberでaの中の数字を利用することができるときもある、というのだけいいたいので公開しておきます。 AutoPagerizeのSITEINFOを書いていると、ナビゲージョン部分のHTMLがださくてnextLinkをXPathで表現できなさそうなことがよくあります。 が、ふたつほどコツを見つけたのでご紹介。 following-sibling, descendant-or-selfを使う ありがちなのがナビゲーションに次のページへのリンクがなくて、数字だけが並んでいて今いるページだけハイライトされてるタイプのやつです。 Behanc
3つほどあるので紹介など Firefox addons XPath Checker リアルタイムでXPathを実行した結果が表示されるplugin. 非常に便利 使い方 とりあえずインストールし、右クリックを押すとView XPathという項目があらわれるのでそれをクリックします すると、XPathの結果が表示されるウィンドウがでてくるのでそこでXPathを実行すると、実行結果が表示されます BookMarklet 面白法人カヤックの?Find XPath このブックマークレットを実行することで、ウィンドウ上のカーソルが位置している部分のXPathが表示される. てっとりばやくXPathを知りたいときに重宝する この二つを兼用すると便利です。 流れは以下のようになります Find XPathでXPathの構文を把握 それをXPath Checkerに入れて、結果表示 パラメータを変化させて
.vimperatorに以下の文字列を貼り付けておくだけで、;xでヒントモードに入り、そこで選んだ要素のXPathがvimperatorコマンドラインに出力され、コピーされる。 javascript <<EOM // ;x use FireBugLibrary(FBL) hints.addMode("x", "copy xpath", function(elem) { let xpath = FBL.getElementXPath(elem); liberator.echo(xpath); util.copyToClipboard(xpath); }, function() "//*"); EOM ただここで使っているFBL.getElementXpathはFirebugが提供するライブラリなのでFirebugはいってないと使えないですね。 ということを http://d.hatena.n
XPath Cookbookネタで書いてたんですが、長くなったのでとりあえずこちらに。 id:taizoooにリクエストされた//とdescendant::の違いについて。 下準備として、こういうHTMLをサンプルとして使用します。(サンプルはFirebugのコンソールで実行できます) document.body.innerHTML = <><![CDATA[ <ul id="root"> <li> <a href="#a1">a1</a> </li> <li> <a href="#b1">b1</a> </li> <li> <a href="#c1">c1</a> <a href="#c2">c2</a> </li> <li> <a href="#d1">d1</a> <a href="#d2">d2</a> </li> </ul> ]]></>.toString(); まず、//*とd
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
追記 コメントでFirefox以外からの利用もありうることに気がつきました。 そう考えると、normalize-space()は残しておいたほうがいいのかもしれません。 このentryは、AutoPagerizeとLDRFullFeedのWedataのデータからnormalize-spaceが削除されていることに気づいて書いたのですが、現在の時点で不具合が出ていないのかは少し気になります。 誤解のないように最初に。 要するにclassにnormalize-spaceはかける必要はないよって話です。 textとかにnormalize-spaceかけるのとはまた違います。 気になった理由は、ある日突然drryさんがnormalize-space(@class)を@classに変えていたのを見たからなのですが。 normalize-space()って何? そもそもnormalize-space関
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く