またメールが来なくなっていたので確認。インデクシングされていない。NMZ.lock2 は最初なかったのに、CGI 経由で実行したらNMZ.lock2 が残っていますというエラーとともに出来た。自分で作って自分でえらー吐いてるのか……?

仕方ないのでまたインデックス全部削除。

  1. トップ
  2. web
  3. Namazu Cron

ネームスペース宣言の集合は、式が現れるアトリビュートを持つエレメントのスコープに含まれるものと同じである。この集合には、XML ネームスペース勧告 (XML Namespaces Recommendation) [XML Names] が必要とする、暗黙的に示されたプレフィックス xml の宣言も含まれる。デフォルトのネームスペース (xmlns を用いて宣言されたもの) は、この集合の一部ではない。 とか書いてあったりする。ソースツリーのデフォルトネームスペース URI が null (特に名前空間を全く宣言していない場合とか) 以外の時は絶対にプリフィックス無しではマッチとかしない。

<foo>
<bar>baz</bar>
</foo>

この場合に string(/foo/bar) = 'baz' は true。

<foo xmlns="http://foo/">
<bar>baz</bar>
</foo>

この場合は string(/foo/bar) = 'baz' は false。/foo/bar は何も選択しない。例え XSLT 側のデフォルト名前空間が http://foo/ であっても何も選択されないxmlns:f="http://foo/" とかやって /f:foo/f:bar ってやらなきゃいけない。

で、困るっていうかよくわからんのはソースツリーのデフォルトネームスペースと結果ツリーのデフォルトネームスペースを同じにしたいときなんですよと。必然的に xmlns:f="http://foo/"xmlns="http://foo/" とか (順番も重要) やるわけですよ。exclude-result-prefixes="f" とかやるわけですよ。そうすると仕様書的に正しいかはよくわからないけど Sablotron の場合はどっちとも (xmlns, xmlns:f) 消えるんですよ (msxsl では大丈夫)。で、どうすんねんと哀さんと話していた次第(謎

xsl:namespace-alias とか利用すんのかなぁと思っていくつかソレっぽく書いてみたけどダメだった……なんかセオリー的なやり方ってないのかな。

  1. トップ
  2. web
  3. XSLT の XPath の
  1. トップ
  2. xml
  3. XSLT の XPath の
  1. トップ
  2. xslt
  3. XSLT の XPath の
  1. トップ
  2. xpath
  3. XSLT の XPath の

XSLT では属性ノードとその親ノード (要素) との関係は片方向……属性ノード側からは @attr[. = ../../@attr] (省略しない場合: attribute::attr[self::node() = parent::node()/parent::node()/attribute::attr])) とかいう風に親がちゃんと親に見える (っておかしいな) けど、その親からは (attribute:: としているように) 軸が違う。ここで親から child::attr とアクセスできたら困るわけだけど、ややこしい。どうも俺は属性を子ノード的にイメージしていて attribute っていう軸がイメージしにくい。

DOM の場合は属性に親ノードはなく (parentNode は null) ownerElement に親要素が入ってる。軸が完全に分離してるっつうのかなぁ。DOM だとあんまり混乱しない。ただのプロパティでしかないからかなぁ。

XSLT の場合も DOM っぽい考え方をすればいい気がするのでちゃんと書いて、どこがどう違うかを考えてみてる。軸をプロパティと考えればいいの鴨。

// わけわかんコードだ(w
contextNode = current();
with (contextNode) {
contextNode = child["*"];
with (contextNode) {
contextNode = attribute["attr"];
with (contextNode) {
text();
}
}
}
  1. トップ
  2. xslt
  3. XSLT と DOM との相違
  1. トップ
  2. dom
  3. XSLT と DOM との相違
  1. トップ
  2. xml
  3. XSLT と DOM との相違
  1. トップ
  2. xpath
  3. XSLT と DOM との相違

注意 これは間違ってるかもしれない。実際に実装を使って確かめたわけじゃない。今はめんどくさくて確かめたくないので覚書的なもの。

変数バインドエレメント (xsl:param, xsl:variable) では select でノードセット格納するときと、子要素にテンプレートを書いてごちゃるのとでは違うらしい。後者は結果ツリーフラグメント (Result Tree Fragment) になる。これはルートノードを含む。(select の場合でもルートノードを含むように選択すればルートノードは含まれる。例えば document() を単体で使えば必ずルートノードがノードセットの入る)

<xsl:variable name="foo" select="/bar"/>
<xsl:apply-templates select="$foo"/>
<xsl:variable name="foo">
<xsl:copy-of select="/bar"/>
</xsl:variable>
<xsl:apply-templates select="$foo"/>

