Java: Instanzmethoden und Instanzfelder
Bei einer Instanzmethode wird als erstes Argument eines Methodenaufrufs ein Java-Objekt an die Methode übergeben. Ein solches Java-Objekt würde normalerweise mit Hilfe einer Erweiterungsfunktion (z.B. eines Konstruktoraufrufs) oder eines Stylesheet-Parameters/einer Stylesheet-Variablen erstellt. Ein XSLT-Beispiel dafür wäre:
<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="CurrentDate" select="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>
Im Beispiel oben wird der Wert des Node enrollment/@type folgendermaßen erstellt:
1.Es wird ein Objekt mit einem Konstruktor für die Klasse java.util.Date (mit dem Konstruktor date:new()) erstellt.
2.Dieses Java-Objekt wird als das Argument der Methode jlang.Object.getClass übergeben.
3.Das mit der Methode getClass abgerufene Objekt wird als das Argument an die Methode jlang.Object.toString übergeben.
Das Ergebnis (der Wert von @type) ist ein String, der den Wert java.util.Date hat.
Ein Instanzfeld unterscheidet sich theoretisch insofern von einer Instanzmethode, als es sich nicht um ein Java-Objekt per se handelt, das als Argument an das Instanzfeld übergeben wird. Stattdessen wird ein Parameter oder eine Variable als Argument übergeben. Der Parameter/die Variable kann allerdings selbst den Wert enthalten, der von einem Java-Objekt zurückgegeben wird. So erhält z.B. der Parameter CurrentDate den Wert, der von einem Konstruktor für die Klasse java.util.Date zurückgegeben wird. Dieser Wert wird anschließend als Argument an die Instanzmethode date:toString übergeben, um den Wert von /enrollment/@date bereitzustellen.