我有一个像下面这样的xml:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<properties>
<entry key="user">1234</entry>
</properties>
我想添加两个新标签,其中一个包含ISO 8601格式的当前日期值,另一个标签的日期设置为ISO 8601格式的当前日期+ 10年,并使用xslt将其转换为新的xml文件输出xml应该是这样的
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<properties>
<entry key="user">1234</entry>
<entry key="doc:uploadDate">2017-07-04T22:18:08Z</entry>
<entry key="doc:deleteDate">2027-07-04T22:18:08Z</entry>
</properties>
我正在使用以下xslt。
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0">
<xsl:variable name="currentDate">
<xsl:value-of select="current-dateTime()" />
</xsl:variable>
<xsl:template match="entry[@key='doc:uploadDate']">
<xsl:copy>
<xsl:apply-templates select="@*" />
<xsl:value-of
select="replace(normalize-space($currentDate),
'^(\d{2})-(\d{2})-(\d{4})\s+(.*)','$3-$1-$2T$4Z')" />
</xsl:copy>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:transform>
有人可以帮我这个..
答案 0 :(得分:2)
您可以在当前日期添加十年的持续时间:
<xsl:variable name="curr-date" select="current-dateTime()"/>
<entry>
<xsl:value-of select="$curr-date"/>
</entry>
<entry>
<xsl:value-of select="$curr-date + xs:yearMonthDuration('P10Y')"/>
</entry>
答案 1 :(得分:0)
为什么你不能简单地做到:
<xsl:template match="/properties">
<xsl:copy>
<xsl:copy-of select="*"/>
<entry key="doc:uploadDate">
<xsl:value-of select="current-dateTime()"/>
</entry>
<entry key="doc:deleteDate">
<xsl:value-of select="current-dateTime() + xs:yearMonthDuration('P10Y')"/>
</entry>
</xsl:copy>
</xsl:template>