我发布了许多关于使用XSLT插入XML元素的问题,我是XSLT的新手,我正在学习它。所以感谢帮助我的每个人。
现在,我想出了另一个问题:所以我插入一个可重复(无界)的XML元素,因此它将具有相同的xpath但元素的值不同,当我将xpath与模板模式匹配时,它会覆盖已插入的早期元素。那么有没有办法使用相同的xpath将多个元素插入到现有的XML中?我的输入是xpath,其中应插入这些元素和元素值。例如,我的输入是:
xpath: /root/child
element to insert: new_element
with the values: new1, new2 new3
所以输出应该如下:
<root>
<child>
<new_element>new1</new_element>
<new_element>new2</new_element>
<new_element>new3</new_element>
</child>
</root>
谢谢:)
答案 0 :(得分:1)
我可能会误解你的问题,但鉴于你帖子中的细节,很难实现你的意图。我不应该猜到这里我知道......无论如何,你对这样的事情感兴趣吗?
示例转换:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:variable name="newdata">
<new_element>new1</new_element>
<new_element>new2</new_element>
<new_element>new3</new_element>
</xsl:variable>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/root/child">
<xsl:copy>
<xsl:copy-of select="$newdata"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
鉴于此输入
<root>
<child/>
</root>
返回:
<root>
<child>
<new_element>new1</new_element>
<new_element>new2</new_element>
<new_element>new3</new_element>
</child>
</root>