JAR ファイル経由でアクセスが行われた場合、以下の構文により JAR ファイルの URI を指定する必要があります:
xmlns:classNS="java:classname?path=jar:uri-of-jarfile!/"
クラスの識別を行う名前空間 URI のプレフィックスを使用してメソッドが呼び出されます: classNS:method() |
上の例に対する説明は以下のとおりです:
java: 関数が呼び出されていることを表します。
classname がユーザー定義されたクラスの名前になります。
? はクラス名とパスを分離するために使用されます。
path=jar: により、JAR ファイルへのパスが与えられていることを示します。
uri-of-jarfile は JAR ファイルの URI となります。
!/ は、終了を表すデリミタとなります。
classNS:method() により、メソッドの呼び出しが行われます。
その他にも、メソッド名とともにクラス名を与えることができます。構文の例を以下に示します:
xmlns:ns1="java:docx.layout.pages?path=jar:file:///c:/projects/docs/docx.jar!/"
ns1:main()
xmlns:ns2="java?path=jar:file:///c:/projects/docs/docx.jar!/"
ns2:docx.layout.pages.main()
以下に JAR ファイルを使った Java 拡張関数を呼び出す XSLT サンプルを記します:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fn="http://www.w3.org/2005/xpath-functions"
xmlns:car="java?path=jar:file:///C:/test/Car1.jar!/" >
<xsl:output exclude-result-prefixes="fn car xsl xs"/>
<xsl:template match="/">
<xsl:variable name="myCar" select="car:Car1.new('red')" />
<a><xsl:value-of select="car:Car1.getCarColor($myCar)"/></a>
</xsl:template>
<xsl:template match="car"/>
</xsl:stylesheet>
メモ : | 拡張関数によりパスが与えられている場合、ClassLoader にパスが追加されます。 |