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(_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