添加标记<hour>,其中包含从日期开始的时间hh:mm

时间:2015-06-04 08:55:51

标签: xml xslt xslt-1.0

我有这个xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<output>
<orders>
<order>
<id>1</id>
<number>10002</number>
<type>Loading</type>
<date>2013-01-01T02:30:00</date>
</order>
<order>
<id>2</id>
<number>10003</number>
<type>Loading</type>
<date>2013-01-01T010:30:00</date>
</order>
<order>
<id>3</id>
<number>10004</number>
<type>Loaded</type>
<date>2013-01-01T12:30:00</date>
</order>
</orders>
<quantities>
<quantity>
<id_order>1</id_order>
<unit>KG</unit>
<value>1000</value>
</quantity>
<quantity>
<id_order>1</id_order>
<unit>PAL</unit>
<value>3</value>
</quantity>
<quantity>
<id_order>1</id_order>
<unit>M3</unit>
<value>1.5</value>
</quantity>
<quantity>
<id_order>2</id_order>
<unit>KG</unit>
<value>2000</value>
</quantity>
<quantity>
<id_order>2</id_order>
<unit>PAL</unit>
<value>4</value>
</quantity>
<quantity>
<id_order>3</id_order>
<unit>KG</unit>
<value>5000</value> 
</quantity>
</quantities>
</output>

我需要从每个订单的日期中提取时间,并在日期之后将其放入新标签中。 我只设法创建了标签

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    <xsl:strip-space elements="*"/>
   <xsl:template match="@* | node()">
      <xsl:copy>
         <xsl:apply-templates select="@* | node()"/>
      </xsl:copy>
   </xsl:template>
   <xsl:template match="date">
      <xsl:copy-of select="."/>
      <hour>
<xsl:value-of select="substring(output/orders/order/date,12,5)"/> 
       </hour>
   </xsl:template>
</xsl:stylesheet>

但它不起作用,我不能&#39;在新标签中显示时间。

有人能帮助我吗?

BR

1 个答案:

答案 0 :(得分:1)

当前的上下文元素已经是<date>,因此您只需使用.代替output/orders/order/date

<xsl:value-of select="substring(.,12,5)"/>