2017-12-21 25 views
0

XSLを使用して日付形式をyyyy-mm-ddからdd-mmm-yyyyに変更する必要があります。XSLを使用して属性値を変更

私は日付の価値を得ることができ、それを変更するロジックを書いています。しかし、どういうわけか値は変わっていません。

要求とXSL

もここで見つけることができます: Change the Date format

XML入力

<params> 
<param name ="query" > 
    <queryData> 
     <parameter index ="0" value ="2017-12-06" dataType="java.lang.String"/> 
     <parameter index ="1" value ="2017-12-03" dataType="java.lang.String"/>  
    </queryData> 
</param> 
</params> 

XSLT 1.0

<xsl:stylesheet version="1.0"  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" /> 
    <xsl:strip-space elements="*" /> 
    <xsl:template match="@*|node()"> 
     <xsl:copy> 
      <xsl:apply-templates select="@*|node()" /> 
     </xsl:copy> 
    </xsl:template> 
    <xsl:template match="params/param/queryData/parameter[@value='*'][normalize-space()]"> 
     <xsl:copy> 
      <xsl:call-template name="reformat-date"> 
       <xsl:with-param name="date" select="." /> 
      </xsl:call-template> 
     </xsl:copy> 
    </xsl:template> 

    <xsl:template name="reformat-date"> 
     <xsl:param name="date" /> 
     <xsl:variable name="dd" select="substring-after(substring-after($date, '-'), '-')" /> 
     <xsl:variable name="mmm" select="substring-before(substring-after($date, '-'),  '-')" /> 
     <xsl:variable name="yyyy" select="substring-before($date, '-')" /> 
     <xsl:value-of select="$dd" /> 
     <xsl:text>-</xsl:text> 
     <xsl:choose> 
      <xsl:when test="$mmm = '01'">JAN</xsl:when> 
      <xsl:when test="$mmm = '02'">FEB</xsl:when> 
      <xsl:when test="$mmm = '03'">MAR</xsl:when> 
      <xsl:when test="$mmm = '04'">APR</xsl:when> 
      <xsl:when test="$mmm = '05'">MAY</xsl:when> 
      <xsl:when test="$mmm = '06'">JUN</xsl:when> 
      <xsl:when test="$mmm = '07'">JUL</xsl:when> 
      <xsl:when test="$mmm = '08'">AUG</xsl:when> 
      <xsl:when test="$mmm = '09'">SEP</xsl:when> 
      <xsl:when test="$mmm = '10'">OCT</xsl:when> 
      <xsl:when test="$mmm = '11'">NOV</xsl:when> 
      <xsl:when test="$mmm = '12'">DEC</xsl:when> 
     </xsl:choose> 
     <xsl:text>-</xsl:text> 
     <xsl:value-of select="$yyyy" /> 
    </xsl:template> 
</xsl:stylesheet> 
+0

を必要とするので、属性を作成するには、dが、外部へのリンクを提供し、あなたの問題を表してあなたのコード(XMLとXSLT)を投稿し、そしてませんしてくださいサイト。 – AntonH

答えて

2

あなたは、あなたの属性を変更したい場合属性とマッチするようにマッチパターンを調整する必要がありますあなたは

<xsl:template match="params/param/queryData/parameter/@value"> 
    <xsl:attribute name="{name()}"> 
     <xsl:call-template name="reformat-date"> 
      <xsl:with-param name="date" select="." /> 
     </xsl:call-template> 
    </xsl:attribute> 
</xsl:template> 

代わりの

<xsl:template match="params/param/queryData/parameter[@value='*'][normalize-space()]"> 
    <xsl:copy> 
     <xsl:call-template name="reformat-date"> 
      <xsl:with-param name="date" select="." /> 
     </xsl:call-template> 
    </xsl:copy> 
</xsl:template> 

http://xsltransform.net/bEJaofn/1

関連する問題