2013-10-15 128 views
1

我一直在研究如何刪除重複的節點,但不知道如何繼續。按節點組或刪除節點用xslt重複?

我有這樣的初步名單

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

謝謝。

回答

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)"/> 

和一個多模板添加到忽略任何那就是不是第一個用那個特定的鍵值:

<xsl:template match="Row[generate-id() != 
    generate-id(key('uniqueRow', concat(client, '|', date))[1])]"/>