Java:インスタンスメソッドとインスタンスフィールド

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  付録
> エンジン情報
> XSLT と XPath/XQuery 関数 > その他の拡張関数 > Java 拡張関数
 >

Java:インスタンスメソッドとインスタンスフィールド

メソッド呼び出しの第一引数としてパースされる Java オブジェクトが、インスタンスメソッドには与えられています。このような Java オブジェクトは通常、拡張関数を使うことで作成される(例:コンストラクターの呼び出し)か、スタイルシートパラメーター/変数により作成されます。以下に XSLT サンプルを示します:

 

<xsl:stylesheet version="1.0" exclude-result-prefixes="date"

  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

  xmlns:date="java:java.util.Date"

  xmlns:jlang="java:java.lang"> 

  <xsl:param name="CurrentDateselect="date:new()"/>

  <xsl:template match="/">

      <enrollment institution-id="Altova School" 
                date="{date:toString($CurrentDate)}" 

                type="{jlang:Object.toString(jlang:Object.getClass( date:new() ))}">

      </enrollment>

  </xsl:template>

</xsl:stylesheet>

 

上の例では、ノード enrollment/@type の値が以下のように作成されます:

 

1.java.util.Date  クラスに対するオブジェクトがコンストラクター( date:new() コンストラクター)とともに作成されます。
2. jlang.Object.getClass  メソッドの引数として Java オブジェクトがパースされます。
3. getClass メソッドにより得られたオブジェクトが jlang.Object.toString メソッドの引数としてパースされます。

 

結果(@type の値)は java.util.Date を持った文字列となります。

 

インスタンスフィールドは、引数としてインスタンスフィールドへ渡される Java オブジェクトではないという点で、理論的にはインスタンスメソッドと異なります。パラメーターや変数がその代わりに引数として渡されますが、パラメーター/変数そのものに Java オブジェクトから返された値が含まれている場合もあります。例えば、CurrentDate パラメーターには java.util.Date クラスのコンストラクターから返された値が含まれます。この値は引数として、date:toString インスタンスメソッドへ渡され、/enrollment/@date の値として使用されます。

 

 


(C) 2019 Altova GmbH