用于在xml中搜索特定元素的XSLT代码,并在搜索到的元素旁边添加一个新元素

时间:2016-08-06 17:13:43

标签: xml xslt-1.0

我有一个像这样的XML文档:

    
 <root>
      <child>
        <element1 name="name" type="string"></element1>
        <element1 name="id" type="string" ></element1>
         :
        <element2 source="s1" desc="d1"></element2>
         :
      </child>
    </root>

我必须在element1之前的<element1>旁边添加一个新元素(与<element2>同名)。如何编写xslt以便我的新元素1在文件中添加一次。我试图用父类添加新元素,但它在最后添加。我希望它添加到下面相同的组名下面

<root>
  <child>
    <element1 name="name" type="string"></element1>
    <element1 name="id" type="string"></element1>
     :
    **<element1 name="new"></element1>**
    <element2 source="s1" desc="d1"></element2>
     :
 </child>
</root>

但我仍然无法按照我想要的方式得到它。请帮我。

1 个答案:

答案 0 :(得分:0)

在第一个element2之前添加新元素:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

<!-- identity transform -->
<xsl:template match="@*|node()">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>

<xsl:template match="element2[1]">
    <element1 name="new"/>
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>

</xsl:stylesheet>

当然,这假设至少存在一个element2