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

XML重命名节点名称并将datetime转换为日期,datetime,xslt,elements,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文件,我想重命名元素名并返回日期的日期部分,只生成

<!-- 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>

1992-02-22T00:00:00.0000000
我想重命名元素名,并返回日期的日期部分,以便只生成

<!-- 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>

1992-02-22
在我的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>

要更改此操作的日期,请执行以下操作:

  <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>

我需要知道如何将这两个更改结合起来,以生成具有重命名节点和格式化日期的单个输出元素 谢谢
Brevan

只需有一个模板匹配
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>