是否有XSL“包含”指令?

时间:2009-02-20 15:15:29

标签: xslt

我有以下XSL片段:

  <xsl:for-each select="item">
    <xsl:variable name="hhref" select="link" />
    <xsl:variable name="pdate" select="pubDate" />
    <xsl:if test="hhref not contains '1234'">
      <li>
        <a href="{$hhref}" title="{$pdate}">
          <xsl:value-of select="title"/>
        </a>
      </li>
    </xsl:if>
  </xsl:for-each>

if语句不起作用,因为我无法计算contains的语法。我怎样才能正确表达xsl:if?

6 个答案:

答案 0 :(得分:104)

当然有!例如:

<xsl:if test="not(contains($hhref, '1234'))">
  <li>
    <a href="{$hhref}" title="{$pdate}">
      <xsl:value-of select="title"/>
    </a>
  </li>
</xsl:if>

语法为:contains(stringToSearchWithin, stringToSearchFor)

答案 1 :(得分:6)

确实有一个xpath包含的函数应该类似于:

<xsl:for-each select="item">
<xsl:variable name="hhref" select="link" />
<xsl:variable name="pdate" select="pubDate" />
<xsl:if test="not(contains(hhref,'1234'))">
  <li>
    <a href="{$hhref}" title="{$pdate}">
      <xsl:value-of select="title"/>
    </a>
  </li>
</xsl:if>

答案 2 :(得分:6)

使用标准XPath函数contains()

功能布尔 包含(字符串,字符串)

如果第一个参数字符串包含第二个参数字符串,则contains函数返回true,否则返回false

答案 3 :(得分:2)

来自Zvon.org XSLT Reference

XPath function: boolean contains (string, string) 

希望这有帮助。

答案 4 :(得分:1)

它应该像......

<xsl:if test="contains($hhref, '1234')">

(未经测试)

参见w3schools(总是一个很好的参考BTW)

答案 5 :(得分:1)

<xsl:if test="not contains(hhref,'1234')">