XSLT将元素值(如果不为空)复制到可能不存在的新元素



下面有一个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>

相关内容

  • 没有找到相关文章

最新更新