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

Fernando Fernan Martínez

Cristian Cris Martínez

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>

Consulte también

Referencia

Elemento <xsl:value-of>