web-dev-qa-db-ja.com

XSL「を含む」ディレクティブはありますか?

次の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ステートメントは機能しません。 xsl:ifを正しく表現するにはどうすればよいですか?

54
Guy

確かにあります!例えば:

_<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)

105
Cerebrus

実際、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>
6
John Hunter

標準を使用 XPath 関数 contains()

関数booleancontains(文字列、文字列)

contains 関数は、最初の引数文字列に2番目の引数文字列が含まれる場合はtrueを返し、それ以外の場合はfalseを返します

6

Zvon.org XSLTリファレンス から:

XPath function: boolean contains (string, string) 

お役に立てれば。

2
Leandro López

次のようになります...

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

(未検証)

w3schools (常に適切なリファレンスBTW)を参照してください

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