Important:
This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.
A version of this page is also available for
4/8/2010

Inserts subtrees and result-tree fragments into the result tree.

Syntax

<xsl:copy-of
  select = 
expression />

Attributes

select

[required] XPath expression identifying nodes to be copied. The subtree below each of these nodes is copied to the result tree in its entirety.

Element Information

Number of occurrences

Unlimited

Parent elements

xsl:attribute, xsl:comment, xsl:copy, xsl:element, xsl:for-each, xsl:if, xsl:otherwise, xsl:param, xsl:processing-instruction, xsl:template, xsl:variable, xsl:when, xsl:with-param, output elements

Child elements

(No child elements)

Remarks

When the result of evaluating the expression is a result-tree fragment, the complete fragment is copied into the result tree. When the result is a node-set, all the nodes in the set are copied in document order into the result tree; copying an element node copies the attribute nodes, name space nodes, and children of the element node as well as the element node itself. A root node is copied by copying its children. When the result is neither a node-set nor a result-tree fragment, the result is converted to a string and then inserted into the result tree, as with <xsl:value-of>.

Example

Given this XML,

Copy Code
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="family.xsl"?>
<family>
  <person>
	<given-name age="10">
	<name>James</name>
	<nick-name>Jim</nick-name>
	</given-name>
	<family-name>Fine</family-name>
  </person>
  ...
</family>

the following transform finds a person element with "given-name" and "family-name" children elements. The paragraph will contain the first "given-name" child element of the current node, including any attributes and child elements, followed by a space and the first "family-name" child element, including any attributes and child elements, of the current node.

Copy Code
<xsl:template match="person">
  <p>
	<xsl:copy-of select="given-name"/>
	<xsl:text> </xsl:text>
	<xsl:copy-of select="family-name"/>
  </p>
</xsl:template>

The generated HTML is as follows:

Copy Code
<?xml version="1.0" encoding="UTF-16"?>
<p>
  <given-name age="10">
	<name>James</name>
	<nick-name>Jim</nick-name>
  </given-name>
  <family-name>Fine</family-name>
</p>

See Also