将XML属性移动到style =""在HTML文件中

时间:2017-01-27 07:29:49

标签: html xml xslt

我需要用width="<>"替换独立属性height="<>"style="width:<>; height:<>;

典型输入如下

<img width="32pt" alt="PIC" class="graphics" height="32pt" src="images/about.png"/>

因此结果应为

<img style="width:32pt; height:32pt;" alt="PIC" class="graphics" src="images/about.png"/>

问题是我之前从未使用过xsl。

到目前为止,我所知道的是

这可以捕获img元素

<xsl:template match="xh:img">

这可以捕获width属性

<xsl:template match="@width"> 

我知道如何添加属性或元素。 但我不知道如何存储widthheight的值,并将它们写在一行中。 任何帮助,将不胜感激。

2 个答案:

答案 0 :(得分:1)

您可以使用:

<xsl:template match="img">
    <img style="width:{@width}; height:{@height};">
        <xsl:copy-of select="@*[not(name()='width' or name()='height')]"/>
    </img>
</xsl:template>

这假设每个img都有widthheight属性,并且没有子节点。如果您的源XML将img元素放在命名空间中(未在您的问题中显示),请将相应的前缀添加到模板的匹配模式中。

供参考,请参阅:https://www.w3.org/TR/xslt/#attribute-value-templates

答案 1 :(得分:0)

您(或其他读者)可能对从生产样式表中获取的这种更通用(XSLT 2.0)解决方案感兴趣:

changeCaption("Beautiful Flowers");