Need Help on Filtering duplicated data
I have following xml data
<?xml version="1.0" encoding="UTF-8"?>
<datas>
<data>
<item id="9191" title="First">
<datafield>
<label>item_type_code</label>
<entry>PA</entry>
</datafield>
<datafield>
<label>item_type_description</label>
<entry>PA</entry>
</datafield>
</item>
<item id="9695">
<datafield>
<label>item_type_code</label>
<entry>OE</entry>
</datafield>
<datafield>
<label>item_type_description</label>
<entry>OEE</entry>
</datafield>
</item>
</data>
<data>
<item id="9291" title="Second">
<datafield>
<label>item_type_code</label>
<entry>PA</entry>
</datafield>
<datafield>
<label>item_type_description</label>
<entry>PAA</entry>
</datafield>
</item>
<item id="1086">
<datafield>
<label>item_type_code</label>
<entry>PP</entry>
</datafield>
<datafield>
<label>item_type_description</label>
<entry>PPA</entry>
</datafield>
</item>
</data>
<data>
<item id="9993" title="Four">
<datafield>
<label>item_type_code</label>
<entry>PA</entry>
</datafield>
<datafield>
<label>item_type_description</label>
<entry>PAA</entry>
</datafield>
</item>
<item id="9983" title="Fifty">
<datafield>
<label>item_type_code</label>
<entry>PA</entry>
</datafield>
<datafield>
<label>item_type_description</label>
<entry>PAA</entry>
</datafield>
</item>
<item id="8987">
<datafield>
<label>item_type_code</label>
<entry>OE</entry>
</datafield>
<datafield>
<label>item_type_description</label>
<entry>OEE</entry>
</datafield>
</item>
</data>
<data>
<item id="9993" title="Four">
<datafield>
<label>item_type_code</label>
<entry>PA</entry>
</datafield>
<datafield>
<label>item_type_description</label>
<entry>PAA</entry>
</datafield>
</item>
<item id="9987" title="Six">
<datafield>
<label>item_type_code</label>
<entry>PA</entry>
</datafield>
<datafield>
<label>item_type_description</label>
<entry>PAA</entry>
</datafield>
</item>
<item id="9687">
<datafield>
<label>item_type_code</label>
<entry>OE</entry>
</datafield>
<datafield>
<label>item_type_description</label>
<entry>OEE</entry>
</datafield>
</item>
</data>
<data>
<item id="9168" title="Sevent">
<datafield>
<label>item_type_code</label>
<entry>PA</entry>
</datafield>
<datafield>
<label>item_type_description</label>
<entry>PAA</entry>
</datafield>
</item>
<item id="9087" title="Ten">
<datafield>
<label>item_type_code</label>
<entry>PA</entry>
</datafield>
<datafield>
<label>item_type_description</label>
<entry>PAA</entry>
</datafield>
</item>
<item id="9487">
<datafield>
<label>item_type_code</label>
<entry>OE</entry>
</datafield>
<datafield>
<label>item_type_description</label>
<entry>OEE</entry>
</datafield>
</item>
</data>
</datas>
And my xsl as following
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xml:space="default">
<xsl:template match="/">
<xsl:apply-templates select="//item" mode="passage"/>
</xsl:template>
<xsl:template match="item" mode="passage">
<xsl:if test="descendant::datafield/entry[preceding-sibling::node()[text()='item_type_code']]/text()='OE'">
1. Found OE item
<xsl:for-each select="preceding-sibling::item[@title !='']">
2. Found a Passage item that relate to OE item.
<xsl:variable name="pass_id" select="@id"/>
<xsl:if test="not(preceding-sibling::item/@id = $pass_id)">
pa_ident= <xsl:value-of select="@id"/><br></br>
3.Don't print duplicate passage
</xsl:if>
</xsl:for-each>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
I want the Out put as :
pa_ident= 9191
pa_ident= 9993
pa_ident= 9983
pa_ident= 9987
pa_ident= 9160
pa_ident= 9087
but I canât filtering the duplicated item out (pa_ident= 9993).
Here's what I did:
step1:Found OE item
step2: Found a PA item that relate to OE item.
step3: filter out the duplicated PA item
(I can't get step3 work correctly)
Thanks you in advance.
Fanyin
|