使用xslt 1.0将日期从DD.MMM.YYYY转换为YYYY-MMM-DD

时间:2017-03-24 20:09:32

标签: xml date xslt transformation date-formatting

我找到了几个解决方案,但没有一个对我不起作用。 因为<template>中不能<template>。我需要在foreach中转换日期,因为<number requested>大约是80,然后是导出结束。我需要转换并转换Date_Delivery。有任何想法吗?请帮忙

<?xml version="1.0" encoding="Windows-1250"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">     

 <xsl:template match="/">
<dat:dataPack version="2.0" id="Usr01" ico="36255789" application="Transformace" note="Užívateľský export" xmlns:dat="http://www.stormware.cz/schema/version_2/data.xsd">
       <xsl:variable name="discount" select="0.20" />
<xsl:for-each select="OBERON/Data/InvoicesIssued/Record">
       <dat:dataPackItem version="2.0" id ="{@IDNum}">

        <inv:invoiceType>issuedInvoice</inv:invoiceType>
    <inv:number>
 <typ:numberRequested><xsl:value-of select="@Number"/></typ:numberRequested>
        </inv:number>

            <inv:symVar><xsl:value-of select="@Number"/></inv:symVar>
         <inv:dateTax><xsl:value-of select = "Date_Delivery"/></inv:dateTax>

1 个答案:

答案 0 :(得分:2)

我将假设以下结构:

<baseNode>
    <myDate>01.Jan.2017</myDate>
</baseNode>

您可以使用以下内容进行转换:

<xsl:value-of select="concat(substring(/baseNode/myDate, 8, 4), '-',  substring(/baseNode/myDate, 4, 3), '-', substring(/baseNode/myDate, 1, 2))" />