XSLT - 在给定节点之前添加节点

时间:2015-07-09 06:27:02

标签: xml xslt xslt-2.0

我需要在给定节点之前添加新的xml节点。

示例:

<doc>
  <a></a>
  <b></b>
  <c></c>
  <a></a>
  <d></d>
  <e></e>
  <a></a>
</doc>

我需要在每个<n>节点之前添加新的<a>节点。所以输出应该是

<doc>
  <n></n>
  <a></a>
  <b></b>
  <c></c>
  <n></n>
  <a></a>
  <d></d>
  <e></e>
  <n></n>
  <a></a>
</doc>

我可以在给定节点内或给定节点之后添加新节点。但我找不到在给定节点之前添加新节点的方法。

知道怎么做吗?

1 个答案:

答案 0 :(得分:1)

您可以拥有一个仅与a匹配的单独模板。在该模板中,您可以添加<n>节点:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes" />
    <xsl:template match="/">
        <doc>
            <xsl:apply-templates select="doc/*"/>
        </doc>
    </xsl:template>
    <xsl:template match="a">
        <n></n>
        <a></a>
    </xsl:template>
    <xsl:template match="*">
        <xsl:element name="{local-name()}"></xsl:element>
    </xsl:template>
</xsl:stylesheet>