我喜欢
XML
<root> <a>One</a> <a>Two</a> <b>Three</b> <c>Four</c> <a>Five</a> <b> <a>Six</a> </b> </root>
并且需要选择root中任何子节点名称的最后一次出现.在这种情况下,所需的结果列表将是:
<c>Four</c> <a>Five</a> <b> <a>Six</a> </b>
任何帮助表示赞赏!
解决方法
基于XSLT的解决方案:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/> <xsl:strip-space elements="*"/> <xsl:template match="root/*"> <xsl:variable name="n" select="name()"/> <xsl:copy-of select=".[not(following-sibling::node()[name()=$n])]"/> </xsl:template> </xsl:stylesheet>
产量:
<c>Four</c> <a>Five</a> <b> <a>Six</a> </b>
第二种解决方案(您可以将其用作单个XPath表达式):
<xsl:template match="/root"> <xsl:copy-of select="a[not(./following-sibling::a)] | b[not(./following-sibling::b)] | c[not(./following-sibling::c)]"/> </xsl:template>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。