xsl:copy-of
执行所选节点的深度复制,但不提供更改它的机会。
你会想用
xsl:copy
然后在内部添加其他节点。
只复制节点和命名空间属性,而不复制常规属性和子节点,因此您需要确保
apply-templates
把其他节点也推过去。
没有一个
@select
,它在当前节点上工作,因此无论您在何处应用
<xsl:copy-of select="/root/Algemeen/foto/node()" />
,您需要更改为
<xsl:apply-templates select="/root/Algemeen/foto/node()" />
然后移动
img
将逻辑转换为模板。
<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>