前者の場合、ルートノードを含まないノードセットなので、無限ループに陥らずにちゃんとなる。後者の書き方によって $foo に格納されるのは結果ツリーフラグメントで、結果ツリーフラグメントはルートノードを含むので、(現在適用しているスタイルシートの match="/" にマッチして) 無限ループ。

結果ツリーフラグメントをノードセットと混同するとエラい目にあう。例えば Mozilla がクラッシュしたりとか。

  • 結果ツリーフラグメントは、結果ツリーの断片 (フラグメント) を表す。結果ツリーフラグメントは、ルートノードを1つだけ含むノード集合と同様に扱われる。
  • 変数バインドエレメントが select アトリビュートを持たず、コンテンツが空でない場合 (つまり、変数バインドエレメントが1つまたは複数の子ノードを持っている場合)、変数バインドエレメントのコンテンツが変数の値になる。変数バインドエレメントのコンテンツはテンプレートであり、このテンプレートをインスタンス化すると、変数の値が得られる。この値は結果ツリーフラグメントであり、このフラグメントはテンプレートをインスタンス化して生成した一連のノードを子に持つルートノードを1つだけを含むノード集合と同等である。

あっていれば xsl:param にノード集合を渡す。 はノード集合ではなく正確には結果ツリーフラグメントだ。まぁ扱い方的はあまり変わらないけれど……

ってことは <xsl:param name="ggg" select="'unke'"/><xsl:param name="ggg">unke</xsl:param> は違うんだ。実際これらを <xsl:value-of select="$ggg"/> とかやると文字列に変換されるので同じように見えるだけか。この場合前者の方が変換がなくてほんの少し高速かな。

  1. トップ
  2. web
  3. 結果ツリーフラグメント
  1. トップ
  2. xslt
  3. 結果ツリーフラグメント
  1. トップ
  2. xml
  3. 結果ツリーフラグメント

XPathXPath という名前だけでも誤解を招く。Path というだけにディレクトリパスとかを連想する。まぁ、ディレクトリパスとは類似点が多い。UNIX ファイルシステムにおけるルートディレクトリ (名前ナシ) と、ルートノード (展開された名前ナシ) とか、それに省略形による表記を使うとパット見ディレクトリを特定するためのディレクトリパスとなんら変わらない。‘/’ を区切りに使うのが紛らわしい。カレントディレクトリXSLT における カレントノード を混同しやすい。XPath にはカレントノードなんてものはない。コンテキストノード。

XPath は文字列とか数値も表現しえるので、ただたんにどっかのノードを特定する言語ではない。(とはいえ W3C 仕様書には XPath は、XML ドキュメントの一部をアドレッシングするための言語であり とか書いてあって紛らわしい)

だめだもう寝る。

  1. トップ
  2. xpath
  3. XPath の紛らわしさ
  1. トップ
  2. web
  3. XPath の紛らわしさ
  1. トップ
  2. xml
  3. XPath の紛らわしさ

IE (Gecko, Opera, etc) を無視するのと、音声ブラウザを無視するのはおなじ。

  1. トップ
  2. web
  3. IE

