Qual é a diferença entre xsl:copy e xsl:copy-of?

não vejo a diferença entre xsl:copy e xsl:copy-of.

qual deles devo usar em que situação?

 4
Author: kjhughes, 0000-00-00

1 answers

Em breve, xsl:copy é uma cópia superficial; xsl:copy-of é uma cópia de profundidade.

Quando utilizar xsl:copy vs xsl:copy-of

  • Usar xsl:copy quando você deseja copiar apenas o item de contexto e ter outros planos para os filhos do item de contexto.
  • uso xsl:copy-of quando quiser copiar nós seleccionados do XPath e os seus filhos, repetidamente.

Notas para xsl: copy

  • a xsl:copy a instrução copia o item de contexto, mas nenhum de seus nós filhos.
  • Isto é uma cópia rasa.
  • O xsl:copy instrução não tem um @select XPath.

Um uso muito comum de xsl:copy pode ser encontrado na transformação da identidade :

<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>

Repare que aqui o nó em si é copiado via xsl:copy e os nós infantis são então transformados através de xsl:apply-templates, dando a outros modelos uma chance de intervir na transformação.

Notas para xsl: cópia de

  • O xsl:copy-of instrução avalia o XPath na sua necessário @select atributo e copia os nós selecionados e seus filhos, nós, recursivamente.
  • Isto é uma cópia profunda.
  • a xsl:copy-of instrução deve tome um XPath.

Notem que xsl:copy-of poderia ter sido usado na transformação de identidade, no entanto o fle

 10
Author: ,