这不是合法的XML(元素名称不能以数字开头),但假设您将所有无效元素重命名为以“r”开头,则可以执行以下操作:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*" />
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Record[r512]">
<xsl:copy>
<xsl:apply-templates select="." mode="iterate" />
</xsl:copy>
</xsl:template>
<xsl:template match="Record" />
<xsl:template match="Record" mode="iterate">
<xsl:apply-templates />
<xsl:apply-templates select="following-sibling::Record[1][not(r512)]"
mode="iterate"/>
</xsl:template>
</xsl:stylesheet>
在此输入上运行时:
<ns0:Root xmlns="" xmlns:ns0="nsss">
<Header>
<node01>AA</node01>
<node02>123</node02>
</Header>
<Record>
<r512>
<node01>BB</node01>
<node02>123</node02>
</r512>
</Record>
<Record>
<r513>
<node01>CC</node01>
<node02>123</node02>
</r513>
</Record>
<Record>
<r512>
<node01>DD</node01>
<node02>123</node02>
</r512>
</Record>
<Record>
<r515>
<node01>JJ</node01>
<node02>123</node02>
</r515>
</Record>
<Record>
<r512>
<node01>EE</node01>
<node02>123</node02>
</r512>
</Record>
<Record>
<r513>
<node01>FF</node01>
<node02>123</node02>
</r513>
</Record>
<Record>
<r514>
<node01>GG</node01>
<node02>123</node02>
</r514>
<r514>
<node01>HH</node01>
<node02>123</node02>
</r514>
</Record>
<Footer>
<node01>II</node01>
<node02>123</node02>
</Footer>
</ns0:Root>
生产:
<ns0:Root xmlns:ns0="nsss">
<Header>
<node01>AA</node01>
<node02>123</node02>
</Header>
<Record>
<r512>
<node01>BB</node01>
<node02>123</node02>
</r512>
<r513>
<node01>CC</node01>
<node02>123</node02>
</r513>
</Record>
<Record>
<r512>
<node01>DD</node01>
<node02>123</node02>
</r512>
<r515>
<node01>JJ</node01>
<node02>123</node02>
</r515>
</Record>
<Record>
<r512>
<node01>EE</node01>
<node02>123</node02>
</r512>
<r513>
<node01>FF</node01>
<node02>123</node02>
</r513>
<r514>
<node01>GG</node01>
<node02>123</node02>
</r514>
<r514>
<node01>HH</node01>
<node02>123</node02>
</r514>
</Record>
<Footer>
<node01>II</node01>
<node02>123</node02>
</Footer>
</ns0:Root>