1

我一直在研究如何删除重复的节点,但没有研究如何继续。

我有这个初始清单

<?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。

谢谢。

4

1 回答 1

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])]"/>
于 2013-10-15T10:16:19.883 回答