RE: Determining if the first child is a para element

Subject: RE: Determining if the first child is a para element
From: kenb@xxxxxxxxxxx
Date: Thu, 9 Nov 2000 14:11:26 -0800
	The whitespace only issue hadn't occurred to me.  Since the
XML input comes from a third party, I think I'll have to use your
more complex test.  Thanks.


-----Original Message-----
From: Wendell Piez [mailto:wapiez@xxxxxxxxxxxxxxxx]
Sent: Thursday, November 09, 2000 6:42 AM
To: xsl-list@xxxxxxxxxxxxxxxx
Subject: Re: Determining if the first child is a para element


At 10:15 AM 11/9/00 +0000, Jeni wrote:
>So, to test whether the first child node of
>the current node is an element, use:
>   <xsl:if test="child::node()[1][self::*]">
>      ...
>   </xsl:if>

Also be careful in this case that you have accounted for the possibility of 
any whitespace-only text nodes. So, for example, if your document read:

   <para>Here's my first child element, a para.</para>

Jeni's test above will fail on account of the whitespace-only text node 
preceding the para element (it contains a carriage return and two space 

Adjust for this by saying

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

at the top level, or altering your test (somewhat horribly) to:

<xsl:if test="child::node()[not(.=normalize-space(.))][1][self::para]">

Jeni's test for whether the first element child is a para is still good, of 
course, since the whitespace-only nodes won't come into play then.


Wendell Piez                            mailto:wapiez@xxxxxxxxxxxxxxxx
Mulberry Technologies, Inc.      
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:

 XSL-List info and archive:

Current Thread