Estoy tratando de transformar un formato de fecha aaaa-MM-dd, porque estoy usando la herramienta xsd.exe los tipos de datos xs: date se cambian automáticamente a un tipo de datos datetime, porque no hay ningún tipo en .NET Framework que coincida con el tipo xs: date completamente.Transformación XSLT formato datetime to date
Pero no puedo conseguir que funcione
<articles>
<article>
<articleid>48992</articleid>
<deliverydateasked>2009-01-29T00:00:00+01:00</deliverydateasked>
</article>
<article>
<articleid>48993</articleid>
<deliverydateasked>2009-01-30T00:00:00+01:00</deliverydateasked>
</article>
</articles>
tratar de convertir el xml a
<articles>
<article>
<articleid>48992</articleid>
<deliverydateasked>2009-01-29</deliverydateasked>
</article>
<article>
<articleid>48993</articleid>
<deliverydateasked>2009-01-30</deliverydateasked>
</article>
</articles>
Actualmente estoy usando este XSLT
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<articles>
<xsl:apply-templates select="article">
</xsl:apply-templates>
</articles>
</xsl:template>
<xsl:template name="FormatDate">
<xsl:param name="DateTime" />
<xsl:variable name="date">
<xsl:value-of select="substring-before($DateTime,'T')" />
</xsl:variable>
<xsl:if test="string-length($date) != 10">
<xsl:value-of select="$DateTime"/>
</xsl:if>
<xsl:if test="string-length($date) = 10">
<xsl:value-of select="$date"/>
</xsl:if>
</xsl:template>
<xsl:template match="article">
<xsl:call-template name="FormatDate">
<xsl:with-param name="DateTime" select="deliverydateasked"/>
</xsl:call-template>
</xsl:template>
¿Alguien sabe un buen xsl t transformación.
Gracias de antemano
El resultado de la salida de mi código es
<articles />
¿Por qué haces las complicadas "local-name()" cosas? – Tomalak
lo Tomalak dijo - apalancamiento XSL: copiar – annakata
Annakata He intentado su primera sugerencia xsl: template> con el resultado: 2009-01 -292009-01-30 ¿O hice algo mal? pero es local-name() que una función para evitar? el tiempo de duración ahora es de 15-30 ms –
freggel