我正在制作一个XSL样式表来格式化Shopify的XML日期输出。
输出是什么;
<created-at type="dateTime">2014-12-23T14:27:53-05:00</created-at>
我需要调整它看起来像
<created-at type="dateTime">2014-12-23 14:27:53</created-at>
我只是不确定如何删除'T'或剪辑最后的时区标记。
有什么建议吗?
当前的XSL样式表(订单日期是我正在尝试调整的);
<xsl:template match="order">
<html>
<head>
<title>St. Baldrick's Order #<xsl:value-of select="order-number" /></title>
</head>
<body>
<p>
Order Number: <xsl:value-of select="order-number" /><br /><!-- Their Order Number -->
Client ID: <xsl:value-of select="id" /><br /><!-- Internal Compass ID or Customer Account Number -->
First Name: <xsl:value-of select="first-name" /><br /><!-- Ship-to first name -->
Last Name: <xsl:value-of select="last-name" /><br /><!-- Ship-to last name -->
Order Date: <xsl:value-of select="created-at" /><br /><!-- Order Date -->
</p>
</body>
</html>
</xsl:template>
答案 0 :(得分:1)
这样做的一种方法就是匹配完整节点
<xsl:template match="created-at">
<xsl:copy>
<xsl:attribute name="type" select="@type"/>
<xsl:value-of select="substring(translate(.,'T', ' '),1,string-length()-6)"/>
</xsl:copy>
</xsl:template>
结果:<created-at type="dateTime">2014-12-23 14:27:53</created-at>
这会使用translate()
将空格替换为空格,并使用substring()
剪切最后6个字符。
更新如评论中所述,如果日期始终采用hh:mm:ss格式,string-length()
中的substring()
可以删除, select表达式简化为<xsl:value-of select="substring(translate(.,'T', ' '),1,19)"/>
对于刚刚添加的匹配order
的原始模板:如果您只是更改它,它应该可以使用:
Order Date: <xsl:value-of select="created-at" />
进入这个:
Order Date: <xsl:value-of select="substring(translate(created-at,'T', ' '),1,19)" />