获取每组代码10/11/12的最后修改集

时间:2014-10-22 09:10:32

标签: xml csv xslt xslt-1.0

我想做的是为eache SetCode重新开始这些值的第一次重复

<Root>
<Set>
<Code>10</Code>
<Date>20140405</Date>
</Set>
<Set>
<Code>12</Code>
<Date>20140405</Date>
</Set>
<Set>
<Code>12</Code>
<Date>20140404</Date>
</Set>
<Set>
<Code>11</Code>
<Date>20140404</Date>
</Set>
<Set>
<Code>11</Code>
<Date>20140305</Date>
</Set>
<Set>
<Code>12</Code>
<Date>20140305</Date>
</Set>
<Set>
<Code>10</Code>
<Date>20140302</Date>
</Set>
</Root>

我想要的结果是:

我使用foreach排序日期和位置(),但没有得到正确的结果

<Root>
 <Set>
 <Code>10</Code>
 <Date>20140405</Date>
 </Set>
 <Set>
 <Code>12</Code>
 <Date>20140404</Date>
 </Set>
 <Set>
 <Code>11</Code>
 <Date>20140404</Date>
 </Set>
</Root>

1 个答案:

答案 0 :(得分:0)

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output omit-xml-declaration="yes" indent="yes"/>
    <xsl:strip-space elements="*"/>
    <xsl:key name="kLineById" match="Set" use="Code"/>
    <xsl:template match="node()|@*">
        <xsl:copy>
            <xsl:apply-templates select="node()|@*"/>
        </xsl:copy>
    </xsl:template>
    <xsl:template match="Set[not(generate-id() = generate-id(key('kLineById', Code)[1]))]"/>
</xsl:stylesheet>