RE: [xsl] self::x:* in XPath 2.0

Subject: RE: [xsl] 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: [xsl] 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

Current Thread