从源XML向选定节点添加属性

时间:2011-06-24 03:06:30

标签: xslt attributes

我正在尝试将属性添加到从源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" />

1 个答案:

答案 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"/>