Subject: RE: selecting not(node()) not working as I expect it to
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 27 Feb 2006 18:45:33 -0000
|
select="*" selects the element children only, you want select="node()" which
also selects the text nodes.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Spencer Tickner [mailto:spencertickner@xxxxxxxxx]
> Sent: 27 February 2006 18:26
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: selecting not(node()) not working as I expect it to
>
> Hello everyone,
>
> For some reason (Monday perhaps) I'm having a very difficult time with
> a very simple concept. I'm simply trying to apply all templates except
> a node and then apply that node and it's children. I've done this
> before with no issue,, now, well I'm having issues.
>
> xml
>
> <?xml version="1.0"?>
> <root>
> <para>This is a paragraph</para>
> <para>This is a paragraph
> <list mark="bull">
> <listitem>This
> is a list</listitem>
> <listitem>This
> is a list</listitem>
> </list></para>
> <para>This is another paragraph</para>
> </root>
>
> xsl
>
> <?xml version='1.0'?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
>
> <xsl:template match="/">
> <xsl:apply-templates/>
> </xsl:template>
>
> <xsl:template match="para">
> <p><xsl:apply-templates select="*[not(self::list)]"/></p>
> <xsl:apply-templates select="list"/>
> </xsl:template>
> <xsl:template match="para/text()">
> <xsl:value-of select="."/>
> </xsl:template>
> <xsl:template match="list">
> <ul>
> <xsl:apply-templates/>
> </ul>
> </xsl:template>
> <xsl:template match="listitem">
> <li><xsl:apply-templates/></li>
> </xsl:template>
>
> expected output
>
> <p>This is a paragraph</p>
> <p>This is a paragraph</p>
> <ul>
> <li>This is a list</li>
> <li>This is a list</li>
> </ul>
> <p>This is another paragraph</p>
>
> what I'm getting
>
> <p/>
> <p/><ul>
> <li>This is a list</li>
> <li>This is a list</li>
> </ul>
> <p/>
>
> any thoughts?
|