XSLT3.0への道(25) Exselt XSLT プロセッサ

XSLT 3.0は2月にW3Cの勧告候補(Candidate Recommendation)も出て佳境の感じがします.実は私がXSLT 3.0に期待していることの一つにパッケージ機能があります.これは機会があったらまた書きたいと思いますが、今までのXSLTのxsl:include/xsl:importによる弊害を解決してくれる大きな前進になるに違いないのでは??と考えるのです.もしあなたが普段自分の目的のためだけに専用のスタイルシートをかいているのでしたらなんの関係もないかもしれません.でも他のスタイルシートに再利用してもらうことを前提としているようなライブラリ的な性格を持つスタイルシート、または基礎的な機能をインプリメントして、応用は別のスタイルシートから利用してもらうというような使い方を考える場合、現在のXSLT 2.0のxsl:include/xsl:importではあまりにも力不足だからです.

詳細は次項に譲りますが、このパッケージ機能(xsl:package/xsk:use-package)はなかなかWEBにもリソースがありません.どこかに動いてくれるサンプルがないものかと考えているうちに、W3Cのテストスイートには必ずあるに違いないと確信しました.そしてようやく見つけ出したURLが以下になります.


ここにはいろいろな種類のテストデータが満載です.多くはSaxonの開発者Michael Kay博士によってポストされていますが、Abel Braaksmaさんによって作成されているものもあります.Abel Braaksmaさんと聞いて思い出しました..net + F# でXSLT 3.0のXSLT プロセッサを作っている人です.もしやと思ってWEBをあたってみると、Exselt V1.0のβ版が出ていました!!!


コマンドラインで実行できますが、インストールするとExseltDemo.exeというプログラムが出てきて、これでデモを試してみたり、ヘルプを見ることができます.

例えば次のようなスタイルシートを実行すれば、ちゃんとxsl:try~xsl:catchが機能して

イメージ 1


<?xml version="1.0" encoding="UTF-8"?>
<result>
   <division>You divided by zero!</division>
</result>

という結果を得ることが出来ます.(でもデモプログラムの完成度はまだまだなのであまり期待してはいけないです.)

しかし、私が「カッコイー!」と思うのは、

1.マイクロソフトもやらなかったXSLT 2.0をもすっ飛ばして、たぶん1人でXSLT 3.0を実装したこと.
2.SaxonはJavaで組んでありますが、Exseltは関数型言語のF#で組んであること.

です.私なんかは一介のスタイルシートデベロッパーに過ぎませんが、ともかく自分のモチベーションを持たせ続けてXSLT 3.0 プロセッサのβをだせるところまで来ていること自体がすごいと思います.

さっそくパッケージをどのように使うか質問をしてみたのですが、数日たったらAbelさんから回答をいただけました.次回はパッケージについて書いてみたいと思います.