|
Subject: Re: [xsl] hierarchical sorting problem From: Andy_Freeman@xxxxxx Date: Tue, 7 Oct 2003 11:13:50 -0400 |
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" />
> <Product MaterialNumber="76009" Team="RKL"
> ActionCode="A0" />
> </Group>
> <Group MaterialNumber="75051" Team="RKP">
> <Product MaterialNumber="75051" Team="RKP"
> ActionCode="J1" />
> <Product MaterialNumber="76109" Team="RKP"
> ActionCode="A4" />
> </Group>
> <Group MaterialNumber="376050" Team="RMT">
> <Product MaterialNumber="376009" Team="RMT"
> ActionCode="D4" />
> <Product MaterialNumber="376050" Team="RMT"
> ActionCode="A1" />
> </Group>
> <Product MaterialNumber="494728" Team="ENJ"
> ActionCode="C1" />
> </Result>
>
> Note: The example I have shown only has two children
> per group. The live
> data for this document can have an unlimited number
> of children.
>
> TIA,
> Andy
>
>
> XSL-List info and archive:
> http://www.mulberrytech.com/xsl/xsl-list
>
__________________________________
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
**********************************************************************
This message is intended only for the designated recipient(s). It may
contain confidential or proprietary information and may be subject to
the attorney-client privilege or other confidentiality protections.
If you are not a designated recipient, you may not review, use, copy
or distribute this message. If you receive this in error, please
notify the sender by reply e-mail and delete this message. Thank you.
***********************************************************************
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] hierarchical sorting prob, Americo Albuquerque | Thread | Re: [xsl] hierarchical sorting prob, Mukul Gandhi |
| Re: [xsl] xsl:value-of select : how, Mukul Gandhi | Date | Antw: RE: [xsl] gain data from mult, Elke Naraschewski |
| Month |