鉴于这样的事情:
<source>
<somestuff>
<thead>
<row>C1</row>
</thead>
<tbody>
<row>C2</row>
<row>C3</row>
</tbody>
</somestuff>
<somestuff>
<tbody>
<row>C4</row>
<row>C5</row>
</tbody>
</somestuff>
<somestuff>
<tbody>
<row>C6</row>
<row>C7</row>
</tbody>
</somestuff>
</source>
我需要将 thead 元素的内容作为第一个子元素复制到以下 tbody 元素。(可能有任意数量的 thead 元素。)导致:
<source>
<somestuff>
<tbody>
<row>C1</row>
<row>C2</row>
<row>C3</row>
</tbody>
</somestuff>
<somestuff>
<tbody>
<row>C4</row>
<row>C5</row>
</tbody>
</somestuff>
<somestuff>
<tbody>
<row>C6</row>
<row>C7</row>
</tbody>
</somestuff>
</source>
我试过这个
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*" name="identity" >
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="tbody/*[1]">
<xsl:copy-of select=
"preceding-sibling::*[1]
[name()='thead']/row"/>
<xsl:call-template name="identity"/>
</xsl:template>
<!-- deleting the Head node -->
<xsl:template match="//thead"/>
</xsl:stylesheet>
但失败了。谢谢你。拉尔夫