XSLT如果id有类

时间:2013-08-15 15:54:42

标签: xslt

我根本找不到这个。如果id为'cat'的div也有一个分配给它的类叫做'true',我如何在xslt中写一个if语句来显示'YES'这几个字?

1 个答案:

答案 0 :(得分:1)

如果有问题的div是当前节点,并且您当前不知道它是否具有“cat”ID或类属性,那么您可以编写

<xsl:if test=".[@id='cat' and contains(@class,'true')]">
  YES
</xsl:if>

如果您在div[@id='cat']匹配的模板中,则可以使用更简单的测试test="contains(@class,'true')"。 (反过来说。)

请注意,对于class="untrue"的div来说,刚刚制定的测试会成功 - 如果这对您的情况来说是个问题,那么解决方案会变得有点麻烦。

在XSLT 1.0中,最简单的方法是编写如下内容:

<xsl:if test=".[@id='cat' 
              and 
              contains(concat(' ', @class, ' '),' true ')]">
  YES
</xsl:if>

在XSLT 2.0中,我写了类似的东西:

<xsl:if test=".[@id='cat' 
              and 
              tokenize(@class, '\s') = 'true')]">
  YES
</xsl:if>