勝手にしやがれ - 2004年2月 -

目次

Macintosh(Panther)でXSLTを扱う

2004-02-12

XSLTを扱うにはXSLTプロセッサが必要である事は言うまでもないが、その導入と言うか下準備には色々な知識を要する。僕の探し方が悪いのか、この下準備に必要な情報がなかなか見つからない。前にも述べたが、MacでXSLTとなると途端に情報が少なくなり、初心者には敷居が高いように思える。まあ、「使いたければ勉強しろ」と言う事なんだけれども、XSLTだけでもかなり難しいと思うし(少なくとも僕には難しい)、その上他の知識が必要というのは酷なんじゃないかなと言うのが正直な気持ちである。で、何かの足しになればと思って、ここに僕の使っているXSLTプロセッサの導入の仕方を書いておこうと思う。

断っておくが、僕もそれほど詳しくは無い。だから詳細は分からないし、「動けば良い」という姿勢なので、その辺のところは分かっていて貰いたい。それ以上の事をやるには己で調べてほしいし、全ては自己責任であるという事は言うまでも無い。

ちなみに現在僕が使っているプロセッサはSaxon・libxslt・Xalan・XSLT Toolsの四つであり、以下、導入が簡単と思える方から紹介します。導入するにあったての前提はMacintoshでPanther(Mac OS X 10.3)を対象としております。また、XSLTを扱うにはコマンドラインからが基本になります。よって、多少なりともターミナルを理解し扱える事が大前提です。

Saxan

これが一番簡単だと思います。Saxonには二つのバージョンがあって、メジャーリリースである6.5.3とXSLT2を先行して採り入れてある7.8があり、僕は7.8を使っているので、こちらの方を取り扱います。

  1. まず、Saxonのサイトから7.8をダウンロードし、解凍します。
  2. 解凍したフォルダの中から、saxon7-jdom.jar・saxon7_sql.jar・saxon7.jarの三つのファイルを、/Library/Java/Extensionsにコピーします。

以上で準備は完了です。XMLファイルをXSLTファイルを使って変換したい場合はターミナルから、以下のように打ち込むと出力されます。

java net.sf.saxon.Transform XMLファイル XSLTファイル

特定のファイルとしてセーブしたい時は、以下のように打ち込みます。

java net.sf.saxon.Transform XMLファイル XSLTファイル > OUTPUTファイル
libxslt(and libxml)

こちらも簡単ですが、不可視属性のフォルダを扱う為、少々手間が掛かります。

  1. まず、libxml2,libxslt BinariesからPanther用のをダウンロードします。これはディスクイメージ型ですので、デスクトップにマウントされます。
  2. 次に、その中からlibxml.framework・libxslt.framework・libexslt.framewarkの三つのフォルダを/Library/Frameworksにコピーします。
  3. 次にxmllintとxsltprocを/usr/binフォルダにコピーするのですが、/usr/binフォルダは通常ではFinderから見えません。ですので、ターミナルからコピーするか、もしくはTinkerToolなどを使って不可視属性のファイルを見えるようにしてからコピーするしかありません。後者の方がFinder越しに出来るので分かり易いです。TinkerToolは便利なアプリケーションですので、この際入れときましょう。

以上で準備は完了です。使い方はターミナルから、以下のようです。

xsltproc XSLTファイル XMLファイル

特定のファイルとして保存したい場合です。

xsltproc XSLTファイル XMLファイル > OUTPUTファイル

こちらにはGUI環境で使用できるtkxsltprocと言うのも用意されています。ターミナルからの操作が苦手な方は、これを使うのも手です。

上記の二つは導入自体は簡単なのですが、一つ重大な問題があります。それはUnicode以外の日本語の文字コードが通らないと言うものです。ですので、最も日本で普及しているシフトJISが使えません(原則、XMLを扱うプロセッサはUTF-8とUTF-16の二つのエンコーディングはサポートしなければいけません。僕は専らUTF-8を使用し、UTF-16は試した事がありませんので、こちらの方は何とも言えません。しかし、どっちにしろシフトJISやEUCは通りません)

比較的新しいブラウザではUnicodeをサポートしていますが、古いものはサポートしていません。故にWWW上でUnicodeを使う事はいささか冒険になってしまいます。日本だけを対象とするならば現時点ではシフトJISが最も適していますが、シフトJISを通せるプロセッサとなると僕はXalanくらいしか知りませんので、以下、Xalanの導入の説明をします。

Xalan-Java

実はPantherには、既にXalanは入っています。ターミナルから、以下のように打ってもらえば分かります(XalanはメッセージをシフトJISで出力しますので、ターミナルのウィンドウ設定から文字コードをShift JISに変えて下さい)

java org.apache.xalan.xslt.Process

但し、入っているのは2.2D11と言う少し古いバージョンです。Java 1.4.2にアップデートすると、2.4.0というバージョンに置き換わるようです。でも、僕の試した限り、なんかバグがあるっぽいので、最新版を使った方が良いんですが、最新版をただ単に入れるだけでは動きません(詳しくはありみかさんの「Javaでデヴウータンにしてやられた」を参照の事)。動かす為の方法は何通りかあるみたいですが、ここでは最も原始的な方法を採ります。

  1. まず、apacheのXalan-Javaからxalan-jをダウンロードし、解凍する。
  2. /Library/JavaにXalanというフォルダを作ってその中に、解凍されたフォルダ(現時点ではxalan-j_2_5_2だと思います)の中身を全てコピーする。

以上で準備は完了です。

で、使い方ですが、クラスパスを通すため、-Xbootclasspath/p:<jarファイルへの絶対パス>を付け加えます。上記の通り準備したのなら、以下のようにターミナルから使えます。

