分析 XSL 日期格式



我正在制作一个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() 的空格,并使用 substring() 剪切最后 6 个字符。

更新:如注释中所述,如果日期始终采用 hh:mm:ss(格式),则可以删除substring()中的string-length(),并将选择表达式简化为<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)" />

相关内容

  • 没有找到相关文章

最新更新