xsl:copy-of
The xsl:copy-of
element copies the value obtained by evaluating
the mandatory select
attribute. It makes an exact copy.
If this expression is a string, a number, or a boolean, the effect is the same as using
xsl:sequence
.
There is an optional attribute copy-namespaces
whose value is "yes" or "no". The default
is "yes". This controls whether the in-scope namespaces of any element nodes copied by this instruction
are automatically copied to the result. If the value is "no", then namespaces will only be copied
if they are actually used in the names of elements or attributes. This allows you, for example, to
copy the contents of a SOAP message without copying the namespaces declared in its envelope.
Making a deep copy of an element is particularly useful during streaming. For this reason
XSLT 3.0 introduces an equivalent function, copy-of
. For example one can write
<xsl:for-each select="employee/copy-of()">
which processes a sequence of copies
of the selected employee
elements; the significance of using copies is that streaming
constraints do not apply, since each employee
element will be represented as a tree
in memory, discarded as soon as that element has been processed.