XSLT3.0

XSLT 3.0への道(35) xsl:accumulatorでスタックを作る

「XMLの鬼門:処理命令」で、oXygenなどのエディタが生成する処理命令は通常のXSLTスタイルシートでは処理が難しいことを説明しました. ではこれを解決するのは何か?恥ずかしながら、以下のSaxonのドキュメントを見るまで知りませんでした. saxon:assign …

XMLの鬼門:処理命令

XMLを処理する上で普段めったにお目にかからないのが処理命令です. 普通オーサリングで意図的に処理命令を書く人はまずいらっしゃらないでしょう?ではどのような場面で処理命令は使われるのでしょうか? OxygenやXMetaLなんかのXMLエディタを使うとTrackin…

XSLT3.0への道(34) "=>" と" !" と高階関数でチャチャッとやってしまう.

普段Javaなんてめったに使わないのですが、たまたまコーディングをせざるを得なくなり、同業の女房の持っている本を見たら「Javaによる関数プログラミング」というのがあったので読んでみました. Java8になって追加されたメソッドを使い、コレクションをス…

XSLT3.0への道(33) 楽しいXPath 3.1

よくDITAの導入時にお客様と議論することがあります. 「どの要素・属性を使用されるのですか?それがわからないとプラグインのスタイルシートなんて書けません!」 でも、必死にExcelでDITA 1.3の要素/属性一覧を作ってお客様に記入してもらっても、結果は…

XSLT3.0への道(32) 使ってみた感想

XSLT 3.0はやはり実際の開発現場で使ってみるべきだと思います.そうしないとなかなか感触というものがわからない.(もちろん顧客の条件でおいそれとXSLTのバージョンを上げるわけにはゆかない場合もあるでしょうが) ちなみにXSLT勧告上の従来の2.0との違…

XSLT3.0への道(31) パッケージを試してみる(その2)

ちょっと進んで(?)次のように複数のパッケージを試してみます. [test-pkg-xslt3.xsl]

XSLT3.0への道(30) パッケージを試してみる(その1)

2017年の4月頃からずっとxsl:packageに興味を持ちいろいろやってみたのですが、仕様を読む力不足でなかなか動くところまでたどり着きませんでした.すこしだけですが試せるところまで来れたので、紹介します. まずxsl:packageを作るのは、それほど難しくあ…

XSLT3.0への道(29) ついにXSLT3.0は勧告となりました.

XSLT 3.0は2017年7月8日にW3C勧告となりました.以下はxsl-listに投稿されたEditorのMichael Kayのものです.せっかくなので日本語訳してみました. Subject: [ANN] XSLT 3.0 and Saxon 9.8 From: Michael Kay <mike@saxonica.com> Date: 2017/06/09 2:26 To: xsl-list <xsl-list@lists.mulberrytech.com> XSLT 3.</xsl-list@lists.mulberrytech.com></mike@saxonica.com>…

XSLT3.0への道(28) パッケージとは何なのか?..

そもそもパッケージとは何なのでしょうか? Saxonのメーリングリストなんかを見ているとMichael Kay博士はまずXSLT 3.0の記述を読んでほしいといっています.という訳で、2.8 Packages and Modulesを自分なりに訳してみました. In previous versions of the…

XSLT3.0への道(27) 閑話休題:無名関数で再帰する.

XSLT 2.0はxsl:functionが導入されて、これがXPathの中から呼び出せるのでずいぶんと便利になったものです.よくある関数の再帰でも、例えばxのn乗を求める場合、 <xsl:function name="ahf:powerOfY" as="xs:integer"> <xsl:param name="prmX" as="xs:integer"/> <xsl:param name="prmY" as="xs:integer"/> <xsl:choose> <xsl:when test="0 lt $prmY -1"> </xsl:when></xsl:choose></xsl:param></xsl:param></xsl:function>

XSLT3.0への道(26) パッケージへの期待

XSLT 3.0ではパッケージが導入されます.そしてどうもパッケージについては、いろいろと勉強しなければならないことが多そうです. まず初めにXSLT 2.0までのXSLTスタイルシートの開発方法について振り返ってみました.例えばDITA-OTのプラグインのスタイル…

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

XSLT 3.0は2月にW3Cの勧告候補(Candidate Recommendation)も出て佳境の感じがします.実は私がXSLT 3.0に期待していることの一つにパッケージ機能があります.これは機会があったらまた書きたいと思いますが、今までのXSLTのxsl:include/xsl:importによる…

XSLT3.0への道(24) 閑話休題;その昔と今のマイクロソフト

もう昔なので確たる年は忘れてしまいましたが社長から「XMLに命をかけろ(!?)」と言われて、XSLTの勉強をしだしたのが2000年頃だっと思います.XSLT 1.0は1999年11月に勧告になっていましたが、そのころ和書でXSLTが載っている本と言えばこのCD-ROMがオマケ…

XSLT3.0への道(23) 配列型(オマケ)

前にも述べましたがXSLT 3.0の「高階関数」の機能はオープンソースのSaxon HEでは使えません.と思っていたら最新のoXygenで外部プラグインとして、最新の9.7.0.15が使用できるとのメールがありました.早速ダウンロードして見ると次のように組み込むことが…

XSLT3.0への道(22) 配列型

次々と技術が進化するのでとてもキャッチアップできませんが、2月7日はXSLT 3.0にとって特別な日になったようです. XSL Transformations (XSLT) Version 3.0 W3C Candidate Recommendation 7 February 2017 https://www.w3.org/TR/2017/CR-xslt-30-20170207…

