This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: [XPath] Type of the first child
- From: Jörg Heinicke <joerg dot heinicke at gmx dot de>
- To: xsl-list at lists dot mulberrytech dot com
- Date: Tue, 27 Nov 2001 16:44:19 +0100
- Subject: Re: [xsl] [XPath] Type of the first child
- References: <20011127162136.A1806@houdini.imag.fr>
- Reply-to: xsl-list at lists dot mulberrytech dot com
Hi Julien,
I can't imagine, that your not(name(*[1])) should work, because you are
testing whether the first element '*[1]' has a name or not - nothing about
text-nodes. You have to test the first node(), not the first element.
My solution:
<xsl:if test="node()[1][self::text()]">
<xsl:text>It's a text-node.</xsl:text>
</xsl:if>
or the other way around
<xsl:if test="node()[1][self::*]">
<xsl:text>It's an element.</xsl:text>
</xsl:if>
Of course this should work in xsl:choose/xsl:when too.
Regards,
Joerg
Julien Quint wrote:
> Hi all,
>
> I have an XPath question, really. In a pattern, I want to take a different
> action if the first child of my element is a text node or an element. I
> wrote the following predicate, which is to be true if the first child is a
> text node:
>
> not(name(*[1]))
>
> It seems to work, but is this correct? Is there a better way to write this?
> Thanks -- Julien
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
>
>
--
System Development
VIRBUS AG
Fon +49(0)341-979-7411
Fax +49(0)341-979-7409
joerg.heinicke@virbus.de
www.virbus.de
Cocoon-Premiere - Virbus AG setzt bei ShoppingMall-Plattform "Lofex"
auf neueste XML-basierende Technologie
www.lofex.de
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list