xsl-list
[Top] [All Lists]

Mixed Content Substring()

2003-08-18 01:21:33

Hiya,

Let's say you have something like:

<foo>
<bar type="ant"><rub type="glyph">A.</rub> This is a test.</bar>
<bar type="ant"><rub type="glyph">A.</rub>   Another test.</bar>
<bar type="res"><rub type="glyph">R.</rub> This is a test.</bar>
<bar type="res"><rub type="glyph">Res.</rub> This is a test.</bar>
<bar type="res"> Certainly another test.</bar>
<bar type="res"><rub type="glyph">Ant.</rub> Boring test.</bar>
<bar type="ant">This is a test.</bar>
<bar type="hymn"><rub type="glyph">Y.</rub> Lah di Dah.</bar>
</foo>

And what you want to get each time you match 'bar' is the
first letter of the <bar> element not including <rub>.
I see a few approaches to this.  First, I could do something with
a nodeset that just gets rid of <rub> in its entirety and then
substring(normalize-space(.), 1,1) bar.  Is that the best way?

Another way is to build a complex set of conditionals.  The
<rub> will only every be equal to known things (A. Ant. R. Res., etc.)
and since these are a known length, I could do the above but
substring(normalize-space(.), 4,1) for A. and hard code the rest as well.

The way that hadn't occurred to me until just now is to count the number of
letters in the normalize-space(rub), and go in that many+1(?) in
the normalize-space(bar).

Any thoughts?  Am I missing something obvious?

-James

-- 
Dr James Cummings, James(_dot_)Cummings(_at_)uea(_dot_)ac(_dot_)uk, 
http://www.uea.ac.uk/~q503
Cursus Project, School of Music, University of East Anglia,
Norwich, Norfolk, NR4 7TJ, UK  Tel:(01603)593-595



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>