Share via


xsl:copy-of Element (Compact 2013)

3/26/2014

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,

<?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.

<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:

<?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

Reference

XSLT Elements
xsl:value-of Element