っていう感じでループさせて15枚セレクトを作ってみる。コメント書くのめっちゃ苦手だ(w

もうちょいページ自体どういう風にするかを考え中。

  1. トップ
  2. music
  3. Jackets 15
  1. トップ
  2. art
  3. Jackets 15

daimas の日記サンズを解雇になった田臥は、五十嵐くんに似てる気がするのだが間違ってる? ってのを、ミカン食ってるとき不意に見て鼻水でた。似てる。特にヒゲが。ヒゲ。

  1. トップ
  2. music
  3. 田臥 || 五十嵐

画像のナニがアレとかでと、規約読み直したらアソシエイト参加できそうジャマイカ的なので、amazon から画像ひっぱってるところ (現状 /jacket, /playing) はアソシエイト ID くっつけるようにしたので、そういうのウゼーよって人はてきとうにコピペすると良いと思います。謎すぎるなコレ。

  1. トップ
  2. web
  3. Amazon

正確にはまだ試験休みなのはいいとして、ここ数日ずっとハイテンション。ちょっと怖い。ずっとは続かない。

とにかく想像力を失くさないようにしようと思う。とりもどせない。既にあんまり無いところが厳しい! 経験的想像力 (?) は外をもっと歩いたり、憂鬱さの沢山味わわないとダメだから難しい。早く気付くべきだね。想像力について。

去年の自分のサイトを見てみたら今よりもっとすごく糞だった。おととしの見たらヤバすぎた。しかも XHTML とか、その他関連技術が自分の中である程度マトモになりはじめたのは今年だった。なんかもう学び始めてから二・三年たっている気がする。この一年はすごく長かったみたいだ。それと日記に書く文章が無駄に長くなったりもしてる。過去の日記とか読むのは微妙に辛い (わらい) けど面白いもんだ。ウェブに公開しちゃうと自分で捨てちゃったやつまで残っていて笑える。消してくれ!とか思う。どうでもいいな。

  1. トップ
  2. life
  3. 生活 of winter vacation

狂人日記 とか、ネット上にも載ってる各種インタビューとかで木下氏が ASIAN KUNG-FU GENERATION がどうとかっていう話が結構出てきて微妙に驚いた。意外だった。むしろ嫌いな系統だと思ってた。

どうでもよすぎてセクション切るか迷ったけど一応記録。

あーあと、LOST IN THE AIR っていうアルバムが出るらしくて楽しみだ。でも二月は永遠に来て欲しくないな。

  1. トップ
  2. music
  3. アート & ASIAN (ry

冬に想像する夏は素敵だと思う。その、夏の中にいるときとは違って、木の緑色だったり、いろんなもんの青さだったり、その他キラキラしたものしか浮かばないからいい。まーようは夏が涼しければいいんです。だよね?

つまりこういう幸せな世の中 (こう表現しざるをえないっていうかそうしないとアレ) では冬が一番素敵な季節なんですよ。秋とか春とか夏は花粉症 (ブタクサ, 杉, イネ) もあるしねー。

  1. トップ
  2. life
  3. 冬における夏
  1. トップ
  2. imagination
  3. 冬における夏

#blosxom にてちょっと kyo さん と話していて、うんちゃら (いきさつ説明するのが面倒になった) いろいろカコイイジャケを見せてもらったりしてみて、カコイイジャケ紹介する blog とかないの?とか。んでとりあえず自分用にアレなのを作ってみるかって感じ。かなぁ。

ジャケ買い? 自分持ってないっつうか聞いたことないのもあるけど、ジャケット見るのはタダっつうかカッコイイジャケットは晒しといたほうがいいんジャマイカって感じで (むしろ教えてもらったのとかメモっとくためなんだけども) とりあえず作ってみた。中間ファイルは普通に XML。 追加するスクリプトが汚すぎ (とりあえず動け的) なのでそのうち直したい。直したい。いつ?

ちなみにヤバ気なのは This May Be the Year I Disappear / Recover, Green Mind / Dinosaur Jr., フェイクファー / スピッツ。女の子ばっかですねとか言わない。

  1. トップ
  2. music
  3. ジャケ買い?。
  1. トップ
  2. web
  3. ジャケ買い?。

最初の頃だいぶ適当でここら辺の考えが甘かったわけで、オリジナルを保持することを考えなきゃなぁとか思った。今のところホワイトスペースで段落の区切りになっているけど、やっぱ一行ずつ l 要素とかソレっぽいのでマークアップして突っ込んだほうがいい。XHTML にするときは <span class="l">一行分</span> みたいにして display: block な感じ。むーできればはやくやったほうがいいだろうなぁ……

  1. 本体の XSLT の修正。
  2. 現在の XML を l 使う形式に変換する XSLT の作成・検証
  3. スクリプトの若干の修正

ついでに URL にもリンク晴れるようにしたほうがいいか。使えるタグ制限とか上手くできないかなぁ。

  1. トップ
  2. web
  3. コメントの XML

前回 (2004-12-01) と全く同じ。

  1. Cron のメールが来ない。
  2. 前日のメールには Killed が含まれてる (でも見る限り Namazu ではなくて、変換している Ruby スクリプトが殺されてる)
  3. NMZ.lock2 が残っている。
  4. NMZ.lock2 を削除して mknmz すると検索結果がズレる。
  5. インデックスファイル全削除で対処。
  • なぜ Kill されるのか。
  • なぜ NMZ.lock2 が残るのか。
  • なぜ検索結果がズレるのか。

わかんねーw

  1. トップ
  2. web
  3. Namazu Cron

IE でもぐにゅーんってなるようにした。情報はでない。高さが auto だから計算できない。その代わり title 属性は削除しない。

とりあえず Gecko と IE で動いて、Opera で確認したらダメ。仕方ないのでブラウザ振り分けコードがいっぱいちらばってる。うぜー

問題点は position: relative なのに、元の位置で大きさが反映されちゃうことだったわけ (後続する要素がズレる) なので、相殺 margin 仕掛けて解決した。relative である限りは margin しかけようが何しようがいいはず (たぶん) だけど、Opera (7.6 preview) だと崩れましたみたいな。

  1. トップ
  2. web
  3. Album 画像のぽぷあぷの続き IE
  1. トップ
  2. music
  3. Album 画像のぽぷあぷの続き IE

村。人たくさん。復讐。「何であっちには誰もいないんだ?」。葬儀屋。学校。階段。スキー。

  1. トップ
  2. self
  3. 夢。葬儀屋

デフォルトスタイルシートをクリスマス風に。クリスマスだから何だっつう勢いプラス赤と緑かpgrみたいな……

  1. トップ
  2. web
  3. クリスマス風に

病院の中の温泉。海の中の温泉。ボーイ。話すのが遅い。小学生。写真。制服。小説を書く体育教師。

  1. トップ
  2. self
  3. 夢・温泉めぐり

アルバム画像の下にアルバムの情報を表示するようになった

opacity とか使ってる。IE はそもそも無理ですよ。Opera は特に対策しなくてもそのままいけたっぽい。

かなり微妙と思われるのは、ブラウザデフォルトのツールチップを消すために title 属性とかを DOM から消しちゃってるところ。そういう系ブラウザが Javascript をどの程度解釈するかよくわからないけど、もしかしたら結構アレすぎるんじゃないかとか思ったりもする。どうなんだろ。

ブラウザのツールチップを消す方法が他に思いつかないんだよなぁ……stopPropagation とかでもしかしたら?とか思ったらできなかった。切ない。

前回に続き例の画像のジャケットがアートなのはアートのジャケットは全体的に好きっつうかかっこいから。それ関係で amazon に Requiem for Innocence のジャケット画像 (が中でも一番好き) がないのがすげーアレなんですけど。

  1. トップ
  2. web
  3. Album 画像のポプアプの続き
  1. トップ
  2. music
  3. Album 画像のポプアプの続き

コードに色づけ Firefox でしか試してません。Opera ではもしかしたら動くかもしれないけれど、IE では絶対動きません。コアな部分 (つまりコードをマークアップするとこ) はブラウザにあんまり依存しないみたいなので、ブックマークレット化する部分をクロスブラウザすれば OK だけど面倒臭い。

  1. ブックマークレット起動
  2. 色づけしたいテキストをクリック (カーソルが I ビームになるとこ)
  3. プロンプトに使用するシンタックスを入力。

ECMAScript, Ruby, Lisp, XML, CSS, PHP, Io, Perl が適当に色づけ可能だと思うけど Perl はよく知らないし、Lisp はそもそもキーワード的なものがないので微妙。Javascript も JScript も ActionScript でも ECMAScript のスーパーセットである限りは ECMAScript でそこそこ色づけできるはず。HTMLXML でソレっぽくなるはず。

このスクリプトは少なくともコード部だけは独立してマークアップされてる必要があります。

<p>ほげほげ</p>
<pre>code</pre>
<span>code</span>
<code>code</code>
<p class="foo">code</p>

上のは OK. 下のは NG

<p>ほげ<em>ほげ</em>うげ
code</p>

子要素を持った要素は無理 (テキストノードに兄弟要素があるとダメ) ってことっす。

巨大なコードをやると死ぬかも。でも俺は謝らない。

Opera で一応動くように修正。リンクに %22 とか含まないようにしたのと、中途半端な IE 対策 (コピペなので) を削除。

  1. トップ
  2. prog
  3. コードに色をつける bookmarkletcode coloring bookmarklet
  1. トップ
  2. web
  3. コードに色をつける bookmarkletcode coloring bookmarklet

昨日は12時ぐらいから18時ぐらいまで寝てた。日の光が気持ちよすぎた。それだけ寝てもまだ眠い。やりたくないことが多いときは眠くなる。現実逃避。

夢。見た夢。書こうと思ってたのに忘れてた。そして忘れた。そんなにいい夢じゃなかった。

  1. トップ
  2. life
  3. 寝すぎでも寝よう

Trackback URI がコピーしやすい用に Trackback URI (本体のほう) をクリックするとプロンプトに URI 表示するようにしてみた。まぁ Trackback 自体殆ど来ないし、来まくっても困るんですけど……コメントとか削除するシステム作ってないので手動削除だし。

  1. トップ
  2. web
  3. Trackback URI の UI
  1. トップ
  2. prog
  3. Trackback URI の UI

SWAN SONG (ART-SCHOOL) を聞いてて音量あげようとおもってキーボードに手を伸ばしたときにデジャヴ。部屋は机の上の蛍光灯だけ。もう眠い。でも寝たらネタが思いつかない。ネタ?

  1. トップ
  2. life
  3. デジャヴ