Re: [xsl] key using a number of siblings

Subject: Re: [xsl] key using a number of siblings
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Wed, 13 Nov 2002 17:58:59 -0500
Franklin,

At 05:13 PM 11/13/2002, you wrote:
I have data that looks like

...
<w>a</w>
<w><f type="completion">b</f></w>
<w><f type="completion">c</f></w>
...

I am doing processing for each "word", and am attempting to do this
using a key.  The key

<xsl:key name="words" match="w[not(f/@type='completion')]" use="normalize-space(text())"/>

manages to match what I want, I believe, but instead of

text(), I really want to concatenate text() with all following
siblings that are completions, such that for the example above, I get
the string

"a+b+c"

Oo.


Is there an elegant way to do this?

The cleanest approach to this I can think of is to pass twice, first to process your <w> combinations into their full "words", the second to key them and do whatever you're doing. This could be done in a way that wouldn't mess too much with the data if the first pass worked to introduce a wrapper, so


<w>a</w>
<w><f type="completion">b</f></w>
<w><f type="completion">c</f></w>

would appear as

<word key="a+b+c">
  <w>a</w>
  <w><f type="completion">b</f></w>
  <w><f type="completion">c</f></w>
</word>

This would require a "levitation" algorithm (i.e. a grouping to unflatten the hierarchy) to collect the <w> elements properly.

Your problem as stated must be the Puzzler of the Week; I wonder if someone can come up with something (but methinks it can't be done).

I hope this helps,
Wendell


====================================================================== Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx 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



Current Thread