2012-10-30 11 views
5

mein xsl sieht unten wie:Xslt Aufruf java Instanzmethode

<?xml version="1.0"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" 
xmlns:SimpleDateFormat="java.text.SimpleDateFormat" 
xmlns:Date="java.util.Date" exclude-result-prefixes="SimpleDateFormat Date"> 

<xsl:variable name="s" select="SimpleDateFormat:new(MMM/dd/yyyy-HH/mm/ss/SSS)"/> 
<xsl:variable name="date" select="Date:new(number($beginTime))"/> 

So jetzt, wie die Methode Format (Datum Datum) nennen der Instanz 's'?

Wenn ich <xsl:value-of select="s:format($date)" /> verwende, dann ist der Fehler: Präfix muss in einen Namespace aufgelöst werden: s.

Aber wenn ich den Namespace wie folgt hinzufügen: xmlns:s="java.text.SimpleDateFormat", das <xsl:value-of select="s:format($date)" /> wird Standardformat, nicht das angegebene Format zurückgeben.

Also wie bekomme ich das angegebene Format, wie MM/TT/JJJJ-HH/mm/SS/SSS?

Antwort

4

Der Namespace Sie ist derjenige verwenden müssen, die auf den Objekttyp bezieht, und die Variable selbst als erstes Argument in Ihren Anruf übergeben:

BTW: Sie müssen das Format Argument zwischen Apostrophe setzen:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:SimpleDateFormat="java.text.SimpleDateFormat" xmlns:Date="java.util.Date" exclude-result-prefixes="SimpleDateFormat Date"> 
    <xsl:variable name="s" select="SimpleDateFormat:new('MMM/dd/yyyy-HH/mm/ss/SSS')"/> 
    <xsl:variable name="date" select="Date:new()"/> 
    <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> 
    <xsl:template match="*"> 
     <Test> 
      <xsl:value-of select="SimpleDateFormat:format($s,$date)" /> 
     </Test> 
    </xsl:template> 
</xsl:stylesheet> 

Ich hoffe, das hilft!

+0

Sorry, ich verstehe nicht ganz 'Sie müssen das Format Argument zwischen Apostrophe setzen'. Wohin mit dem Formatargument? Aber schätzen Sie Ihren Vorschlag sehr, nach Ihrem Tipp, ich habe es getan. Die einzige Frage ist 'SimpldDateFormat.format (Datum Datum)' sollte nur 1 Argument nach dem Java-Dokument nehmen, aber warum 'SimpldDateFormat: Format ($ s, $ date)' ist richtig? – frank

+0

Über das Format: Ich meinte, dass Sie die Formatzeichenfolge "MMM/dd ..." zwischen Apostrophen angeben müssen, also 'SimpleDateFormat: neu ('MMM/dd ..')' anstelle von 'SimpleDateFormat.new (MMM/ddd ...) 'was würde versuchen, es als einen xpath anstelle eines Literals zu interpretieren. –

+0

Über Argumente: Ja, das ist richtig. Wenn Sie auf Instanzmethoden zugreifen (also nicht statisch), müssen Sie am Anfang einen zusätzlichen Parameter angeben, um anzugeben, welche Instanz der Klasse (die durch das Namespacepräfix angegeben wird), die Sie verwenden möchten. Wenn Sie jedoch auf statische Methoden oder Konstruktoren zugreifen (z. B. den Aufruf "SimpleDateFormat.new"), benötigen Sie ihn nicht. –