XSLT3.0への道(21) マップ

プログラミングで良く使用するデータ構造に、キーと値の関連性を保持するものがあります.多くのプログラミング言語ではmapという名前でこの機能をサポートしています.XSLT 3.0でもmapという「データ型」がサポートされるようになりました.今回はこれを簡…

XSLT3.0への道(20) Dimitre Novatchevのトレーニングコース

xsl-listで話題になっているDimitre Novatchevさんのトレーニングコースのお話です.現在次のようなコースがあります. http://www.pluralsight.com/search/?searchTerm=Dimitre%20Novatchev - What's New in XSLT 3.0: Part 1 - The Evolution of XPath: Wh…

XSLT3.0への道(19) static変数とuse-when属性

XSLT 3.0にずっと触れる機会がありませんでした.先日たまたま<xsl:styleeheet version="3.0">とコーディングする機会があり、久しぶりに3.0の機能を使ってみました.W3Cを見ると昨年の10月でWorking DraftのLast Callという状態になっていますね. さてせっかくなので3.0で便利になった機</xsl:styleeheet>…

XSLT3.0への道(18) XML Prague 2014

XSL-Listに紹介されていましたが、XML Prague 2014におけるXSLT3.0のStreamingに関するMichael Kayの講演がYou Tubeに載っています。 http://www.youtube.com/watch?v=kAUPzeeW4Xg&t=186m18s しかしリスニング能力に欠けた私ではなかなか聞くのは大変でした…

XSLT3.0への道(17) XPath3.0のパワー

もしこれを読まれたあなたがDimitre Novatchevさんをご存知だったら相当のXSLTに憧憬が深い勉強家じゃないかと思います.Dimitre Novatchevさんは、XSLT/XPathの世界ではとても有名な「オタク」です.すごいプログラムばっかり書いています.私もWEBを探しに…

XSLT3.0への道(16) 閑話休題 Exelt

ほったらかしにしていて閑話休題もないですが、 http://blogs.yahoo.co.jp/tnakita/13569767.html で紹介した.Exeltの開発が進んでいるようです. A distributed, streaming XSLT 3.0 processor .Net Exelt http://www.exselt.net/ 7月22日にprivate betaの…

XSLT3.0への道(15) 関数を返す関数

前々回で関数を返す関数というのをつくってみました. <xsl:function name="ahf:getFunc" as="function(*)"> <xsl:param name="prmFuncName" as="xs:QName"/> <xsl:param name="prmArity" as="xs:integer"/> <xsl:sequence select="function-lookup($prmFuncName,$prmArity)"/> </xsl:function> しかしこの関数は、パラメータ与えられた関数名と引数の数を持った関数をfu…

XSLT3.0への道(14) 閑話休題 新しいXSLTプロセッサ

XSLT2.0のインプリメンテーションが事実上SaxonとAltovaくらいしかないさびしい状況であることを以前書きました.ともかくマイクロソフトがXSLT2.0を放棄してしまったことが大きいです.私の周りでも、XSLTプロセッサといえばあのMSXMLと信じて相変わらずXSL…

XSLT3.0への道(13) 高階関数(higher-order function)

oXygenを毎日使っていたのですが恥ずかしいことにSaxsonが9.3⇒9.4になっているのに気がつきませんでした.いろいろとこれでXSLT3.0について試すことができます.今回はXSLT3.0での関数について少し紹介してみます. まず関数の位置づけです.きわめてそっけ…

XSLT3.0への道(12) XML Prague 2012

ちょっと遅くなってしまいましたが、この間XSLTをめぐっては、進展がありました.まず昨年の12月13日に、XPath3.0とXPath and XQuery Functions and Operators 3.0のドラフトが出ました.またXML Schema 1.1はProposed Recommendationから、この4月5日にReco…

XSLT3.0への道(11) ストリーミングを試してみる.

Saxonのメーリングリストで、oXygenに搭載のSaxon9.3でストリーミングをやった話が載っていました.私も昔試してみた覚えがあったのですが、そもそもXSL3.0がエディタでのコンパイル通らなかったのであきらめたように覚えています.でも今の13.2は出来るよう…

XSLT3.0への道(10) ストリーミング関連の関数

XSLT3.0ではストリーミング機能が導入されますがそれに関連する関数が追加されています.今回はこれを紹介したいと思います.これらの関数には、copy-of、snapshot、outermost、innermost、haschildrenがあります.機能を読んでみましたが、ちょっと今までの…

XSLT3.0への道(9) パターン (その2)

次にPathPatternで変更されている点にRootedPatternの追加があります.RootedPatternは次のように定義されます. [7] RootedPattern ::= ( VarRefRoot | DocCall | IdCall | ElementWithIdCall | KeyCall ) (('/' | '//') RelativePathPattern)? [8] VarRefR…

XSLT3.0への道(8) パターン (その1)

パターンとはxsl:templateのmatch属性に書く条件のことです.XSLT3.0ではこのパターンがグンと拡張されます.どれくらい変わったかというと定義をみれば歴然とします.次が今のXSLT2.0でのパターンの定義です.きわめてシンプルでした. [1] Pattern ::= Pat…

XSLT3.0への道(7) その他の要素

現在まで紹介したXSLT3.0の要素ですがこれらはすでにSaxon9.3に実装されているものです.Saxon9.3の実装状況は次のURLで確認できます. http://www.saxonica.com/documentation/changes/intro/xslt30-93.xml ここではSaxon PEでは使えなかったり、またまだSa…