尝试修改我的 XML 文件时遇到以下问题。我正在尝试对以下输入应用三个转换:
<sheet>
<row>
<column_1>11</column_1>
<column_2></column_2>
<column_3></column_3>
</row>
<row>
<column_1></column_1>
<column_2></column_2>
<column_3></column_3>
</row>
<row>
<column_1></column_1>
<column_2></column_2>
<column_3></column_3>
</row>
</sheet>
1) 将列移动/重命名 4,我可以使用以下 XSLT 来做到这一点:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent="yes"/>
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="row/*">
<xsl:element name="column_{substring(name(),8,string-length(name())-7)+4}">
<xsl:apply-templates select="@* | node()" />
</xsl:element>
</xsl:stylesheet>
收到的输出:
<sheet>
<row>
<column_5>11</column_5>
<column_6></column_6>
<column_7></column_7>
</row>
<row>
<column_5></column_5>
<column_6></column_6>
<column_7></column_7>
</row>
<row>
<column_5></column_5>
<column_6></column_6>
<column_7></column_7>
</row>
</sheet>
2)在已经存在的元素之前添加元素,因此收到以下输出:我不得不说我在这里迷路了,因为不知道如何使它工作。
<sheet>
<row>
<column_1></column_1>
<column_2></column_2>
<column_3></column_3>
<column_4></column_4>
<column_5>11</column_5>
<column_6></column_6>
<column_7></column_7>
</row>
<row>
<column_1></column_1>
<column_2></column_2>
<column_3></column_3>
<column_4></column_4>
<column_5></column_5>
<column_6></column_6>
<column_7></column_7>
</row>
<row>
<column_1></column_1>
<column_2></column_2>
<column_3></column_3>
<column_4></column_4>
<column_5></column_5>
<column_6></column_6>
<column_7></column_7>
</row>
</sheet>
3)合并以下我用来传播数据的XSLT,如果它单独应用但与第1点合并时,它可以工作)我没有得到结果,只有品脱1被应用
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent="yes"/>
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="column_5">
<xsl:copy>
<xsl:choose>
<xsl:when test=".=''">
<xsl:value-of select="preceding::column_5[. != ''][1]"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="node() | @*"/>
</xsl:otherwise>
</xsl:choose>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
我的预期结果是:
<sheet>
<row>
<column_1></column_1>
<column_2></column_2>
<column_3></column_3>
<column_4></column_4>
<column_5>11</column_5>
<column_6></column_6>
<column_7></column_7>
</row>
<row>
<column_1></column_1>
<column_2></column_2>
<column_3></column_3>
<column_4></column_4>
<column_5>11</column_5>
<column_6></column_6>
<column_7></column_7>
</row>
<row>
<column_1></column_1>
<column_2></column_2>
<column_3></column_3>
<column_4></column_4>
<column_5>11</column_5>
<column_6></column_6>
<column_7></column_7>
</row>
</sheet>
谢谢,乐虎