Hi Andrew,
At 04:29 PM 1/2/2004, you wrote:
I've got an XML file organized in one way that I'm trying to convert to
match the organization of other files that I deal with. I want the file
hierarchy to be:
<game>
<state>
<user/>
</state>
</game>
There are many games, states, and users.
Cool.
The file that I'm trying to convert is organized by user. I can do grouping
to determine the states and games, but it seems like I need to do redundant
grouping to do the conversion.
I'm unsure of what you mean by needing "redundant grouping".
But I can give a couple of hints on how to proceed. If you're using keys to
retrieve your nodes when grouped, as you probably know
<xsl:key name="users-by-state" match="user" use="state"/>
will let you retrieve all the <user> elements with a given state as the
value of a <state> element child.
Similarly, providing each <user> has just one state and one game, you can
create a compound key
<xsl:key name="users-by-state-game" match="user" use="concat(state, game)"/>
which will get you all the users that contain a given state/game combination.
To handle what might be the "redundant grouping" problem you allude to, you
might also find a key useful to retrieve all the states represented for a
given game:
<xsl:key name="state-by-game" match="state" use="../game"/>
This will give you a way to traverse over the states for each game (the
first level of your grouping); within this traversal (of course, you'll
have to de-duplicate these sets of nodes as you go, in the usual way), you
can use the compound key to get the particular users for each state/game.
I hope that's a help. Ask again if I'm being too sketchy. Definitely
consult http://www.jenitennison.com under "grouping" if you haven't
already; a search for "XSLT two-level grouping" might also turn something up.
Cheers,
Wendell
======================================================================
Wendell Piez
mailto:wapiez(_at_)mulberrytech(_dot_)com
Mulberry Technologies, Inc. http://www.mulberrytech.com
17 West Jefferson Street Direct Phone: 301/315-9635
Suite 207 Phone: 301/315-9631
Rockville, MD 20850 Fax: 301/315-8285
----------------------------------------------------------------------
Mulberry Technologies: A Consultancy Specializing in SGML and XML
======================================================================
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list