XML重命名节点名称并将日期时间转换为日期

时间:2017-12-06 11:36:33

标签: datetime xslt elements

我有一个xml文件,我想重命名元素名称并返回日期的日期部分只是为了生成

<!-- reference the stylesheet -->
<?xml-stylesheet type="text/xsl" href="Dates.xsl"?>
<user>
<dob>1992-02-22T00:00:00.0000000</dob>
</user>

我想重命名元素名称并仅返回日期的日期部分以生成

<!-- reference the stylesheet -->
<?xml-stylesheet type="text/xsl" href="Dates.xsl"?>
<user>
<USER_DOB>1992-02-22</USER_DOB>
</user>

在我的XSL文件中 要更改元素名称,可以使用

  <xsl:template match="dob">
    <USER_DOB><xsl:apply-templates select="node()"/></USER_DOB>
  </xsl:template>

更改此作品的日期

<xsl:template match="dob">
    <xsl:copy>
        <xsl:call-template name="FormatDate">
            <xsl:with-param name="DateTime" select="."/>
        </xsl:call-template>  
    </xsl:copy>
</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>

我需要知道如何组合这两个更改以使用重命名的节点和格式化日期生成单个输出元素 谢谢, 布勒旺

1 个答案:

答案 0 :(得分:0)

只需要一个匹配dob的模板即可...

<xsl:template match="dob">
    <USER_DOB>
        <xsl:call-template name="FormatDate">
            <xsl:with-param name="DateTime" select="."/>
        </xsl:call-template>  
    </USER_DOB>
</xsl:template>