我有一个像这样的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>
但我仍然无法按照我想要的方式得到它。请帮我。
答案 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
。