假设以下xml:
<def>
<config>
<a>foo</a>
</config>
</def>
我想插入另一个配置&#34; b&#34;。我需要保留当前的格式化。因此,我认为我必须关心&#34; b&#34;为了我自己?我想要实现的是以下结果:
<def>
<config>
<a>foo</a>
<b>bar</b>
</config>
</def>
请注意,缩进的大小不同。因此新创建的元素应与前一个元素对齐。如果同一级别上没有前一个元素,则缩进应该是父级缩进加2。
答案 0 :(得分:1)
我不明白为什么这会产生任何影响,但作为练习,请尝试:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:preserve-space elements="*"/>
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="config/*[last()]">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
<xsl:copy-of select="preceding-sibling::text()[1]"/>
<b>bar</b>
</xsl:template>
</xsl:stylesheet>