将 XSLT 中的新类添加到现有的 div 标签类?

Posted

技术标签:

【中文标题】将 XSLT 中的新类添加到现有的 div 标签类?【英文标题】:Adding a new class from XSLT to an existing class of div tag? 【发布时间】:2018-11-10 05:22:31 【问题描述】:
<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 class 的上部 div。但是我这样做的方式只是删除了我的 上一课和添加新课。但我想同时添加这两个课。

【问题讨论】:

你输入的 xml 是什么? 你能显示你期望的输出吗?您期待&lt;div class="filter anotherclass"&gt; 还是&lt;div class="filter" class="anotherclass"&gt;。在第二种情况下,这是不允许的,因为您不能有重复的属性名称。 请告诉我添加两个类的代码....来自 我已经生成了新类 是的,我想要和第一种情况完全一样 【参考方案1】:

声明 &lt;xsl:if test="@class=filter"&gt; 可能没有按照您的预期进行。

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

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

但是,这会导致第二个问题。此测试正在检查您的输入 XML(您未显示)中的类属性,检查您当前匹配的任何元素。它不会检查您刚刚在输出中的 &lt;div&gt; 上创建的类属性。

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

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

更好的是,使用Attribute Value Templates,这将允许您将class 属性直接添加到&lt;div&gt; 标记

<div class="filter Category" />

所以,“filter”将作为字符串输出,但花括号表示要计算的表达式,所以这里会输出Category元素的值。

【讨论】:

以上是关于将 XSLT 中的新类添加到现有的 div 标签类?的主要内容,如果未能解决你的问题,请参考以下文章

在运行时在 jQuery 中添加类并选择新类

是否可以在 wordpress 中动态地将一个类附加到现有的 div 中?

将文本插入到现有的大文件中

如何将自定义标签/过滤器添加到现有的 Django 应用程序?

如何使用Golang将文件添加到现有的zip文件中

如何将 eclipse 服务器添加到现有的 EC2 实例 [关闭]