xsl:copy-of
effectue une copie en profondeur du nœud sélectionné, mais ne fournit pas l'occasion de le modifier.
Vous devez utiliser xsl:copy
, puis ajouter des nœuds supplémentaires à l'intérieur. xsl:copy
copie juste les attributs de noeud et d'espace de noms, mais pas les attributs réguliers et les noeuds enfant, donc vous voudrez vous assurer que vous pour pousser également les autres noeuds. xsl:copy
n'a pas de @select
, cela fonctionne sur le nœud actuel, donc partout où vous appliquiez le <xsl:copy-of select="/root/Algemeen/foto/node()" />
, vous devrez changer à <xsl:apply-templates select="/root/Algemeen/foto/node()" />
et déplacer la logique img
dans un modèle.
Quelque chose comme ceci:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<result>
<xsl:apply-templates select="/root/Algemeen/foto/img"/>
</result>
</xsl:template>
<!--specific template match for this img -->
<xsl:template match="/root/Algemeen/foto/img">
<xsl:copy>
<xsl:attribute name="width">100</xsl:attribute>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<!--Identity template copies content forward -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
a fonctionné comme un charme. Merci beaucoup –