从XSLT添加一个新类到现有的div标记类?

时间:2018-05-31 08:45:19

标签: c# asp.net xslt

<div class="filter">
 <xsl:attribute name="class">

                <xsl:if test="@class=filter">
                  filter
                </xsl:if>
                <xsl:value-of select="Category"/>
 </xsl:attribute>
</div>

我想添加一个新类,我从xsl值到上面的div包含过滤器 。但我这样做只是删除我的< strong>上一课和添加新课程。但我想同时添加两个课程。

1 个答案:

答案 0 :(得分:0)

声明<xsl:if test="@class=filter">可能没有按照您的预期行事。

首先,它将属性class与XML中名为filter的元素进行比较(可能不存在)。您可能需要将类与字符串值进行比较,您可以这样做:

<xsl:if test="@class='filter'">

但是,这导致了第二个问题。此测试检查输入XML(您尚未显示)中的类属性,以及当前匹配的元素。它不会检查您刚刚在输出中<div>创建的类属性。

使用xsl:attribute将替换您正在处理的元素上的所有现有属性,因此您无需将class="filter"放在<div>上。你可以这样做....

<div>
  <xsl:attribute name="class">
     <xsl:text>filter </xsl:text>
     <xsl:value-of select="Category"/>
  </xsl:attribute>
</div>

更好的是,使用readonly_fields,这样您就可以直接将class属性添加到<div>标记

<div class="filter {Category}" />

因此,“filter”将作为字符串输出,但花括号表示要计算的表达式,因此{@ 1}}元素的值将在此处输出。