Altova Mailing List Archives>Archive Index >microsoft.public.xsl Archive Home >Recent entries >Thread Prev - Grouping/Sorting Problem >Thread Next - Re: Grouping/Sorting Problem Re: Grouping/Sorting ProblemTo: NULL Date: 10/6/2006 8:23:00 PM
The following transformation produces the desired result -- without any
intermediate RTFs and the need to convert them to regular trees:
<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:template match="/">
<html>
<xsl:apply-templates/>
</html>
</xsl:template>
<xsl:template match="Selection_Number">
<table>
<tr><td>Selection <xsl:value-of select="."/></td></tr>
<xsl:for-each select="../Configuration_Data/Module">
<xsl:sort select="@displayOrder" data-type="number"/>
<xsl:variable name="vpMod" select=
"../../Performance_Data/Perf_Data/Perf_Module
[@nID = current()/@nID]
"/>
<tr>
<td><xsl:value-of select="@name"/></td>
</tr>
<xsl:for-each select="Category">
<xsl:sort select="@displayOrder" data-type="number"/>
<xsl:variable name="vPos" select="position()"/>
<tr>
<td>
<xsl:value-of select="@name"/>
</td>
<td>
<xsl:for-each select="$vpMod/Perf_Category">
<xsl:sort select="@displayOrder" data-type="number"/>
<xsl:if test="position() = $vPos">
<xsl:value-of select="@name"/>
</xsl:if>
</xsl:for-each>
</td>
</tr>
</xsl:for-each>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
Cheers,
Dimitre Novatchev
"Sarah_Lund" <SarahLund@d...> wrote in message
news:570EFAE9-042E-44D0-8C14-4E63A662D991@m......
> First I need to create a table for each Selection
> Then within each table I need to group by each
> Configuration_Data/Module/@nID =
> Performance_Data/Perf_Data/Perf_Module/@nID
> Then for each Configuration_Data/Module/@nID =
> Performance_Data/Perf_Data/Perf_Module/@nID I need to display
> Category/@name
> and Perf_Category/@name but these must be sorted according to
> Category/@displayOrder and Perf_Module/Perf_Category/@displayOrder
>
> So for each Configuration_Data/Module/@nID =
> Performance_Data/Perf_Data/Perf_Module/@nID I need to dump all Category
> and
> all Perf_Module/Perf_Category into a set and then sort them all by their
> @displayOrder.
>
> And then display them left to right in two columns in the table. The
> results
> would like like the following:
> <table>
> <tr><td>Selection 1</td></tr>
> <tr><td>Base Unit Module</td></tr>
> <tr><td>Unit</td><td>Elevation</td></tr>
> <tr><td>Unit Roof</td><td>Unit Airflow</td></tr>
> <tr><td>Htg</td><td>Frame</td></tr>
> <tr><td>Fan Module</td></tr>
> ...
> </table>
>
> I had gotten help to get something like this working in the past but
> having
> trouble applying to this case. Any help is appreciated!
> An excerpt from the xml file is below:
> <Products>
> <Begin_Product nID="2002421">
> <Selection>
> <Selection_Number>1</Selection_Number>
> <Configuration_Data>
> <Module displayOrder="10" nID="4656" name="Base Unit Module">
> <Category displayOrder="10" nID="21" name="Unit"/>
> <Category displayOrder="50" nID="43" name="Frame"/>
> <Category displayOrder="20" nID="67" name="Unit Roof"/>
> </Module>
> <Module displayOrder="20" nID="4658" name="Fan Module">
> <Category displayOrder="10" nID="96" name="Fan Module"/>
> <Category displayOrder="20" nID="63" name="Fan Size"/>
> </Module>
> </Configuration_Data>
> <Performance_Data>
> <Perf_Data>
> <Perf_Module nID="4656" name="Base Unit Module">
> <Perf_Category displayOrder="30" nID="10" name="Unit Airflow"/>
> <Perf_Category displayOrder="10" nID="91" name="Elevation"/>
> <Perf_Category displayOrder="40" nID="13" name="Htg"/>
> </Perf_Module>
> <Perf_Module nID="4658" name="Fan Module">
> <Perf_Category displayOrder="20" nID="23" name="Airflow"/>
> <Perf_Category displayOrder="90" nID="30" name="AbsPower"/>
> </Perf_Module>
> </Perf_Data>
> </Performance_Data>
> </Selection>
> </Begin_Product>
> </Products>
| ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
