我希望我的xslt显示一些html,具体取决于body标签上是否显示“video”类。这可能吗?由于很多原因,我无法使用Javascript。
答案 0 :(得分:4)
在XSLT中,可以避免几乎完全显式的条件指令:
<xsl:template match=
"/html/body[contains(concat(' ', @class, ' '),' video ')]">
<!-- Wanted processing here -->
</xsl:template>
当然,为了被选择执行,该模板需要匹配来自相应<xsl:apply-templates>
的select属性中指定的节点集的节点 - 显式或作为XSLT默认值的一部分处理(作为内置XSLT模板的一部分)。
答案 1 :(得分:2)
<xsl:if test="contains(/html/body/@class, 'video')">
</xsl:if>
当然,对于my-video
和其他类,这也将评估为true。如果可能发生此类冲突,请考虑使用
<xsl:if test="/html/body/@class = 'video' or
contains(/html/body/@class, ' video ' or
starts-with(/html/body/@class, 'video ' or
ends-with(/html/body/@class, ' video')">
</xsl:if>
如果使用XSLT 2.0,您还可以使用matches()
功能