Re: [xsl] "*|@*|text()" vs. "node()"

Subject: Re: [xsl] "*|@*|text()" vs. "node()"
From: Jörg Heinicke <joerg.heinicke@xxxxxx>
Date: Fri, 05 Oct 2001 14:45:31 +0200
In Xalan there will be generated only a warning, no runtime error. The rest of the transformation will work. It was only an example for the error message I sent in my first email in this thread.

And the error with the template matching @href I found out. Setting the first template from match="*|@*|text()" to match="node()" causes the problem that there is no more template for attributes, only the built-in one, creating text-nodes. In other templates I have <xsl:apply-templates select="@*"/>. If another attribute than @href will be processed before @href, there will be already a text-node at the "new" element. And something like this causes of course problems:

<element>standard-template for matching attributes creates a text-node
  <!-- here shall be added @href -->

But now I know that "node()" is not equal to "*|@*|text()" and I can change it.

Thanks for your help,


the code below should generate a runtime error as it tries to add an
attribute to the root node of the result tree, but this doesn't seem
that close to your original example. there you said that taking @*
out of an apply templates select attribute caused the error to occur.
I can't see how that could happen.


> This will work with every xml and xsl. You only need an
<xsl:attribute> without a new element.
> <?xml version="1.0"?>
> <root/>
> >
> <?xml version="1.0"?>
> <xsl:stylesheet version="1.0"
> <xsl:template match="root">
> <xsl:attribute name="test">test</xsl:attribute>
> </xsl:template>
> </xsl:stylesheet>


System Development
Fon +49(0)341-979-7435
Fax +49(0)341-979-7409

XSL-List info and archive:

Current Thread