我正在阅读一个XML文档,其中有一个日期标记,如下所示。
<uabDate>2014-07-23</uabDate>
现在我正在从XSL读取这个XML并尝试解析它,但我想将该日期值转换为23-07-14这样的格式。
我试过的内容如下。
这里我调用的模板将uabDate存储在变量businessDate
中,然后调用模板
<xsl:call-template name="convertDateToDDMMYYYY_template">
<xsl:with-param name="b1"
select="$s2Date/uabDate"/>
</xsl:call-template>
以下是命名模板的定义:
<xsl:template name="convertDateToDDMMYYYY_template">
<xsl:param name="b1"/>
<xsl:variable name="DateVar">
<xsl:value-of select="concat(
substring(./b1,1,4),
'-',
substring(./b1,6,2),
'-',
substring(./b1,9,2))"/>
</xsl:variable>
</xsl:template>
答案 0 :(得分:0)
您错误地写了模板。首先,您将结果放入一个名为DateVar
的变量中,并且不要输出它。
其次,您有一个名为b1
的参数,应使用$b1
调用参数。
第三个问题是您正在格式化与输入相同的日期。而不是改变日期格式。
例如,如果我使用此输入XML:
<?xml version="1.0" encoding="UTF-8"?>
<data>
<uabDate>2014-07-23</uabDate>
</data>
这个XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="uabDate">
<xsl:copy>
<xsl:call-template name="convertDateToDDMMYYYY_template">
<xsl:with-param name="b1" select="."/>
</xsl:call-template>
</xsl:copy>
</xsl:template>
<xsl:template name="convertDateToDDMMYYYY_template">
<xsl:param name="b1"/>
<xsl:value-of select="concat(substring($b1,9,2),'-',substring($b1,6,2),'-',substring($b1,1,4))"/>
</xsl:template>
</xsl:stylesheet>
它会创建此输出:
<?xml version="1.0" encoding="UTF-8"?>
<data>
<uabDate>23-07-2014</uabDate>
</data>