Re: [xsl] template match question

Subject: Re: [xsl] template match question
From: Ciarán Ó Duibhín <ciaran@xxxxxxxxxxxxxxxxxxxxxxxx>
Date: Sat, 11 Dec 2010 03:37:33 -0000
Great, many thanks, that's exactly what I meant.

However, on trying it out, I found that any newlines and indentation within my <block> element contribute to the string_length, so that my <block> is no longer 1 character long when they are present.

So I would like to ask again, but this time: how to match any <block> in which the sum of the lengths of the child <inline> elements is 1 character? (My newlines and indentation will be outside any <inline> element, but all the "content" is inside <inline> elements.) Do I need to program a loop somehow, or is there a handy function?

Ciaran S Duibhmn

----- Original Message ----- From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Saturday, December 11, 2010 3:13 AM
Subject: Re: [xsl] template match question

At 2010-12-11 02:30 +0000, Ciaran S Duibhmn wrote:
Please excuse a specific and elementary query on XSL.

I understand how

<xsl:template match="block[string-length(./inline)=1]">

matches any <block> element which has as child an <inline> element whose text content is one character in length.

But how can I change this to match any <block>, for which the sum of the lengths of its <inline> child elements is one character; or alternatively, any <block> the length of whose whole text content is1 character, since all the text in my <block> elements is found in child <inline> elements?

If I've understood you correctly, this is what you need:

<xsl:template match="block[string-length(.)=1]">

The block is matched if its string length is one character.

I hope this helps.

. . . . . . . . . Ken

Current Thread