tohokuaikiのチラシの裏

技術的ネタとか。

SaxonでJavaのAPIを通してパラメータを渡す方法

Javaのコード内の変数をXSLスタイルシートに渡す方法を調べた。

参考ページ
パラメータを使った値の受渡し
Saxon 9.2 / Java / XSLT: setting transformer parameters using setParameters() - Stack Overflow

Java側の設定

TransformerのsetParameterメソッドでKey-Value方式でパラメータを設定

TransformerFactory tFactory = new net.sf.saxon.TransformerFactoryImpl();
Transformer transformer = tFactory.newTransformer(xslSource);
transformer.setParameter("foo", "bar");

XSLスタイルシートの設定

使用するパラメータを<xsl:stylesheet/>直下で指定する。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet	version="2.0">
	<xsl:param name="foo"/>

これでグローバルパラメータになったので、あとは欲しいところで<value-of select="$foo">で取得できる。