taizooo |
こうなるとldrize対応もしたくなってくるわけです。 |
* |
taizooo |
エー、どなたかldrize ideみたいなのごぞんじでありませんか〜 autopagerize ideみたいなの! |
* |
ku |
@taizooo http://d.hatena.ne.jp/shinichitomita/20071111/1194764343 そのものずばりがあるけどLDRizeのsiteinfoを書く目的で使ったことはないです |
* |
taizooo |
@ku ガンバッテミル。 |
* |
taizooo |
XPath ってさぁー、そもそもどういうものなのかわかってないからねぇー。 |
* |
taizooo |
うごきゃーいいんだよ。動けば。 |
* |
taizooo |
そういえばなんか忘れているような。 |
* |
taizooo |
twitxrのldrize対応だった。忘れてた… |
* |
taizooo |
えるでぃらいずたいおうざせつぎみ。ねる。えくすぱすすいみんがくしゅうきぼう(ぼうよみ) |
* |
snj14 |
カレーライス食べた |
* |
taizooo |
twitxr.com のldrizeたいおしてみたけど、なんでうごいているのかわからん、からほんとはsiteinfoにあげたらまずいかとおもたけど、やてもうた。まずければだれかなおしてほしいですわ。えくすぱすがわかんないとちょとむずかしいとおもいますた。(ぼうよみ) |
* |
snj14 |
.@taizoooの書いたXPathを勝手に添削でもしようかな.//はHTMLツリーの全部から探すって意味.div[@id="frontpage"]はid("frontpage")でOK.両方とも<div id="frontpage"></div>にマッチする. |
* |
snj14 |
firebugのスクリーンショットがあったほうが説明が楽かもしれん. |
* |
snj14 |
tumblrは画像が縮小される.twixrだと画像が縮小されない. |
* |
snj14 |
s/twixr/twitxr/ |
* |
snj14 |
よし. http://twitxr.com/image/14159/ j/kで移動する先は「目的のノード」で指した場所にしたいとする.これは自分で「どこがいいかなー」って考える.この場合は親の<div id="div_updaet_14154 ...>のところでも,多分大丈夫. |
* |
snj14 |
目的のノードは全てdiv要素でclass="update"っていう共通点がある.なので,とりあえず$x('//div[@class="update"]')をfirebugで実行する.先頭の//は「全部から探す」.先頭以外で出てきたら「子孫から探す」. |
* |
snj14 |
firebugで実行したら,結果が3つしか出てこないので,これでおしまい.paragraphは//div[@class="update"].いっぱい出てきた時は誤爆してるので,親を指定して他所の<div class="update">にマッチしないようにする. |
* |
ku |
snj14先生のXPath writing講座だ |
* |
snj14 |
もし誤爆したら,親のノードを条件に含めて$x('//id("divTipBody")/div[@class="update"]')にする.idは重複したら駄目な属性なので,普通は誤爆しないんだけど,親にidがないときは親の親<div id="frontpage">を条件にいれる. |
* |
snj14 |
$x('//div[@id="frontpage"]//div[@class="update"]')な感じにすると,<div id="frontpage">の子孫で,かつ<div class="update">のものにマッチすることになるから,誤爆する可能性が高くなる. |
* |
snj14 |
もし,footer(スクリーンショットの下の方)の中に<div class="update">が混じってれば誤爆するし,目的のノードの子孫に<div class="update">が混じってても誤爆する. |
* |
snj14 |
目的のノードには,<div id="div_update_14154"> , <div id="div_update_14150">って感じで,idの途中までが一緒という共通点もある. |
* |
snj14 |
この共通点に着目してXPathを書く場合は,$x('//div[starts-with(@id,"div_update_")]/div') というふうに書ける.これでも,あのページではさっきと同じ結果が得られる. |
* |
snj14 |
今のXPathの意味は「id属性がdiv_update_で始まるノードの子ノードでdiv要素のものをさがしてくれ」ってことになる. |
* |
snj14 |
starts-with以外にも関数はある.SITEINFOのwikiにいっぱいサンプルがあるので参考にしつつ,googleで"XPath starts-with contains"とかで検索すると,関数を羅列したページが見つかる. |
* |
snj14 |
偶数だけマッチや奇数だけマッチとか( http://twitter.com/snj14/statuses/598852462 ),「このノードの子で,かつ,あのノードより前に出てくるノード全部の中からdiv要素のもの」とかいう指定もできるし,確かそんなXPathを昔書いた. |
* |
snj14 |
書くの忘れてたけど,さっきのスクリーンショットは http://twitxr.com/snj14/with_friends/ のHTML. |
* |
snj14 |
div[@class="update"]はclass属性をJavaScriptで変えられた時にバグるので,div[contains(@class,"update")]にする. |
* |
snj14 |
div[contains(@class,"update")]だと,<div class="not_update">みたいなクラスにもマッチしてしまうので,div[contains(concat(" ",@class," ")," update ")]にする. |
* |
snj14 |
でも,XPathを探してる最中にclass属性を変えられたりすることはほとんどないので,firebugで試してるときはdiv[@class="update"]でためして,後でちょこちょこっと書きかえればおーけー. |
* |
snj14 |
このくらいかな.自分で書くなら'//div[starts-with(@id,"div_update_")]'かな.短いし. |
* |
snj14 |
しかし,twitxrは毎回location書けってウルサイ. |
* |
snj14 |
AMPMのおやつクラブ バーベキュースナック100円がうまい・・・量も多く感じる. |
* |
snj14 |
さっきまでXPathがどーたらこーたら書いてたのに,もう別のことを書こうって思える,この,自由な感じは,タイムラインがさっさか流れないと出てこないよねぇ. |
* |
snj14 |
「たくさんのアウトプットを出す」ことを重要視するならば,この自由さはやっぱり必要不可欠だろーなー. |
* |
os0x |
今更だけど、@snj14 さんのXPath講座面白かった。 ただ、footerに誤爆するってのが http://twitter.com/snj14/statuses/770896758 気になった。footerは兄弟要素だからそこには誤爆しないはず |
* |
snj14 |
@os0x 確かにー・・・!余計なところにも誤爆する例を挙げたくて>< |
* |
snj14 |
訂正: http://tinyurl.com/yty66c は,$x('//div[@id="frontpage"]//div[@class="update"]')では誤爆しません.$x('//div[@class="update"]')だけだと誤爆するかもしれません. |
* |