<div class="filter">
<xsl:attribute name="class">
<xsl:if test="@class=filter">
filter
</xsl:if>
<xsl:value-of select="Category"/>
</xsl:attribute>
</div>
我想要添加一个新类,它是我从xsl值中获得的,包含filter 类.but,就像我做的那样,只需删除我的以前的类和添加新类.But我想同时添加两个类。
发布于 2018-05-31 17:04:45
语句<xsl:if test="@class=filter">
可能没有做您期望它做的事情。
首先,它将属性class
与XML中一个名为filter
的元素(可能不存在)进行比较。您可能想要将类与字符串值进行比较,您可以这样做:
<xsl:if test="@class='filter'">
然而,这导致了第二个问题。这个测试是在您当前匹配的任何元素上检查输入XML (您还没有显示)中的class属性。它不会在输出中检查您刚刚在<div>
上创建的类属性。
使用xsl:attribute
将替换正在处理的元素上的任何现有属性,因此不需要将class="filter"
放在<div>
上。你可以这样做...
<div>
<xsl:attribute name="class">
<xsl:text>filter </xsl:text>
<xsl:value-of select="Category"/>
</xsl:attribute>
</div>
更好的方法是使用Attribute Value Templates,它允许您直接将class
属性添加到<div>
标记
<div class="filter {Category}" />
因此,"filter“将作为字符串输出,但大括号表示要计算的表达式,因此Category
元素的值将在此处输出。
https://stackoverflow.com/questions/50620185
复制相似问题