xsl:copy-of
è una copia esatta dell'elemento di input XML corrispondente. Non viene eseguita l'elaborazione xslt e l'output di quell'elemento sarà esattamente lo stesso dell'input.
xsl:apply-templates
indica al motore xslt di elaborare i modelli che corrispondono agli elementi selezionati. xsl:apply-templates
è ciò che conferisce a xslt la sua capacità di sovrascrivere, poiché i modelli creati con la corrispondenza sugli elementi possono avere priorità diverse e il modello con la priorità più alta verrà eseguito.
ingresso:
<a>
<b>asdf</b>
<b title="asdf">asdf</b>
</a>
Xslt 1:
<xsl:stylesheet ... >
<xsl:template match="a">
<xsl:copy-of select="b" />
</xsl:template>
</xsl:stylesheet>
output XML 1:
<b>asdf</b>
<b title="asdf">asdf</b>
Xslt 2:
<xsl:stylesheet ... >
<xsl:template match="a">
<xsl:apply-templates select="b" />
</xsl:template>
<xsl:template match="b" priority="0">
<b><xsl:value-of select="." /></b>
<c><xsl:value-of select="." /></c>
</xsl:template>
<xsl:template match="b[@title='asdf']" priority="1">
<b title="{@title}"><xsl:value-of select="@title" /></b>
</xsl:template>
</xsl:stylesheet>
output XML 2:
<b>asdf</b>
<c>asdf</c>
<b title="asdf">asdf</b>