Re: [xsl] how to insert the *complete* content of a node

Subject: Re: [xsl] how to insert the *complete* content of a node
From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx>
Date: Fri, 21 Mar 2003 14:27:23 +0000
Hi Robert,

>> Use <xsl:copy-of> and select all the children of the <mytag>
>> element using the node() node test (which matches any node,
>> including elements and attributes):
>> 
>>   <xsl:copy-of select="mytag/node()" />
>> 
>> <xsl:copy-of> gives you an exact copy of the nodes.
>
> uh oh ... i'm confused again.  i thought "node()" explicitly
> did *not* match attribute nodes, but only

The node test "node()" matches attribute nodes, but the child axis
can only select the node types that you mention:

> 1) elements
> 2) text
> 3) comments
> 4) processing instructions

When you do:

  <xsl:copy-of select="mytag/node()" />

this is expanded to:

  <xsl:copy-of select="child::mytag/child::node()" />

and you get the child nodes (which cannot include attributes since
attributes aren't children) of the child <mytag> element of the
context node.

You can tell that the node() node test matches attributes because the
expression ".", which expands to the expression "self::node()", can be
used to select attributes. Unlike the child axis, the self axis
selects the context node no matter what its type.

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread