[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

[SOLVED] RE: grouping - XSLT 1.0

Subject: [SOLVED] RE: grouping - XSLT 1.0
From: "Lopez, William" <william.lopez@xxxxxxx>
Date: Thu, 14 Apr 2005 00:05:05 -0500
grouping xslt
I got it to work but it's still ugly. I'm still interested in doing it
correctly (or a more eloquent solution :-).

Thanks

-----Original Message-----
From: Lopez, William 
Sent: Wednesday, April 13, 2005 11:45 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject:  grouping - XSLT 1.0

List:
[Will] I've tried the Muenchian Method with no success (my lack of
understanding).

I have the following xml that will be transformed in an unordered list in
html. Each category is processed differently - Cat 2 is what I'm trying to
nail:


<root>
  <Category ID="1" Name="Relate">
	...
  </Category>
  <Category ID="2" Name="Response">
	<Question ID="34" Text="Customer Focus" >
	  <Help ID="203" Category="Clerical:" Text="c1"/>
	  <Help ID="204" Category="Clerical:" Text="c2"/>
        <Help ID="206" Category="Technical:" Text="t1"/>
	  <Help ID="207" Category="Technical:" Text="t2"/>
	  <Help ID="209" Category="Professional:" Text="p1"/>
	  <Help ID="210" Category="Professional:" Text="p2"/>
	  <Help ID="212" Category="Supervisor:" Text="s1"/>
	  <Help ID="213" Category="Supervisor:" Text="s2"/>
	</Question>
	<Question ID="35" Text="Integrity and Trust"">
	  <Help ID="203" Category="Clerical:" Text="c1"/>
	  <Help ID="204" Category="Clerical:" Text="c2"/>
        <Help ID="206" Category="Technical:" Text="t1"/>
	  <Help ID="207" Category="Technical:" Text="t2"/>
	  <Help ID="209" Category="Professional:" Text="p1"/>
	  <Help ID="210" Category="Professional:" Text="p2"/>
	  <Help ID="212" Category="Supervisor:" Text="s1"/>
	  <Help ID="213" Category="Supervisor:" Text="s2"/>
	</Question>
   </Category>
   </root>

The output should be similar to this the '>>' represents an icon which
toggles the help elements visibility (they're in a div):

>>Customer Focus
  O Clerical
	[] c1
	[] c2
  0 Technical
	[] t1
	[] t2
...
>> Integrity and Trust
  O Clerical
	[] c1
	[] c2
  0 Technical
	[] t1
	[] t2
...

How do I get these grouped so that each div represents the appropriate
question. Currently, my xslt does not - it uses the same <Question> id for
all questions which means the div's ids are not unique. I could not get the
Muenchian Method to work so I tried a 'simple' solution. 

The xsl:

...
<xsl:template name="questionhelp">
	<xsl:param name="title"/>

	<!-- Write the help image -->
	<input type='image' src='/PMP/common/images/ico_collapsed.gif'
onclick='ShowHelpText({@ID},this);' width='16' height='16' border='2' />
	<!-- Write the text -->
	<xsl:text>  </xsl:text><xsl:value-of select="$title"/>
	<!-- **************************************************** -->
	<!-- I tried this but didn't yield the result I wanted

		<xsl:if test="./Help[@Category='Clerical:']">
			<xsl:call-template name="clerical"/>
		</xsl:if>
		<xsl:if test="./Help[@Category='Technical:']">
			<xsl:call-template name="technical"/>
		</xsl:if>
		<xsl:if test="./Help[@Category='Professional:']">
			<xsl:call-template name="professional"/>
		</xsl:if>
		<xsl:if test="./Help[@Category='Supervisor:']">
			<xsl:call-template name="supervisor"/>
		</xsl:if>
		<xsl:if test="./Help[@Category='Leader:']">
			<xsl:call-template name="leader"/>
		</xsl:if>

	-->
	<!-- **************************************************** -->
	<!-- 
		so I tried using this and *hoped* a match would do the
trick, it 		did not 
	-->
		<xsl:apply-templates />

</xsl:template>

<xsl:template match="Help" name="clerical2">
	<!-- Write the help -->
	<div class="helpText" id="helpText_{@ID}" name="helpText_{@ID}"
style="display:none">
	<li>Clerical:</li>
		<ul>
		<xsl:for-each select="./Help[@Category='Clerical:']">
			<li>
				<xsl:value-of select="./@Text"/>	 
			</li>	
			</xsl:for-each>	
		</ul>
	</div>
</xsl:template>

This blows up. I can not figure out how to accomplish this without hard
coding the category type. I would like to find a 'generic' way to handle it.

Thanks,

-Will

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.