XSLT 如果节点不存在则添加节点,如果存在则追加子节点
我有以下 XML:
<root>
<book>
<element2 location="file.txt"/>
<element3>
<element3child/>
</element3>
</book>
<book>
<element2 location="difffile.txt"/>
</book>
</root>
我需要能够复制所有内容,但检查我们是否位于 /root/book/element2[@location='whateverfile'] 中。如果我们在这里,我们需要检查同级 element3 是否存在,如果不存在,我们添加一个
。另一方面,如果它已经存在,我们需要转到它的子元素并找到 last()
并附加我们自己的元素,例如
。
到目前为止,我已经提出了以下内容。但请记住,我是 XSLT 新手,需要语法等方面的帮助。
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/root/book/element2[@location='file.txt']/../*/last()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
<element3child/>
</xsl:template>
I have the following XML:
<root>
<book>
<element2 location="file.txt"/>
<element3>
<element3child/>
</element3>
</book>
<book>
<element2 location="difffile.txt"/>
</book>
</root>
I need to be able to copy everything but check if we are in /root/book/element2[@location='whateverfile'] . If we are here we need to check if the sibling element3 exists, if it does not we add a <element3>
. If on the other hand it already exists we need to goto the child elements of it and find last()
and append an element of our own say <element3child>
.
So far i have come up with the following. But bear in mind i am new to XSLT and need some help with syntax etc.
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/root/book/element2[@location='file.txt']/../*/last()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
<element3child/>
</xsl:template>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)