Re: [xsl] Novice Question - matching entire text children

Subject: Re: [xsl] Novice Question - matching entire text children
From: Michael Kay <mike@xxxxxxxxxxxx>
Date: Mon, 20 Dec 2010 14:19:56 +0000
In principle, an element node is not allowed to have two adjacent text node children, so unless there are comments or processing instructions breaking up the text, it should be delivered as a single node.

However, DOM does allow adjacent text nodes, and some processors work on a DOM tree as input, and I suspect some processors do not always amalgamate adjacent text nodes as they should.

In any case, it's a good idea to make sure that your code still works if someone puts a comment in the middle of the text, so it's best not to assume that all the text of an element is in a single node. Usually the best way of doing that (unless you are dealing with mixed content) is to use the string-value of the element node, rather than its text node children.

Michael Kay

On 20/12/2010 13:09, David Lee wrote:
XSLT 2.0
I have a problem (probably my own misuse of XSLT) but I run into cases where

<xsl:template  match="NODE/text()">


can match more then once in a row.   I have not debugged this yet to
determine if something more complex is really the culprit (probably is),
and the text nodes matched seem to be whitespace  " \n\t .."
But before I really start digging maybe someone could tell me offhand what
the *expected* behaviour is ?

If I have an element lik


is <xsl:template match="NODE/text()">

*supposed* to be called once and only once with the entire text children or
is it possible that it is called multiple times with chunks of data as the
processer sees fit. ?

I know just enough to hurt myself by knowing that in various data models
the CHARACTERS (aka text()) can be arbitrarily chunked but I dont know (or
know where to look) to answer the above definitatively 

Thanks for any suggestions

David A. Lee

---------------------------------------- David A. Lee dlee@xxxxxxxxxxx

Current Thread