XSLT:用当前日期和时间替换XML值

时间:2014-10-02 15:28:00

标签: xml xslt

我有以下XML文档:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
    <Elaborations>
        <Elaboration>
            <DateBegin>2014-01-01T02:00:00.000+01:00</DateBegin>
            <DateEnd>2014-01-01T02:00:00.000+01:00</DateEnd>
            <Result>12594</Result>
        </Elaboration>
        <Elaboration>
            <DateBegin>2014-01-01T02:00:00.000+01:00</DateBegin>
            <DateEnd>2014-01-01T02:00:00.000+01:00</DateEnd>
            <Result>12593</Result>
        </Elaboration>
        <Elaboration>
            <DateBegin>2014-01-01T02:00:00.000+01:00</DateBegin>
            <DateEnd>2014-01-01T02:00:00.000+01:00</DateEnd>
            <Result>12595</Result>
        </Elaboration>
        <Elaboration>
            <DateBegin>2014-01-01T02:00:00.000+01:00</DateBegin>
            <DateEnd>2014-01-01T02:00:00.000+01:00</DateEnd>
            <Result>29598</Result>
        </Elaboration>
        <Elaboration>
            <DateBegin>2014-01-01T02:00:00.000+01:00</DateBegin>
            <DateEnd>2014-01-01T02:00:00.000+01:00</DateEnd>
            <Result>37583</Result>
        </Elaboration>
    </Elaborations>
</soapenv:Body>
</soapenv:Envelope>

我想用XSLT将元素DateBegin和DateEnd的值替换为当前日期和时间。 我写了以下转换:

<?xml version="1.0"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
    <xsl:variable name="dateNow" select="current-dateTime()"/>
    <xsl:template match="DateBegin/text()">
        <xsl:value-of select="$dateNow"/>
    </xsl:template>
    <xsl:template match="DateEnd/text()">
        <xsl:value-of select="$dateNow"/>
    </xsl:template>
</xsl:stylesheet>

但是我在XSLT文档上遇到了解析错误。 问题在哪里?

1 个答案:

答案 0 :(得分:3)

我在类路径中解决了包括camel-saxon的问题。这最终启用了xslt 2.0函数(如current-dateTime)。