Subject: RE: self::x:* in XPath 2.0
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Tue, 13 Jul 2004 14:33:13 +0100
|
Just write
if ($e/self::x:*)
or if you prefer
if ($e[self::x:*])
Michael Kay
> -----Original Message-----
> From: ben.pickering@xxxxxxxxxxxxxxxx
> [mailto:ben.pickering@xxxxxxxxxxxxxxxx]
> Sent: 13 July 2004 13:55
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: self::x:* in XPath 2.0
>
> Hi
>
> If I had a sequence of nodes, some in the default namespace,
> and some in
> an 'x' namespace, say:
>
> <x:a/><b/><x:c/><d/>
>
> In XSLT 1.x, I was doing something like:
>
> <xsl:for-each select="*">
> <xsl:choose>
> <xsl:when test="self::x:*">in<xsl:when/>
> <xsl:otherwise>out</xsl:otherwise>
> </xsl:choose>
> </xsl:for-each>
> <xsl:text> shake it all about</xsl:text>
>
> To get results looking like:
>
> in out in out shake it all about
>
> I'd like to be able to do the same test for an element being
> in 'x' using
> the XPath 2.0 syntax in SAXON 8, something like:
>
> for $e in * return
> if ($e is-in-namespace('x')) then
> 'in'
> else
> 'out'
>
> How do I do this? I can't see any way of using the self::x
> syntax with $e
> as I did before...
>
> Cheers,
> Ben
|