gpt4 book ai didi

xslt - xslt如何将属性添加到副本

转载 作者:行者123 更新时间:2023-12-03 09:53:17 25 4
gpt4 key购买 nike

我的XSLT文件中包含以下代码:

<xsl:copy-of select="/root/Algemeen/foto/node()" />

在XML文件中,节点 /root/Algemeen/foto/保存一个HTML图像,例如:

我想做的是为图像添加固定宽度。但是以下操作无效:
<xsl:copy-of select="/root/Algemeen/foto/node()">
<xsl:attribute name="width">100</xsl:attribute>
</xsl:copy-of>

最佳答案

xsl:copy-of执行所选节点的深拷贝,但没有提供更改它的机会。

您将要使用xsl:copy,然后在其中添加其他节点。 xsl:copy仅复制节点和 namespace 属性,而不复制常规属性和子节点,因此您将需要确保apply-templates也将其他节点推送通过。 xsl:copy没有@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>

关于xslt - xslt如何将属性添加到副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2972992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com