我正在制作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>
做到这一点的一种方法就是作为匹配整个节点的示例
<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>
这将使用替换T,translate()
并使用剪切最后6个字符substring()
。
更新:如注释中所述,如果日期始终为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)" />
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句