Subject: [xsl] Filtering duplicated data problem From: Fanyin Wang <fanyinxslt@xxxxxxxxx> Date: Wed, 3 Nov 2004 10:24:42 -0800 (PST) |
Hi, Here's my xml and xsl <?xml version="1.0" encoding="UTF-8"?> <sections id="001" title="Title"> <section> <item id="9191" title="JN0009"> <itemmetadata> <qtimetadata> <qtimetadatafield> <fieldlabel>item_type_code</fieldlabel> <fieldentry>PA</fieldentry> </qtimetadatafield> <qtimetadatafield> <fieldlabel>item_type_description</fieldlabel> <fieldentry>PAA</fieldentry> </qtimetadatafield> </qtimetadata> </itemmetadata> </item> <item id="3280547"> <itemmetadata> <qtimetadata> <qtimetadatafield> <fieldlabel>item_type_code</fieldlabel> <fieldentry>OE</fieldentry> </qtimetadatafield> <qtimetadatafield> <fieldlabel>item_type_desc</fieldlabel> <fieldentry>OEE</fieldentry> </qtimetadatafield> </qtimetadata> </itemmetadata> </item> </section> <section> <item id="11114" title="JNST0322"> <itemmetadata> <qtimetadata> <qtimetadatafield> <fieldlabel>item_type_code</fieldlabel> <fieldentry>PA</fieldentry> </qtimetadatafield> <qtimetadatafield> <fieldlabel>item_type_description</fieldlabel> <fieldentry>PAA</fieldentry> </qtimetadatafield> </qtimetadata> </itemmetadata> </item> <item id="3331945"> <itemmetadata> <qtimetadata> <qtimetadatafield> <fieldlabel>item_type_code</fieldlabel> <fieldentry>MC</fieldentry> </qtimetadatafield> <qtimetadatafield> <fieldlabel>item_type_description</fieldlabel> <fieldentry>MMC</fieldentry> </qtimetadatafield> </qtimetadata> </itemmetadata> </item> </section> <section> <item id="11114" title="JNST0322"> <itemmetadata> <qtimetadata> <qtimetadatafield> <fieldlabel>item_type_code</fieldlabel> <fieldentry>PA</fieldentry> </qtimetadatafield> <qtimetadatafield> <fieldlabel>item_type_description</fieldlabel> <fieldentry>PAA</fieldentry> </qtimetadatafield> </qtimetadata> </itemmetadata> </item> <item id="11291" title=".JN0321"> <itemmetadata> <qtimetadata> <qtimetadatafield> <fieldlabel>item_type_code</fieldlabel> <fieldentry>PA</fieldentry> </qtimetadatafield> <qtimetadatafield> <fieldlabel>item_type_desc</fieldlabel> <fieldentry>PAA</fieldentry> </qtimetadatafield> </qtimetadata> </itemmetadata> </item> <item id="9191" title="JN0009"> <itemmetadata> <qtimetadata> <qtimetadatafield> <fieldlabel>item_type_code</fieldlabel> <fieldentry>PA</fieldentry> </qtimetadatafield> <qtimetadatafield> <fieldlabel>item_type_description</fieldlabel> <fieldentry>PAA</fieldentry> </qtimetadatafield> </qtimetadata> </itemmetadata> </item> <item id="3280585"> <itemmetadata> <qtimetadata> <qtimetadatafield> <fieldlabel>passage_id_ref</fieldlabel> <fieldentry>11291</fieldentry> </qtimetadatafield> <qtimetadatafield> <fieldlabel>item_type_code</fieldlabel> <fieldentry>OE</fieldentry> </qtimetadatafield> <qtimetadatafield> <fieldlabel>item_type_desc</fieldlabel> <fieldentry>OEE</fieldentry> </qtimetadatafield> </qtimetadata> </itemmetadata> </item> </section> </sections> ----------------------------------------------------------------------------------------- <?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::qtimetadatafield/fieldentry[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)"> 3. Print pa_id= <xsl:value-of select="@id"/><br></br> </xsl:if> </xsl:for-each> </xsl:if> </xsl:template> </xsl:stylesheet> The way I tried on my xsl not work correctly, I'm asking for help on grouping solution ( I can't get it work). thank you in advance! I want the first level group to group the <section> element base on the value of the fieldentry for the item_type_desc in the item that has a item_type_code of OE. (this allow me to have two <section> with all it's items including item that has a item_type_code of OE) . Then base on first level group to group <item> element base on the unique value of it's @id ( this allow me to get rid of the duplicate item that has a item_type_code of PA) The output that I want is able to get unique item of @id that is relate to the item has a item_type_code of OE. In my xml source, I have 3 <section> elements, after first level group, I should have 2 <section> elements that contain all <item> elements (has duplicated item in both <section> for example item @id=9191). after second group it should let me to get following (get rid of duplicated item @id 9191) item @id of 9191 item @id of 11114 item @id of 11291 Thank you very much for the help Fanyin __________________________________ Do you Yahoo!? Check out the new Yahoo! Front Page. www.yahoo.com
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] xsl:choose, Manpreet Singh | Thread | Re: [xsl] Filtering duplicated data, Geert Josten |
Re: [xsl] xsl:choose, Mark Williams | Date | [xsl] RE: Collapsing run-on tag cha, Richard Bondi |
Month |