[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Muenchian work if more than one value is present

Subject: Re: [xsl] Muenchian work if more than one value is present
From: "Wendell Piez wapiez@xxxxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 19 Mar 2015 19:33:48 -0000


Yeah -- the for-each pulls all the errata_section elements that happen
to be the first one of the entire set with the same value for
module_impacted -- except that since you've added module_impact
siblings, it will be those that are the first one of the set of all
errata_section with *any* of the same module_impacted values. The key
can work many-to-one, and it does. This means in principle a
module_impacted can be dropped (if it never appears outside parents
that are also bound to other modules mentioned earlier).

To use Muenchian grouping, write your key to the module_impacted
elements themselves (by their values), not their parents. Then

for-each select="//module_impacted[generate-id() =

to iterate over these values (or rather, over a set of node proxies for

Or ditch the Muenchian grouping and join the modern world - XSLT 2.0.

Cheers, Wendell

On Wed, Mar 18, 2015 at 12:45 PM, russurquhart1@xxxxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>  Hi All,
> I have a question about using Muenchian Method in a specific situation.
> I have an xml source file like the following:
> <errata_section id="i875"
errata_type="bug"><title>Title</title><description> <para> Following a warm
Reset </para></description><devices_impacted>
> The existing xsl, that i am supporting, but didn't write, uses the following
> <xsl:key name="module-index" match="errata_section" use="module_impacted"/>
> And they have used the following Muenchian Method algorithm to go through
all the unique module_impacted elements.
> <xsl:for-each
module_impacted)[1])]"> <xsl:sort select="module_impacted"/>
> <!-- Determine module_impacted elements, for given device_name, and output
table. -->
> </xsl:for-each>
> Everything went fine until, over time, we have added additional
module_impacted siblings to the errata_section element like this:
> <errata_section id="i876"
errata_type="bug"><title>Title</title><description> <para> Following a warm
Reset </para></description><devices_impacted>
> Once this happened we started to see that not all module_impacted elements
were being found for the given device_name. My question is, is this happening
because the element we are doing the generate-id function on, in some cases
would have multiple siblings in a given errata_section element? Most of the
examples i have seen of using Muenchian Method are keying on a unique elment
value that doesn't have any similar named siblings.
> I'm just trying to understand if this structure would work at all.
> Thanks for any info you can provide and thank you Martin Honnen for your
help so far!
> Russ

Wendell Piez | http://www.wendellpiez.com
XML | XSLT | electronic publishing
Eat Your Vegetables

Current Thread