Есть ли XSL-директива «содержит»? - PullRequest
54 голосов
/ 20 февраля 2009

У меня есть следующий фрагмент 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?

Ответы [ 6 ]

104 голосов
/ 20 февраля 2009

Конечно, есть! Например:

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

6 голосов
/ 20 февраля 2009

Используйте стандартную XPath функцию содержит () .

Функция : логическое значение содержит (строка, строка)

Функция содержит , возвращает true, если первая строка аргумента содержит вторую строку аргумента, а в противном случае возвращает false

6 голосов
/ 20 февраля 2009

действительно есть функция, содержащая 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 голосов
/ 20 февраля 2009

С Zvon.org XSLT Reference :

XPath function: boolean contains (string, string) 

Надеюсь, это поможет.

1 голос
/ 20 февраля 2009
<xsl:if test="not contains(hhref,'1234')">
1 голос
/ 20 февраля 2009

Это должно быть что-то вроде ...

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

(не тестировалось)

См. w3schools (всегда хорошая справка Кстати)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...