我一直在研究如何删除重复的节点,而不是如何继续。
我有这个初始列表
<?xml version="1.0" encoding="utf-8"?>
<SEC count="7">
<value>outy</value>
<name>object</name>
<Row>
<client>0000000530708</client>
<date>20100401</date>
</Row>
<Row>
<client>0000000530708</client>
<date>20100401</date>
</Row>
<Row>
<client>0000000999999</client>
<date>20100401</date>
</Row>
<Row>
<client>0000000999999</client>
<date>20100401</date>
</Row>
<Row>
<client>0000000999999</client>
<date>20100401</date>
</Row>
</SEC>
我希望得到这个
<?xml version="1.0" encoding="utf-8"?>
<SEC count="7">
<value>outy</value>
<name>object</name>
<Row>
<client>0000000530708</client>
<date>20100401</date>
</Row>
<Row>
<client>0000000999999</client>
<date>20100401</date>
</Row>
</SEC>
我该怎么办? 有人可以帮帮我吗?我使用XSL 1.0。
感谢。
答案 0 :(得分:3)
您可以使用Muenchian方法的变体来实现此目的。从身份模板开始,按原样复制所有内容,除非被更具体的模板覆盖:
<xsl:template match="@*|node()">
<xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy>
</xsl:template>
定义键,给出唯一性条件:
<xsl:key name="uniqueRow" match="Row" use="concat(client, '|', date)"/>
并添加一个模板,以忽略不的任何Row
第一个具有该特定键值的模板:
<xsl:template match="Row[generate-id() !=
generate-id(key('uniqueRow', concat(client, '|', date))[1])]"/>