0

我希望我的 xslt 显示一些 html,具体取决于“视频”类是否显示在 body 标签上。这可能吗?由于许多原因,我不能使用 Javascript。

4

2 回答 2

4

在 XSLT 中,几乎可以完全避免显式条件指令:

<xsl:template match=
  "/html/body[contains(concat(' ', @class, ' '),' video ')]">
 <!-- Wanted processing here -->
</xsl:template>

当然,为了被选中执行,这个模板需要匹配一个节点集中的节点,该节点在相应的 select 属性中指定<xsl:apply-templates>——显式地或作为 XSLT 默认处理的一部分(作为内置的一部分)在 XSLT 模板中)。

于 2012-10-10T12:10:52.657 回答
2
<xsl:if test="contains(/html/body/@class, 'video')">
</xsl:if>

当然,这也将评估为 true formy-video和其他类。如果可能发生此类冲突,请考虑使用

<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()函数

于 2012-10-09T20:00:35.343 回答