Sponsored Link

トップページ > 目次 > 2003年1月 : 前月 | 翌月

スカンクワークス

あのー( ̄△ ̄; Last-Modified: Thu, 23 Oct 2003 0:48:52 JST

おいらの手にしたXSLT関連書籍

話題に乗り遅れた感があるが、XSLTの勉強に使った書籍を挙げてみることにする。いろいろ買ったほうではあるけど、どれほど身になっているのやら。とにかく読んで使って感じてみたことをごしょうか〜い。

本日のコンテンツ一覧

2003-01-12

移行第2幕

このコンテンツでのHTML規格採用の推移を簡単に振り返ってみると、昨年3月の開始時はHTML 4.01Transitional、5月からはXHTML 1.0 Transitional、12月からはXHTML 1.1となっている。XHTML 1.0で書き始めてからXHTML 1.1に移行するまでの期間がゆっくりだったのは、実は5月の最初の記事でもネタにしたXHTMLのMIMEタイプの問題があり、それのうまい採用方法がわからなかったというのがある。

実際、11月にPHPでHTTPヘッダーを書き変えるという方法論がわかってからは、対応はPHPの練習も含めて2週間ほど。対応と勉強に使う時間はそれほどかからなかったのに、結果だけ見るとポインターが見つからなかった半年近くの間ボサっとしていたことになるわけだ。<2ちゃんねるで遊んでいたせいもあるが( ̄△ ̄;

それはともかく利用の方法がわかった以上は先に進みたい、おいらはせっかちなのだ。移行第2幕としては、先人と同様に自分の管理しやすい形態でマークアップ文章を作り、それを元にHTMLを生成する方法を採ることにした。

このような形態を採る理由のひとつには、ページ内リンクの生成や更新毎に執筆しているリード文の管理を楽にしたいという要望があったからだ。

まず毎度くだらないことを書いているページ初頭のリード文だが、次の更新の際は別のファイルにカット&ペーストしてバックアップするようにしている。これが当日分のみが表示されるようになるといいなぁ、という妄想がおいらの中にあった。

また、ページ内リンクはなんらかのスクリプトによる自動生成も考えたんだが、上手い方法が見つからず手書きのまま。だが結構この作業がおっくうなのだ。これを慣れたXSLTによる自動生成に切り替えるだけでも、それなりのメリットが出てくる。

マークアップに使うXMLだが、独自に作ってみることにした。自分の目的に合った構造とXSLTを書くときのXPathの記述を分りやすくしたいという2つの要望を両立させたかったからだ。ただ闇雲に書くのもなんなので、RSSのソースを見ながらXMLらしい書き方ってなんだろうなぁ、と思いながら記述していった。まだ満足のいく出来ではないので、今後のコンテンツの記述によってあれこれいじっていって、かたまった段階でスキーマを書こうかなぁ、と。

ただし、自分で語彙を作るのはコンテンツの「ロジック」に必要な部分のみ。「プレゼン」にあたる部分は、XLinkの語彙を使うことを試してみた。この方法を採用したのは、ハイパーリンク、画像の埋め込み、引用などを同じ語彙でこなせそうだな、という目論見があるのだ。それにXLinkは専門家が考えただけあって非常に興味深い語彙が用意されている。Webページの記述に生かせる部分は少ないが、憶えておくと何かいいことありそう。

さらになるべく自動化を進めたいので、記事ごとのid付けや最新日のみに振っているlatestというidも自動で振るように試みた。XSLTの段階でコンテクストを活用するマークアップが必要になったが、いくつかの関数を活用して目的を達成。こういったプログラム処理を馴染みのあるXMLの書式で書けるのもおいらにとってはありがたいのだ。

この辺の工夫点は今後少しずづ書いていくつもり。元のXMLXSLTをアップしておくので、興味のある人はツッコミなどいただけるとありがたいかな。特にXSLTはクソみたいな記述になっているから、改善の余地ありのような気がするし( ̄△ ̄;

Mac OS XでのXSL Translation

時代は変わりましたなぁ( ̄△ ̄;。古のXTとXercesを使った方法でXSLT環境を構築しようとして、何故かXercesのクラスパスが見つかないと言われてしまう。それで全くないJavaの知識を基にあれこれ設定したんだが、どうしても動かず苦しんでいたとこなんだ。

んで、sonorous howlの1月11日分XML Tools & XSLT Toolsを見て、AppleScriptからアクセスできるXSLTプロセッサー「XSLT Tools」の存在を知った。渡りに舟とばかりに、おいらはすぐに飛び付いたね。

よく使い方はわからないのだが、サンプルにあった「Transform XML files」を使ってAppleScriptのディレクトリに置いたターゲットファイルとトランスレーションファイルを読み込ませると、同じディレクトリ内に結果が吐き出されることが判った。この作業ディレクトリを書き替えるのにどのようにスクリプトを記述すればいいのかはおいらにはわからないのだが、このディレクトリにファイルを持って来てから処理すれば、とりあえず用が足りてしまう気もした。

もし、綺麗な使いかたができるように改造するなら、インフォテリアの出している、超高機能だがくそ高いXSLT変換ソフトのようなインターフェースがかぶると使いやすいんだろうけどね。

2003-01-13

RSSの修正

11月から更新記録RSSフォーマットにて配信しているわけだが、どうもRSSの語彙を勘違いしていたらしく、ページロゴに使う画像へのリンクとその画像が差し示すページへのリンクが逆に指定されていた。これは暁に死すの北村さんの指摘によって解決したもの、どうもありがとうございます。

実際、おいらが知っているRSS表示ページの中でこの影響を受ける(つまり画像を拾おうとしていた)ものがいくつかあった。北村さんの某方面RSSをHTML表示 (via rss-jp.net)を始めとするRSS-JP.netのスクリプト採用ページや、my.opera.comで提供されているOperaのカスタムパネル向けのRSS表示CGIを通した場合がそれにあたる。

こういうのってつまるところ、いい加減なマークアップで発信すると、自分の知らないところで、多大なる影響が出てしまうってことだ。元々ウェブがリソースの相互提供を目指している部分がある以上、こういうことがあるってことはしっかり認識しておかないと、というのを肝に命じた一件でありました。

ちなみに、RSSにこのページのヘッドラインをPHPを拾わせることも考えているんだけど、.htaccessで.xmlにPHPを上手く設定できなかったり、任意のパスをPHPで拾わせる方法を見つけられなかったりして悩んでいる<ヘタレなんで( ̄△ ̄; 。どうせいつもの通り、方法がわかればすぐなんだろうけど。

RSS、いくつかの覚え書き

ここしばらく、RSSについていくつかの重要な言及があったのでまとめておこうと思う。

まず、上に紹介した北村さんの徒書1月12日分「RSSを作ってみる」だが、CGIを使った自動生成の方法にてRSS発信を導入したいきさつが書いてある。

その際に参考になったのはRSSの実用例を見ていると、「色んなサイトのRSSファイルを収集 → ツールにより見やすい形に加工して更新情報を表示」というのが一般的な利用法のようであ り、必ずしも1つのRSSファイルを直《じか》にブラウザで読みやすくする必要はないのかもという見解。おいらのサイトはThe WebKanzakiのThe Web KANZAKI - Updates as RSSにならって、XSLTを使ってページにHTMLのスタイルをかぶせている。これは当時、情報をてっとり早く見せる意味もあってこの方法を採用した。だが、現在はこれ以外にも「NetNewsWire Lite」を始めとするRSSリーダーソフトの存在も確認しているので、無理にブラウザーで表示させる必要がなくなってきているのも確か、というわけだ。第一、普段Operaを使っているので、うっかりあのページに移動してしまうと、えらいことに( ̄△ ̄;

また、RSSのMIMEタイプの件もとりあげられている。これも非常に参考になるので、十分に調べたのちに検討してみようと思う。

その徒書経由で知ったそふぃあさんのagenda 2002年9月20日分「rss:channel要素のrdf:about属性」では、RSSで採用されているマークアップ法についての見解が書かれている。

おいら自身まだ慣れていないこともあり、XMLでの理想のマークアップがどのようなものかがはっきりとは判っていない。先日の記事でRSSのソースを見ながらXMLらしい書き方ってなんだろうなぁ、と思いながら記述していったと書いた通り、RSSが提供するメタデータをある程度参考にしたわけだが、今後もこれは課題にしたほうがよさそうだ。なにせ、このリンク先に書いてあることはおいらにとってはまだレベルの高い話題のように感じてしまったのだ。RSSの仕様書も読むようにしよう。

その他、最近よく話題に登るRSS-JP.netやThe Web Kanzakiの「簡単なRDF Site Summary (RSS)の説明」なんかは、RSSを確実に自分のものにするまで何度もチェックしていいものだと思う。

複数のリンク先

ちなみに、さっきのRSSリーダーソフトのリンク先ってひろりんさんから複数紹介してもらっているので、本当は複数書きたかったんだ。XLinkの語彙を使うと、下のようなマークアップをするのが適当か。

複数のリンク先をXLinkで記述する方法

  1. <!--複数のリンクを記述-->
  2. <link
  3. xmlns:xlink="http://www.w3.org/1999/xlink"
  4. xlink:type="extended">
  5. <contents
  6. xlink:type="resource"
  7. xlink:label="rss">
  8. RSSリーダーソフト
  9. </contents>
  10. <reference
  11. xlink:type="locator"
  12. xlink:href="http://blogspace.com/rss/readers"
  13. xlink:title="RSS Readers"
  14. xlink:label="rss1">
  15. </reference>
  16. <reference
  17. xlink:type="locator"
  18. xlink:href="http://www.ourpla.net/cgi-bin/pikie.cgi?RssReaders"
  19. xlink:title="RSS Readers"
  20. xlink:label="rss2"
  21. >
  22. </reference>
  23. <toReference
  24. xlink:type="arc"
  25. xlink:from="rss"
  26. xlink:to="rss1"
  27. xlink:show="replace"
  28. >
  29. </toReference>
  30. <toReference
  31. xlink:type="arc"
  32. xlink:from="rss"
  33. xlink:to="rss2"
  34. xlink:show="replace"
  35. >
  36. </toReference>
  37. </link>

これはこれで便利なんだけど、実際にHTMLに置き替える際の上手い方法論が見つからない。link要素が差し示しているリソースには註釈みたいなリンクを作って記事の一番後に飛はして、そこにリストを作るというのも考えているんだけど、さてどうXSLTを書けばいいものやら。。。

Last-Modified

おいらのサイトに対するさとみかんの捕捉対象が.htmlから.phpに変ったのだが、どうやら更新日時をうまく取得できていない模様。正しい更新日時を拾わせるためにはを見ると、HTTPヘッダのLast-Modifiedなるものを見ると書いてあるのだが、どうやらおいらのところはそれを吐き出していない模様。

.htaccessなんかはおいらにはさっぱりなので、phpで吐く方法がないかと思っていたらひろりんさんが以前にその方法を書いてくれていた

ただ、headerとして埋め込もうとするとヘッダー用のファイルが別ファイルなんで上手くいかない。しょうがないので文書の末尾に記述されるようにしたっす。アンテナで捕捉されている方、この値を見るようにしていただけないでしょうか( ̄△ ̄;

2003-01-15

そんな情報だけでもおいしいわぁ

何度も紹介しているMac OS X用のRSSリーダーのNetNewsWire Liteだが、一日中起動して1時間おきくらいに自動更新をかけているとなかなかおもしろい。何ってインターネットの動きが目に見えるような気分になるからだ。

NetNewsWire Lite

例えば、ZDNetの速報を拾っているRSSの場合、2〜3時間ほどたつとニュースが20近く更新されていることに気がつく。2ちゃんねるなんかも、どの時間帯に人が動いているのかが未読数の変動だけで、ある程度見えてくるのが笑える。厨どもが衆目を集めるために苦心して付けたスレタイが多いので、ヘッドラインだけ見ていても非常に楽しい。

この界隈のRSSもいくつか拾ってみているんだけど、ぱっと見タイトルだけで何のサイトかわかりにくいものもあるのが残念。なんとなく付けちゃったり、CGIが吐きだすものをそのまま利用しているだけだったりしてるんだろうなぁ。

受け手にどう見えているかわからないだけに、情報はわかりやすくしっかり書かないとなぁー、と思う今日このごろ。あ、ちなみにNetNewsWireの「Show Info」を押すと、現在選択中のサイトの基本情報が出てくるです。これである程度察っしをつけてるですよ。まぁ、なにかと便利な技術だなぁ、と思ってハァハァしてるってわけだ。

こんな調子で、収集したサイトの管理人の自己紹介ばかり表示されるソフトとか、そういう情報を記述する規格とかあったらおもしろいんだけど、誰か知らぬか。<それこそ、RDFの活躍の場のような気が( ̄△ ̄;

2003-01-16

まだまだ力技

最近この方面に眠っているXML系の記事を掘り返しては読んでいるんだが、agendaの2002年6月30日の記述から「カレントノードについて(XSLT)」というのが出てきた。

おいらがXSLTを書くときは、ひとつひとつ他の文書フォーマットへの変換のルールをしこしこ書いていっているわけだが、元の文書のどの部分に処理を適用するのかを指定しないとならない。XSLTの勉強を始めた頃、この指定を上手くできなくて「XSLTって難しい」と悩んだ記憶がある。

要は処理を適用させるノードのパスをxsl:template要素のmatch属性で確定させるものなのか、xsl:apply-templates要素(もしくはxsl:value-of要素)のselect属性で確定させるものなのかの判断がつかなかったんだ。いうなれば両者お使いわけだ。これがわからないと、ひとつの処理結果の中(例えば、ある要素のいろんな属性値として)に文書の複数の個所に散らばっている情報を取り込むなんてときは混乱の極みとなる。

この時は「XPathの書き方が悪いのかなぁ」と悩んで、ルート要素から書き直したり相対パスを見直してみたり、パスの省略を試みたり、と試行錯誤したんだが、XSLTの各要素の本来の意味や機能を判ってなかっただけだったのかも。xsl:template要素のmatchに書き込むパスは、カレントノードを指定するための基点と考えればいいんだろうか?

また、どこでカレンドノードを確定させるのかわからなかった理由に「select="."」という指定の存在があるのだが、これはこれで意味があるんだろう。まだよーわからんで使っているわけで、最近はカレントノードの指定をハズすことは減ったものの「非常に感覚的であやうい書きかたをしているなー」というのが自分の感想なのだ。自分で見てもツッコミどころ満載の力技マークアップですが( ̄△ ̄;

直近の夢

このコンテンツを記述している基のXMLファイルでは、ハイパーリンクに関してはXLinkの語彙を使っているんだが、現時点でリンクの語彙を借りている以上の役割りを果していない。おいらの使っているXSLTプロセッサーがどのくらいのことができるのかわかっていないから、というのも大きいんだが。

せっかくXLinkを使っているのだから、XPointerを使ったブロック参照というか、参照先の記事の埋め込みを実現してみたいんだ。それは、いちいちコピペだのなんだのをするのが面倒というだけなのだが( ̄△ ̄;

方法論だけは浮かんでいる。HTMLでいうobjectとblockquoteの中間のような埋め込み参照用の要素を用意しておいて、参照先のURIをXPointerの式で記述する。XSLTには埋め込み参照の要素に対して、XPointerで指定した範囲をまるまる取り込んでHTMLのblockquoteの中に配置してしまう処理を書いておく、という算段だ。

えーっとXSLTのプロセッサーだけで本当にそういうことができるのかまでは確認していないんだな、これが( ̄△ ̄;。まずローカルのファイルでそれができるか、から確かめてみないとね。

ウェブは変りつつある……のかも?

今まで気が付かなかったんだけど、今月のインターネットマガジンにblogの特集が載っている。「へー」って手に取ってみたんだが、その特集の後半に書かれていたのがRSSの更新情報を出力するという話題。

あの手のツールってそういう機能が付いているくらいのことは知っていたけど、RSSのクライアントソフトとかの紹介まであって、まぁ、なんというか、そういう時代になってきたのかな、と。

2003-01-26

おいらの手にしたXSLT関連書籍

ありみかさんがXSLTの勉強を始めたものの、解説書の購入で失敗したとのこと。紀伊国屋や書泉クラスの大型書店ともなると、XSLT関連の本でも20種類くらい置いてあるので、おいらは都心に出た日はなるべくその手の本を探すことにしている。すぐに買って帰ることは実は稀なのだが、普段から目を通しておくことで自分がどんなことをしたくて、どんな本を探しているかを整理しているわけだ。

とは言うものの、なんだかんだとXSLTの本は専門誌を含めれば10冊近く購入している。どれが一番いいと言うよりも、その時その時の勉強に一番役立ちそうなものを買っているので、自然と冊数は増えていってしまうのだ。その中から今まで購入したXSLT関連の書籍をざっと紹介しよう。

購入したXSLT本と簡単な評価

XML+XSLによるWebサイト構築と活用
  • ISBN4-7973-1340-4
  • ソフトバンク パブリッシング
  • PROJECT KySS、宮坂雅輝著
  • 2800円
最初に購入したXSLT本。XMLで作成したコンテンンツを直にウェブブラウザーで表示させるためのノウハウを説明した本。HTMLとの違い、タグ記述のルール(含むDTD)、XSLの使いかた、ASPによるサーバーサイトの処理を説明している。
とにかくIE5で表示できるコンテンツをXMLで作成することだけしか頭にないので、XHTMLの説明なんかは「(゜Д゜)ポカーン」だったりするし、2000年発行の本のためXSLの内容も古いMS仕様のもの。他の本に比べて特に秀い出ている点もないため、HTMLやCSSをきちんと勉強して来た人には完全に非推奨。
XMLクイックスタートガイド
  • ISBN4-8443-5587-2
  • エムディエヌコーポレーション
  • エリザベス・カストロ著
  • 2400円
ページ数が少くハンドブック的に持ち歩ける点に魅力を感じた、XML記述に関する入門書。XMLの簡単な説明、XMLスキーマの説明、名前空間について、XSLTを使った簡単なスタイルシートの作り方、XSLTによる条件処理について、XPathについて、XSLTでの関数、CSSの簡単な説明という内容。
XSLTの説明は初歩的な要素や属性の使いかたのみ。もちろん、その範囲を覚えることしか頭になかったので、その辺しか見てなかったので初期の勉強用としてはまあまあ良かったか。ただしひと通り感触を掴んだら、内容が薄いこともあってすぐにもの足りなくなったけど。
XSLT完全活用マニュアル
  • ISBN4-89471-353-5
  • ピアソン・エデュケーション
  • ニール・ブラッドリー著
  • 3200円
XSLTの専門書。XSLTの中でも構造の変換について注力。テンプレートの概念、HTMLの文書型宣言の吐き出し方、パスの指定、構造変換処理の具体例、XSL-FO、XPathについて解説を行なっている。
前述のクイックスタートガイドがもの足りなくなったころに、体系的に深い部分まで見られるリファレンスが欲しくて購入した本。XPathが省略なしの表記で書かれている点や、XSLTよりも先に書かれている点などに面食った記憶があるが、それは考えがあってのことだった、というのはagendaの「カレントノードについて(XSLT)」を読むまで気が付かなかったわけで( ̄△ ̄;
これから始める人のXMLガイド
  • ISBN4-8222-3814-8
  • 日経BP社
  • 丸山則夫、Project KySS、真島馨、松山貴之、森側真一著
  • 1400円
XSLTでのサイト構築およびコンテンツ記述の実践例を知りたくて購入したムック本。2000年当時のXMLの現状をひと通り見渡せるような内容で、データベースシステムとの連携の概要やXMLと連携するビジュアルベーシックアプリケーションの作成、IE5で見られるXMLコンテンツの作りかた(XSL+ASP)、データベースシステムの作成方法などが掲載されている。
ベースはMSXMLとActive Server Pagesの環境での話だが、これらに対応するXSLTの記述方法やサーバースクリプトとの連携などの情報は、読み物としてはそれなりにおもしろい。<え、そんなものいらねぇって( ̄△ ̄;
たのしいXML
  • ISBN4-88166-3220-1
  • ソーテック社
  • 矢内恭輔著
  • 2400円
初心者向けのXML解説サイトの話が出ると必ず名前が挙がる「たのしいXML」の書籍版。噂によると学校関連での引きが強いとかで出版されたとか。その話を教えてくれた人から見本品としていただいたもの。XMLの概念と整形式の書きかた、XPathの簡単な説明とMS規格のXSLの書き方を紹介している。
非常に見やすく「教材向け」という噂はあながち嘘でもなさそう。惜しむらくはIE5と旧XSLが前提のため、きちんと学んでいこうとする人には疑問点が残ってしまう可能性があること。とっかかりとしては最適な「良い見せ方」をしているので、正しい内容を載せた難しめの解説書とペアで使うのが吉かと。
Webコンテンツ作成のためのXSLT入門
  • ISBN4-8399-0740-4
  • 毎日コミュニケーションズ
  • 井上孝司著
  • 3200円
MSXML3を使ったXSLT本。MSXMLのセットアップ、XSLTの基本的な記述法、表現別の記述法、条件による出力の分岐、VBスクリプトとの併用、スタイルシートのモジュール化、いろんな実践例の紹介となっている。XMLを使ったプログラマー予備軍向けの本か。
勉強が中断していたあと、久しぶりに購入したXSLT本。XPathの実例サンプルがあれこれ載っているので購入。とは言うものの、あまり読んでないので何がなんだか( ̄△ ̄;
改訂版 標準XML完全解説 -下巻-
  • ISBN4-7741-1302-6
  • 技術評論社
  • 日本ユニテック著
  • 2980円
XMLを体系的に網羅したうえでXSLTを説明してくれている本が必要だろうと思い購入。上巻ではXMLの整形式やDTD、名前空間にXHTMLなどXMLの基本概念をみっちり押え、こちらの下巻にてXPath、XSLT、XLink、XPointer、DOM、SAX、XML Schimaなどのおいしい関連技術の紹介を行っている。
XSLTの要素やXPathの指定がドキュメントツリーツリーのどこへ影響するのかを図解で説明しているので、時間をかけて概念から勉強するのに向いているのかも。ただ、片っ端からずらずら説明事項を挙げつらっているため、見易いという印象は受けない。
また、XMLの関連/応用規格を広く押えている分膨大な情報が詰っており、知りたいことしか見ない場合、本の大部分がすぐには役に立たないことになる。上下巻を揃えると5000円以上するため、その時その時の勉強に使うには費用対効果が悪い気もする。が、XML関連の百科事典として、まだ知らないXML技術の内容を調べるたのにも使えるので悪くはないかな、と。

ここに挙げた本のほとんどは、XSLTの記述法に関するものばかりで、プロセッサーは何を使えばいいとか、自分のサーバーでXSLTを使うためにはなどについては書かれていない(いくつかはMSXMLやIISを使うことを前提に書いてあったが)。2ちゃんねるのXML関連のスレッドでUNIXサーバー用のプロセッサーについて聞いたりしたことがあるんだが、それはJavaで動くものだったりApacheのモジュールだったりして、なかなか敷居が高い。パフォーマンス的にもどうかなぁ、という気もするので当面こちらには首を突っ込まないようにしようとは思っているわけだが。

最新記事一覧 | プロフィール