下面有一个xml文件
<truck>
<time1>1234</time1>
<time2>5678</time2>
</truck>
如果time2的值不为空,我想将time2的值复制到time1。Time2和time1都是可选的,一个或两个都不能出现。如果time2存在并且有一个值,我想覆盖time1的值或用该元素创建time1。
上面的输出:
<truck>
<time1>5678</time1>
<time2>5678</time2>
</truck>
示例2
<truck>
<time2>5678</time2>
</truck>
示例2输出
<truck>
<time1>5678</time1>
<time2>5678</time2>
</truck>
示例3
<truck>
<time1>1234</time1>
</truck>
示例3输出
<truck>
<time1>1234</time1>
</truck>
我尝试了这个xslt转换,但它没有工作。
<xsl:template match="*[local-name()='time2']">
<xsl:if test="not(*[.=''])">
<time1>
<xsl:value-of select="time2"/>
</time1>
<time2>
<xsl:value-of select="time2"/>
</time2>
</xsl:if>
</xsl:template>
提前谢谢你。
试试这样做:
XSLT 1.0
<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="*"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="truck[time2]">
<xsl:copy>
<time1>
<xsl:value-of select="time2"/>
</time1>
<xsl:copy-of select="time2"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>