もしこれを読まれたあなたがDimitre Novatchevさんをご存知だったら相当のXSLTに憧憬が深い勉強家じゃないかと思います.Dimitre Novatchevさんは、XSLT/XPathの世界ではとても有名な「オタク」です.すごいプログラムばっかり書いています.私もWEBを探しに探した末に彼が作ったXSLT1.0のテンプレートを見つけ出し、数ステップ変更しただけで索引のソーティングのコアモジュールとして使わせてもらっています.
DITAのindextermをソートする
[xsl] Sorting with unknown number of sort keys (Was: Re: Sort question)
http://www.biglist.com/lists/xsl-list/archives/200303/msg00007.html
http://www.biglist.com/lists/xsl-list/archives/200303/msg00007.html
その彼が今年の8月初めのBalisage 2013 The Markup Conferenceで"Programming in XPath 3.0"というテーマでプレゼンテーションを行っています.これがBalisageのWEBに公開されています.
Programming in XPath 3.0
XPath 3.0は今後勧告になってゆくであろうXSLT3.0とXQuery 3.0で共用される重要な構成部分です.どのようなことがかかれているか、簡単に紹介いたします(厳密ではありません.スゴク自己流です).
1.XPath3.0はXPath1.0/2.0で成し遂げられなかった特筆すべき特徴を実装している.
2.例えば、Definitive XML Schemaの作者として有名なPriscilla Warmsleyさんが、FunctXというXQuery1.0とXSLT2.0で使うライブラリを公開している.しかしXQueryとXPathで2つの実装を作らねばならない.
FunctX Functions
3.高階関数(High Order Function)を実装している.関数をパラメータとして渡したり、関数の戻り値を関数とすることができる.
4.関数のPartial application(部分適用 http://en.wikipedia.org/wiki/Partial_application)ができる.
6.無名関数の再帰が実現できる.
7.新たなXMLドキュメントや要素を生成できる(!)
XPath does not allow projection of new types. It can only return collections of nodes from the tree, whereas LINQ to XML can execute a query and project an object graph or an XML tree in a new shape. LINQ to XML queries encompass much more functionality and are much more powerful than XPath expressions.
でもXPath3.0は、新しくXMLドキュメントや要素を生成できちゃいます.
8.XSLT3.0のxsl:evaluateを使用すれば、XPath式を外部のテキストファイルから持ってくることもできちゃう.
などなどです.XPath 3.0はいいことづくめですね!興味のある方はぜひご自身でご覧ください.