2017-07-25 4 views
0

auf XML habe ich in level3Xslt convert Datum, getrennt Knoten

<IncorporationDate> 
    <CCYY>2016</CCYY> 
    <MM>04</MM> 
    <DD>21</DD> 
</IncorporationDate> 

jetzt muss ich im April dieses Jahres als 21 Anzeigen 2016

Also ich Concat dies versuchen und Format-date verwenden, aber Fehler erhalten, wie Versuchen Sie, die Zeichenfolge zu formatieren.

<xsl:variable name="incorpDate"> 
     <xsl:value-of select="concat(//a:Identification/b:IncorporationDate/c:DD,'/',//a:Identification/b:IncorporationDate/c:MM,'/',//a:Identification/b:IncorporationDate/c:CCYY)"/> 
</xsl:variable> 

und dann

<xsl:value-of select="format-date($incorpDate, '[D] [MNn] [Y0001]')" /> 

Ich versuche Format-date auf ganzen Knoten

<xsl:value-of select="format-date(//a:Identification/b:IncorporationDate, '[D] [MNn] [Y0001]')" /> 

Ich weiß, das wahrscheinlich ist einfach, aber XML/XSLT es ist nicht etwas, was ich weiß, ich lerne dies als Notwendigkeit, viele Stylesheets zu ändern.

+0

Können Sie sagen, welchen Fehler Sie tatsächlich bekommen? Können Sie auch bestätigen, dass Sie XSLT 2.0 verwenden, da 'format-date' in XSLT 1.0 nicht verfügbar ist? Vielen Dank! –

+0

Wenn die erste Option mit der Variablen I Fehler: Ungültiges Datum "21/04/2016" (Nicht-numerische Jahr Komponente wenn zweite Option mit direkten Ungültiges Datum "20160421" (Zu kurz) Und ich benutze XSLT 2.0 – maw2be

Antwort

3

eine xs:date erstellen und dann dieses Format:

<xsl:template match="IncorporationDate"> 
    <xsl:value-of select="format-date(xs:date(concat(CCYY, '-', MM, '-', DD)), '[D] [MNn] [Y0001]')"/> 
</xsl:template> 

komplette Probe

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

    <xsl:template match="@*|node()"> 
     <xsl:copy> 
      <xsl:apply-templates select="@*|node()"/> 
     </xsl:copy> 
    </xsl:template> 

    <xsl:template match="IncorporationDate"> 
     <xsl:value-of select="format-date(xs:date(concat(CCYY, '-', MM, '-', DD)), '[D] [MNn] [Y0001]')"/> 
    </xsl:template> 

</xsl:transform> 

http://xsltransform.net/naZXpXm/1

0

Ich weiß, was ich falsch gemacht.

Auf concat sollte ich ein Format YYYY-MM-DD machen, damit format-date Funktion funktioniert.

Ich ändere dies und es funktioniert.