Sablotron にノード集合を渡す。
XSLT エンジンにノード集合渡したいことが多々あるけど、params にナマの XML を渡しても当たり前にサニタライズされたただの文字列が渡るだけ。じゃあどうすりゃいいねんと諦めていたわけだけど、FOAF Explorer のソース見ててわかった。arguments のほうに XML とか XSLT とか渡すのと同じように渡せばいいんだ。
Sablotron は arguments を内部的に URI として (スキーム arg:) 扱っているから、そっちに適当に渡してやればやりほうだいらしい。エロイ。
$arguments = array( '/_xml' => file_get_contents($xml), '/_xsl' => file_get_contents($xsl), '/foo' => "<test><f>aa</f><f>bb</f></test>" ); $result = xslt_process($xh, 'arg:/_xml', "arg:/_xsl", NULL, $arguments);
で、XSLT 側からは document('arg:/foo') でアクセスできる。結局 <xsl:param name="foo" select="document('arg:/foo')"/> とかやっとけば OK。Sablotron イイ
関連エントリー
- XSLT + php php で xslt_process 呼ぶときにパラメータに配列(のように XSLT 側で処理できるもの=node集合)を渡すのって無理くさ...
- Ruby/XSLT て パラメータ渡せないくさいんだけど、もし本当にそうならあんまりこのまま使えないなぁ。XSLT ファイルを一回パースして xsl:param に...
- XSLT + php php で xslt_process 呼ぶときにパラメータに配列(のように XSLT 側で処理できるもの=node集合)を渡すのって無理くさ...
- ruby-xslt 0.9.1 ちゃんとエラークラス吐くバージョンがリリース。kiyoya さんのパッチ。 ruby extconf.rb --enable-error-h...
- ruby-xslt undefined reference to 何度やってもできない。わけわかんないです。-lxml2 -lxslt ついてますよ? /lib に libxslt.dll.a libxml...