我需要“动态”修改portal-column-content标记中的类名,这是呈现的html代码:
<div id="portal-column-content" class="cell width-9 position-1:4">我只想将"width-9“替换为"width-12”。
有什么建议吗?
感谢‘s
维托
发布于 2012-06-04 19:20:25
既然你征求了意见,下面是一些建议:
width-9的类,而要创建一个名为portal-column-content的类。然后,您可以将portal-column-content设置为width:9px、width:12em或其他任何类型。使用xslt.替换字符串并不是一件真正的事情,尽管您可以这样做。根据你的设置,有其他更好的ways.发布于 2012-06-04 20:22:23
此XSLT1.0转换
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="div[@id='portal-column-content']/@class">
<xsl:attribute name="class">
<xsl:value-of select=
"substring-before(concat(.,'width-9'), 'width-9')"/>
<xsl:value-of select="'width-12'"/>
<xsl:value-of select="substring-after(., 'width-9')"/>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>在以下示例XML文档上应用时为:
<html>
<div id="a" class="a"/>
<div id="b" class="b"/>
<div id="c" class="cell width-9 position-1:4"/>
<div id="portal-column-content" class="cell width-9 position-1:4"/>
<div id="d" class="d"/>
<div id="e" class="cell width-9 position-1:4"/>
</html>生成所需的正确结果(仅替换为任何'width-9'属性的class属性的div子字符串,该div属性具有字符串值为'portal-column-content'的id属性
<html>
<div id="a" class="a"></div>
<div id="b" class="b"></div>
<div id="c" class="cell width-9 position-1:4"></div>
<div id="portal-column-content" class="cell width-12 position-1:4"></div>
<div id="d" class="d"></div>
<div id="e" class="cell width-9 position-1:4"></div>
</html>注意到
'portal-column-content'的'width-9'属性的class属性的div子字符串。其他具有不同XSLT属性的div元素不是affected.class属性,其字符串值不包含'width-9' --与另一个答案相比,后者的id解决方案在这种情况下用'width-12'.完全替换了class属性的字符串值
发布于 2012-06-04 23:14:48
由于您已经用" diazo“标记了它,所以最简单的解决方案可能是使用重氮规则。只需使用替换、之前或之后规则将#portal-column-content的内容子项复制到正确分类的#portal-column-content的主题子项中。
如果要有选择地完成,请使用" if“表达式。
https://stackoverflow.com/questions/10880241
复制相似问题