将 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 是什么? 你能显示你期望的输出吗?您期待<div class="filter anotherclass">
还是<div class="filter" class="anotherclass">
。在第二种情况下,这是不允许的,因为您不能有重复的属性名称。
请告诉我添加两个类的代码....来自 声明 <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>
更好的是,使用Attribute Value Templates,这将允许您将class
属性直接添加到<div>
标记
<div class="filter Category" />
所以,“filter”将作为字符串输出,但花括号表示要计算的表达式,所以这里会输出Category
元素的值。
【讨论】:
以上是关于将 XSLT 中的新类添加到现有的 div 标签类?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 wordpress 中动态地将一个类附加到现有的 div 中?