Subject: Re: [xsl] hierarchical sorting problem From: Mukul Gandhi <mukulgw3@xxxxxxxxx> Date: Tue, 7 Oct 2003 10:57:53 -0700 (PDT) |
Hi Andy, I feel, when you say you want to sort by ActionCode, tags within ProductGroup (i.e. ChildProduct) are a seperate group to be sorted, and <Product> tags just below <Result> form a different group to be sorted seperately. I feel, you cannot sort between <Product MaterialNumber="494728" Team="ENJ" ActionCode="C1" /> and , <ChildProduct MaterialNumber="376050" Team="RMT" ActionCode="A1" /> based on ActionCode. <Product> and <ChildProduct> belong to two mutually exclusive sets that have to be sorted seperately. I believe this is implied by your description. I am sorry, that I am still not able to understand the requirement. Regards, Mukul --- Andy_Freeman@xxxxxx wrote: > > Hi Mukul, > > Your first solution is removing my top level Product > tags and it does not > sort the Product tags that have been grouped > together. I am posting a > different view of that same XML structure that might > make it easier to > understand what I need: > > <Result> > <Product MaterialNumber="494728" Team="ENJ" > ActionCode="C1" /> > > <ProductGroup MaterialNumber="376050" Team="RMT"> > <ChildProduct MaterialNumber="376050" Team="RMT" > ActionCode="A1" /> > <ChildProduct MaterialNumber="376009" Team="RMT" > ActionCode="D4" /> > </ProductGroup> > > <Product MaterialNumber="70133" ActionCode="" /> > > <ProductGroup MaterialNumber="75050" Team="RKL"> > <ChildProduct MaterialNumber="75050" Team="RKL" > ActionCode="J0" /> > <ChildProduct MaterialNumber="76009" Team="RKL" > ActionCode="A0" /> > </ProductGroup> > > <ChildProduct MaterialNumber="70309" Team="DDE" > ActionCode="A5" /> > > <ProductGroup MaterialNumber="75051" Team="RKP"> > <ChildProduct MaterialNumber="75051" Team="RKP" > ActionCode="J1" /> > <ChildProduct MaterialNumber="76109" Team="RKP" > ActionCode="A4" /> > </ProductGroup> > </Result> > > > Here is what I have come up with for the first > problem: > > <xsl:template match="/Result"> > <Result> > <xsl:for-each select="child::*"> > <xsl:sort > select="descendant-or-self::Product/@ActionCode"/> > <xsl:copy-of select="."/> > </xsl:for-each> > </Result> > </xsl:template> > > This preserved the structure of the XML and got me > close to the expected > results. However, it did not sort the child tags > correctly. > > Thanks for trying! > > Andy > > > > Hi Andy, > I feel a logical sorting solution will be -- > > For 1st requirement > ------------------- > > <xsl:template match="/"> > <Result> > <xsl:for-each select="Result/Group"> > <Group MaterialNumber="{@MaterialNumber}" > Team="{@Team}"> > <xsl:for-each select="Product"> > <xsl:sort select="@ActionCode" /> > <Product > MaterialNumber="{@MaterialNumber}" > Team="{@Team}" Actioncode="{@ActionCode}"> > > </Product> > </xsl:for-each> > </Group> > </xsl:for-each> > </Result> > </xsl:template> > > For 2nd requirement > ------------------- > > <xsl:template match="/"> > <Result> > <xsl:for-each select="Result/Group"> > <xsl:sort select="@MaterialNumber" /> > <Group MaterialNumber="{@MaterialNumber}" > Team="{@Team}"> > <xsl:for-each select="Product"> > <xsl:sort select="@MaterialNumber" /> > <Product MaterialNumber="{@MaterialNumber}" > Team="{@Team}" ActionCode="{@ActionCode}"> > </Product> > </xsl:for-each> > </Group> > </xsl:for-each> > </Result> > </xsl:template> > > Its not very clear to me, *how you want to output > <Product> tags which are not within <Group>* . Some > such tags, you are outputting at top and some at > bottom(which does not seem to be a natural sorted > output). > > The above XSLs are not producing <Product> tags > which > are not within <Group> tags. > > I feel, you need to make the _requirement more > clear_. > > Regards, > Mukul > > > --- Andy_Freeman@xxxxxx wrote: > > I am trying to sort an XML document by a variety > of > > different attributes. > > Here is an example of the source document: > > > > <Result> > > <Product MaterialNumber="494728" Team="ENJ" > > ActionCode="C1" /> > > <Group MaterialNumber="376050" Team="RMT"> > > <Product MaterialNumber="376050" Team="RMT" > > ActionCode="A1" /> > > <Product MaterialNumber="376009" Team="RMT" > > ActionCode="D4" /> > > </Group> > > <Product MaterialNumber="70133" ActionCode="" /> > > <Group MaterialNumber="75050" Team="RKL"> > > <Product MaterialNumber="75050" Team="RKL" > > ActionCode="J0" /> > > <Product MaterialNumber="76009" Team="RKL" > > ActionCode="A0" /> > > </Group> > > <Product MaterialNumber="70309" Team="DDE" > > ActionCode="A5" /> > > <Group MaterialNumber="75051" Team="RKP"> > > <Product MaterialNumber="75051" Team="RKP" > > ActionCode="J1" /> > > <Product MaterialNumber="76109" Team="RKP" > > ActionCode="A4" /> > > </Group> > > </Result> > > > > I need to sort by the Product ActionCode attribute > > at either level to > > produce the following output: > > > > <Result> > > <Product MaterialNumber="70133" ActionCode="" /> > > <Group MaterialNumber="75050" Team="RKL"> > > <Product MaterialNumber="76009" Team="RKL" > > ActionCode="A0" /> > > <Product MaterialNumber="75050" Team="RKL" > > ActionCode="J0" /> > > </Group> > > <Group MaterialNumber="376050" Team="RMT"> > > <Product MaterialNumber="376050" Team="RMT" > > ActionCode="A1" /> > > <Product MaterialNumber="376009" Team="RMT" > > ActionCode="D4" /> > > </Group> > > <Group MaterialNumber="75051" Team="RKP"> > > <Product MaterialNumber="76109" Team="RKP" > > ActionCode="A4" /> > > <Product MaterialNumber="75051" Team="RKP" > > ActionCode="J1" /> > > </Group> > > <Product MaterialNumber="70309" Team="DDE" > > ActionCode="A5" /> > > <Product MaterialNumber="494728" Team="ENJ" > > ActionCode="C1" /> > > </Result> > > > > I also need to sort by the Product|Group > > MaterialNumber attribute to > > produce the following output: > > > > <Result> > > <Product MaterialNumber="70133" ActionCode="" /> > > <Product MaterialNumber="70309" Team="DDE" > > ActionCode="A5" /> > > <Group MaterialNumber="75050" Team="RKL"> > > <Product MaterialNumber="75050" Team="RKL" > > ActionCode="J0" /> > === message truncated === __________________________________ Do you Yahoo!? The New Yahoo! Shopping - with improved product search http://shopping.yahoo.com XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] hierarchical sorting prob, Andy_Freeman | Thread | [xsl] Display image using relative , Ibeling, Narisa |
Re: [xsl] FOP Bug? Leaking table ro, roger . wyatt | Date | Re: [xsl] xsl, FOP warnings and err, J.Pietschmann |
Month |