RE: [xsl] Testing for text before an element

Subject: RE: [xsl] Testing for text before an element
From: "Robert C. Lyons" <boblyons@xxxxxxxxxx>
Date: Tue, 17 Jul 2001 00:07:02 -0400
Ken,

It seems to me that you want to output a
<LineBreak/> if the first child node of
the current node is not a para element.
For example, if the first child node of
the current node is a text node or an
element named abc, then you would want
to output a <LineBreak/>.

The following is true if the first child
node of the current node is not a para
element:

  child::node()[1][not( self::para )]

If you don't want to output a <LineBreak/>
when the first child element of the current
node is a para element that is preceded by
ignorable whitespace, then you can include
the following instruction in your stylesheet:

  <xsl:strip-space elements="*"/>

Hope this helps.

Bob

<sig name    = 'Bob Lyons'
     title   = 'XML Consultant'
     company = 'Unidex, Inc.'
     phone   = '+1-732-975-9877'
     email   = 'boblyons@xxxxxxxxxx'
     url     = 'http://www.unidex.com/'
     product = 'XML Convert: transforms flat files to XML and vice versa' />

-----Original Message-----

Hi,
	I'm trying to detect if either:
		the first child of the current node is not a <para>
	or
		text appears before a first child <para> node

	I'm using a <xsl:if
test="not(child::*[1][self::para])"><LineBreak/></xsl:if> test.  How do I
modify this expression to evaluate false if text preceeds a <para> child?
Thanks!

Ken Barnett
Medifor Inc., a division of Allscripts Healthcare Solutions
647 Washington Street, Port Townsend, WA 98368
kenb@xxxxxxxxxxx   Voice: 360-385-0722  Fax: 360-385-4402


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


Current Thread