java -Xbootclasspath/p:/Library/Java/Xalan/bin/xalan.jar:/Library/Java/Xalan/bin/xercesImpl.jar:/Library/Java/Xalan/bin/xml-apis.jar org.apache.xalan.xslt.Process -xsl XSLTファイル -in XMLファイル

Xalanを動かす為には最低xalan.jar・xercesImpl.jar・xml-apis.jarの三つのファイルが必要になります。要はそれらjarファイルの絶対パスを-Xbootclasspath/p:以下に付け加えれば良いのです。動かない時は多分クラスパスが通っていないのだと思います。解凍されたxalan-jフォルダの中にあるbinフォルダが、自ら作った/Library/Java/Xalanフォルダの内にあるのかを確認して下さい。

特定のファイルにセーブしたい場合です。

java -Xbootclasspath/p:/Library/Java/Xalan/bin/xalan.jar:/Library/Java/Xalan/bin/xercesImpl.jar:/Library/Java/Xalan/bin/xml-apis.jar org.apache.xalan.xslt.Process -xsl XSLTファイル -in XMLファイル -out OUTPUTファイル

これで動くようにはなりますが、タイピング負荷が掛かり過ぎ、不便です。そこで.bash_profileと言うファイルにaliasを書き込みます(ここでは動かす事を目的としているため、.bash_profile及びaliasの説明はしません。詳しい事は自分で調べて下さい)

  1. まずターミナルを起動させ、以下のように入力します。
    touch .bash_profile
  2. 次に、以下のように入力します。するとテキストエディタが起動します。
    open -e .bash_profile
  3. そこに以下のように記述し、ファイルをセーブして閉じます。
    alias xalan='java -Xbootclasspath/p:/Library/Java/Xalan/bin/xalan.jar:/Library/Java/Xalan/bin/xercesImpl.jar:/Library/Java/Xalan/bin/xml-apis.jar org.apache.xalan.xslt.Process'(改行)
    
  4. ターミナルを閉じます。

以後、Xalanを使用する時は、ターミナルから以下の様に入力するだけで済むようになります。

xalan -xsl XSLTファイル -in XMLファイル

この他にシェルスクリプトを使う方法とかもあります。RADKRAFT: Using Xalan-Java XSLT Processorなどを参考にしてみて下さい。

以上はターミナルから使うプロセッサですが、次に紹介するのはAppleScriptから使えるプロセッサです。

XSLT Tools

キモはXalan-Cなので、シフトJISも通ります(確か通ると思った。間違っていたらご免なさい)。AppleScpirtで使う為、Script自体を理解していなければあまり意味が無いかもしれません(一応、簡単な変換アプリが同梱されてます)。導入自体は簡単です。

  1. まず、XSLT Tools Scripting Additionから、XSLT Toolsをダウンロードし、解凍します。
  2. 解凍されたフォルダの中にあるXSLT Tools.osaxファイルを、/Library/ScriptingAdditionsにコピーします。もし、/LibraryにScriptingAdditionsフォルダが無ければ、「ScriptingAdditions」の名前でフォルダを作り、その中にコピーします(サイトの説明ではユーザーのライブラリ・フォルダ以下にコピーするように書いてありますが、どちらでも動きます)

以上で準備は完了です。試しに同梱されいるサンプルを実行してみて下さい。

前にも書きましたが、AppleScriptからターミナルのコマンドが呼び出せるので、Scriptに組み込む際にXSLT Toolsにこだわる必要はありません。ただ、これはAppleScript専用ですので、やはり便利です。任意の値を簡単に取り出せたり、Scriptを使った独自関数なども作れますので(Xalan-Jもjs.jarを組み込めばJavaScriptで独自関数が作れますが、使った事無くて...)

以上、簡単にXSLTプロセッサ導入の方法を述べてみましたが、お勧めはSaxonでしょうか。やはり導入が簡単で、それほど知識も必要ないですし。でも、Macを使っているんでしたら、AppleScriptが使えると非常に便利です。ですんで、XSLT Toolsを入れといて損はありません。AppleScriptを勉強したかったら、鳶嶋工房 / AppleScriptさんの「ほ〜むメイドAppleScript」を覗いてみて下さい。自分もこれで勉強しました。兎に角便利です、AppleScriptは。

オオッ、さとみかんに捕捉されとる!?

2004-02-14

びっくりですわ、さとみかんに捕捉されるとは。

と言う事は、瞬間的にせよ相当なアクセス数があったと予想されるが、カウンタも無ければアクセスログも取ってないんでオイラには分からん。ただ単にプロバイダさんの領域、貸して貰っているだけですんで。兎も角、僕の気持ちの上では光栄には違いないだけれども、いいのか、こんなサイトでも...。っま、いずれにしろキバらないようにしますわ。あんまり頑張りすぎると、また持病の放置症候群が発病しますんで。

スタイルシートでも弄ってみようかなあ。ほぼスッピンっては芸が無いだろう、流石に。IEでも何かおかしな表示してるし。

OpenOffice、入れてみた

2004-02-25

Mac版OpenOfficeで日本語入力ができるようになったと聞いたので、OpenOffice.org日本語入力対応版のページを参考に早速入れてみました。

確かに使えるようになっていますが、なんか僕の環境では日本語入力中に止まったりします。導入までの方法や設定の仕方がまずいのか...、と言うよりX11が、よう分からん。でも日本語さえ入力しなければうまい事動いてくれるし、ワープロ以外の機能も大丈夫みたいなので、ここまま使ってみようと思います。

まともに使うんだったら、MS-Officeを買えってことですね、結局。