IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

XPath

XPath に文字列を埋め込むときの注意

よく、以下のように XPath に文字列を埋め込む事があります document.evaluate('//*[@class="' + text + '"]', document, null, 7, null); まあ、僕もよくこんなコード書くんですけど。 でも、これって text が外部から来るものだったら、意図通りの動作をし…

フィードをオートディスカバリーする XPath

こんな感じ document.evaluate('/html/head/link[contains(concat(" ", @rel, " "), " alternate ") and (@type = "application/x.atom+xml" or @type = "application/atom+xml" or @type = "application/xml" or @type = "text/xml" or @type = "applicatio…

XPath を指定すると、リンクに Pathtraq のスコアを付加する関数

はじめに Pathtraq API を使ってもっといろいろできないかなあと思って、 XPath で指定したリンクに Pathtraq のスコアを付加する JavaScript の関数を作ってみました。 Greasemonkey や Bookmarklet から使うことができます。 たとえば 関数を読み込んだ状…

駄文 - Selenium の中の人からメール来た><

超要約 JavaScript-XPath 続けてく気あるんかゴルァ! バグの報告はどこにすればいいんじゃゴルァ! ひー! という訳で とりあえず、コミット権が欲しかったら username と password 送ってって言ってみた。 もし、ホントに送ってきたら id:yappo さんに転送…

XPathGraph のテクニック

XPathGraph とは http://xpath.kayac.com/ URL と XPath を指定すると URL の先をスクレイピングしてグラフを作ってくれるサービスです。このエントリでは、どのような手順で XPath を組み立てていけばいいかをよくあるパターンで解説します。 0. 値の元とな…

駄文 - 毎日 XPathGraph を見るのが楽しい

ちょっとずつできあがってきた http://xpath.kayac.com/user/amachang

XPathGraph のプラス演算子が無視されるバグと回避方法

以下のエントリで 加減乗除算ができると書きましたが XPathGraph がすごい件と、XPath で出来ることのヒント - IT戦記 現状 XPathGraph では、プラス演算子が無視されるバグがあるようです。 バグの回避方法 XPath では、単項マイナス演算子が使えるので 1 +…

XPathGraph がすごい件と、XPath で出来ることのヒント

XPathGraph とは http://xpath.kayac.com/ URL と XPath を指定すると一日に一回その URL をスクレイピングして XPath 式が示す値をグラフにしてくれる!という画期的なサービスです。 例えば、 URL と XPath を指定するだけで以下のようなグラフが作れてし…

JavaScript-XPath を IE8 に対応させました。

JavaScript-XPath をバージョンアップしました 久しぶりのバージョンアップです。よろしくお願いします>< JavaScript-XPath とは JavaScript で書かれた XPath の実装です 以下からダウンロードできます。 http://coderepos.org/share/wiki/JavaScript-XPa…

JavaScript-XPath の jQuery 用のプラグインと Prototype.js 用のプラグインを公開しました

以下のサイトからダウンロードしてお使いください。 Prototype.js 用 http://coderepos.org/share/wiki/JavaScript-XPath/bindings/Prototype jQuery 用 http://coderepos.org/share/wiki/JavaScript-XPath/bindings/jQuery 使いにくいところがあれば すぐに…

XPath のテストコードが WebKit(Safari のレンダリングエンジン)のリポジトリに取り込まれました!

マジで嬉しいいい>< http://trac.webkit.org/projects/webkit/changeset/27836 という訳で 引き続き JavaScript-XPath をよろしくお願いいたします!

CodeRepos のコミッターの Icon は JavaScript-XPath を使って挿入しています。

http://coderepos.org/share/wikiこのように、既存の HTML に手を加えることなく、 JavaScript による機能追加ができます。IE で見てもそれなりに実用的な速度で動いていると思いませんか><(欲をいうともうちょっと最適化したいですが。。) アッピールア…

XPath は jQuery や Prototype.js と競合する技術ではなく、むしろ共存する技術です

昨日のエントリのブクマやコメントで jQuery からの移行がめんどう 時代は jQuery のようなコメントがありました。 これらのコメントから おそらく、「XPath が jQuery や YUI、Prototype.js、Dojo、MochiKit などの汎用 JS ライブラリと競合する」と思って…

JavaScript-XPath をリリースしました!さあ、あなたも XPath を使おう!(解説付き)

JavaScript-XPath とは JavaScript-XPath は、 DOM 3 XPath を実装していないブラウザに対して、実用的な速度で動作する DOM 3 XPath のエンジンを追加します。 一言で乱暴に言ってしまえば、どのブラウザでも document.evaluate って関数で XPath 使えるよ…

HTML 用の XPath 機能テストを書いた

こんな感じ ここでテストできます(DOM 3 XPath 対応ブラウザでしか動きません) XPath Functional Test テストしてみると Safari 3.0.3 Public Beta はバグが多い Opera と Firefox はかなり優秀 要素名は大文字? あと、特に気になった点として、 name 関数…

僕のパーサブームはまだまだ終わらない

すばらしいエントリが上がっています。 で、最近 XPath 処理系の実装が停滞してるんですけど。 飽きたんじゃなくて、Shibuya.JS と WEB+DB PRESS の〆が終わるまで待って><!!

Firebug で XPath を簡単に試す方法

適当に XPath を試したい時に 以下のようにすれば、簡単に XPath をためせます。 document.evaluate( '//div[@class="hoge"]', // XPath 式 document, // 基準となるノード(要素とか null, // 名前空間の解決方法(適当にやるときは null 6, // 取得する形…

ノードの集合を「ドキュメント順」に高速に並べ替える。その1

ドキュメント順とは何か? ドキュメント順とは、簡単に言えば「XML のソース上の前にある順」のこと。 詳しくはこのへんを見てね。 XPath ではこの「ドキュメント順」という概念がよく登場する。 たとえば、ノードを文字列化するときは子孫テキストノードを…

XPath のパーサ書いた

ふー。XPath パーサが出来ましたよ>< わーい。 昨日中に作ろうとは思っていたけど>< もうすぐ朝の 6:00 か。 もう 18 時間くらいはずっとコード書いてたんだなあ。集中してて時間が過ぎるのが一瞬だったよ。 XPath パーサのデモ http://amachang.art-cod…

正規表現の XPath 字句解析その2

またまた XPath ネタです。 先日、XPath の字句解析をワンライナーで作ってみた。 - IT戦記で書いた正規表現の XPath 字句解析ですが、よく考えるといろいろおかしかった(不正な文字が無視されたりする)& id:otsune さんからコメントやブクマの突っ込みも…

JavaScript で XPath の構文木を考えてみる。

またまた パーサーブームの続編です。 昨日は数式のパーサーを作って、帰り道にいろいろ考えたんですけど、普通の言語で考えると構文木って結構複雑になるんじゃないかなあって思いました。 で、横断歩道で明日 XPath の構文木を考えてみようと思ったわけで…

XPath の字句解析をワンライナーで作ってみた。

ソースコード var expression = '/html/body/div/[attribute::class="hoge fuga piyo"]'; var tokens = expression.match(/"[^"]*"|'[^']*'|\d+(?:\.\d*)?|\.\d+|\*|\/\/|\/|\||\+|!=|<=|>=|<|>|=|\(|\)|\[|\]|\.\.|\.|@|,|::|-|(?![0-9-:])[\w-]+:\*|\$(?:(…

XPath は実用に耐えうるかの考察と xpath.js

背景>< Safari 3 系から DOM Level 3 XPath が実装されました!!!キタコレ!!! Firefox 2 系は DOM Level 3 XPath が実装されている。 Opera 9 系は DOM Level 3 XPath が実装されている。 XPath 1.0 in JavaScript • Cameron McCormack's blog (以下…

今さらだけど $X + GreaseMonkey はまじで最強だなぁ。例えば 2 行で mixi のクローラとか作れちゃうもん

最近 GreaseMonkey ちょっと使ったりするんだけど $X 関数が便利すぎる!! $Xとは cho45氏が作った XPath 用の関数です。Shibuya.JS で発表してた資料にあります。 http://lowreal.net/2006/shibuya-js-1-lt.html http://lowreal.net/logs/2006/03/16/1 例…