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