我正在尝试将属性添加到从源XML中选择的节点。我最初的尝试是在下面,但我认为我误解了这个概念。我是否需要先将节点加载到变量中,还是有其他方法可以执行此操作?
源XML
<root>
<BigImage>
<img alt="Flower" src="/flower.jpg" />
</BigImage>
</root>
所需的输出
<img alt="Flower" src="/flower.jpg" class="image-left" />
当前(不正确) XSLT
<xsl:template match="root">
<xsl:copy-of select="./BigImage/node()" />
<xsl:attribute name="class">image-left</xsl:attribute>
</xsl:template>
当前(不正确)输出
<img alt="Flower" src="/flower.jpg" />
答案 0 :(得分:2)
此转化:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="img">
<img class="image-left">
<xsl:copy-of select="@*"/>
</img>
</xsl:template>
</xsl:stylesheet>
应用于提供的XML文档时:
<root>
<BigImage>
<img alt="Flower" src="/flower.jpg" />
</BigImage>
</root>
产生完全正确的结果:
<img class="image-left" alt="Flower" src="/flower.jpg"/>