468,257 Members | 1,432 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 468,257 developers. It's quick & easy.

Muenchian problem

Hi,

I'm trying to apply Muenchian grouping to the XML displayed below but
having no success, I'm trying to group on the section element, any
pointers would be much appreciated:

Thanks,

Mike

---- XML ----
<?xml version="1.0" encoding="utf-8"?>
<page>
<attributes>
<pagename>The Band</pagename>
<name>the_band</name>
<menuname>The Band</menuname>
<pageidentifier>english/the_band</pageidentifier>
<status>open</status>
<lastedited></lastedited>
</attributes>
<containers>
<container name="content">
<elements>
<element type="BandMember">
<name>Luke Skywalker</name>
<section>Front Row Cornets</section>
<position>Solo</position>
<joined>1992</joined>
<composer>Gershwin</composer>
<musicpiece>Lazy Trumpeter</musicpiece>
<bandmoment>something</bandmoment>
<notes></notes>
</element>
<element type="BandMember">
<name>Joe Bloggs</name>
<section>Basses</section>
<position>1st</position>
<joined>2004</joined>
<composer>Something</composer>
<musicpiece>Someething</musicpiece>
<bandmoment>Something</bandmoment>
<notes></notes>
</element>
<element type="BandMember">
<name>Some Body</name>
<section>Front Row Cornets</section>
<position>1st</position>
<joined>2003</joined>
<composer>jkjjkh</composer>
<musicpiece>hkjhjkh</musicpiece>
<bandmoment>Test</bandmoment>
<notes>Some notes</notes>
</element>
</elements>
</container>
</containers>
</page>
---------------

--- XSLT ----

<xsl:key name="section-group" match="element"
use="@type='BandMember'"/>

<xsl:template match="/" mode="show">
<xsl:for-each select="element[generate-id() =
generate-id(key('section-group',section) [1])]">
<h1>
<xsl:value-of select="section"/>
</h1>
<xsl:for-each select="key('section-group',section)">
<xsl:value-of select="name"/>
<br/>
</xsl:for-each>
</xsl:for-each>
</xsl:template>

----------------

May 10 '06 #1
1 1137
You should use the section in the key as that is what you want to group
on. Then the for-each selecting element in the document context (/)
will not select anything. Last, you need either to remove the mode on
the template or have some other template that applies templates with
the show mode on the document node. A working stylesheet is below:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">

<xsl:key name="section-group" match="element" use="section"/>

<xsl:template match="/">
<xsl:for-each select="//element[generate-id() =
generate-id(key('section-group',section) [1])]">
<h1>
<xsl:value-of select="section"/>
</h1>
<xsl:for-each select="key('section-group',section)">
<xsl:value-of select="name"/>
<br/>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

Regards,
George
---------------------------------------------------------------------
George Cristian Bina
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com

May 10 '06 #2

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

2 posts views Thread by Tristan Miller | last post: by
117 posts views Thread by Peter Olcott | last post: by
28 posts views Thread by Jon Davis | last post: by
6 posts views Thread by Ammar | last post: by
1 post views Thread by aleksander.hansen | last post: by
2 posts views Thread by la.brunning | last post: by
reply views Thread by NPC403 | last post: by
reply views Thread by kermitthefrogpy | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.