我有一个XML文档,如下所示:
<root>
<child>
<element1 name="name" type="string"></element1>
<element1 name="id" type="string" ></element1>
:
<element2 source="s1" desc="d1"></element2>
:
</child>
</root>
我必须在<element2>
之前的<element1>
旁边添加一个新元素(与element1
同名(。如何编写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>
但我还是不能按我想要的方式。请帮帮我。
在第一个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
。