0
嘗試修改我的XML文件時出現以下問題。 我想三個轉變適用於以下輸入:4使用XSLT 1.0重命名並添加新元素
<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)移位/重命名列, 我能做到這一點使用下面的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>
感謝, Lehu
你的XML被慣用地破壞,你*真的*不願意保持這種方式。如果您有任何機會,請嘗試將「」更改爲「」。有沒有可接受的理由,有這樣的編號元素名稱 - 它會繼續給你像這樣的頭痛。 –
Tomalak
由不同的系統使用列號,所以需要保持這種方式。 – LeHu
不能是定義爲屬性的列數?我同意@Tomalak你的命名不是很方便。 –