Elemento <xsl:copy-of>
Inserta subárboles y fragmentos del árbol de resultados en el árbol de resultados.
<xsl:copy-of
select = Expression />
Atributos
- select
Necesario.La Expresiones (XML) de XPath que identifica los nodos que se deben copiar.En el árbol de resultados se copia íntegramente el subárbol que se encuentra debajo de cada uno de estos nodos.
Información del elemento
Número de apariciones |
Ilimitado |
Elementos primarios |
xsl:attribute, xsl:comment, xsl:copy, xsl:element, xsl:fallback, xsl:for-each, xsl:if, xsl:message, xsl:otherwise, xsl:param, xsl:processing-instruction, xsl:template, xsl:variable, xsl:when, xsl:with-param, elementos resultantes |
Elementos secundarios |
(No hay elementos secundarios) |
Comentarios
Cuando el resultado de la evaluación de la expresión es un fragmento del árbol de resultados, se copia el fragmento completo en el árbol de resultados.Cuando el resultado es un conjunto de nodos, se copian todos los nodos del conjunto en orden de documento en el árbol de resultados.Al copiar un nodo del elemento se copian los nodos de atributo, los nodos de espacios de nombres y los elementos secundarios del nodo del elemento, junto con el nodo del elemento en sí.Para copiar un nodo raíz hay que copiar sus elementos secundarios.Cuando el resultado no es un conjunto de nodos ni un fragmento del árbol de resultados, el resultado se convierte en una cadena y después se introduce en el árbol de resultados, como con <xsl:value-of>.
Ejemplo
Este archivo XSLT de ejemplo funciona con respecto al archivo XML de ejemplo para encontrar un elemento <person> con los elementos secundarios <given-name> y <family-name>.El párrafo contendrá el primer elemento secundario <given-name> del nodo, incluidos los atributos y elementos secundarios, seguido de un espacio y el primer elemento secundario <family-name>, incluidos los atributos y elementos secundarios, del nodo actual.
Archivo XML (family.xml)
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="family.xsl"?>
<family>
<person>
<given-name age="10">
<name>Fred</name>
<nick-name>Freddy</nick-name>
</given-name>
<family-name>Smith</family-name>
</person>
<person>
<given-name age="10">
<name>Robert</name>
<nick-name>Bob</nick-name>
</given-name>
<family-name>Smith</family-name>
</person>
</family>
Archivo XSLT (family.xsl)
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:template match="person">
<p>
<xsl:copy-of select="given-name"/>
<xsl:text> </xsl:text>
<xsl:copy-of select="family-name"/>
</p>
</xsl:template>
</xsl:stylesheet>
Resultados
Este es el resultado con formato:
Fred Freddy Smith
Robert Bob Smith
A continuación se muestra el resultado del procesador, al que se han añadido saltos de línea por razones de claridad.
<?xml version="1.0"?>
<p><given-name age="10">
<name>Fred</name>
<nick-name>Freddy</nick-name>
</given-name>
<family-name>Smith</family-name></p>
<p><given-name age="10">
<name>Robert</name>
<nick-name>Bob</nick-name>
</given-name>
<family-name>Smith</family-name></p>