Есть ли директива 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 не работает, потому что я не смог обработать синтаксис для contains. Как правильно выразить, что xsl: if?
Ответы
Ответ 1
Конечно, есть! Например:
<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)
Ответ 2
действительно существует функция 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>
Ответ 3
Использовать стандартную XPath функция содержит().
Функция: boolean содержит (строка, строка)
Функция contains возвращает true, если первая строка аргумента содержит вторую строку аргумента и в противном случае возвращает false
Ответ 4
От Ссылка на Zvon.org XSLT:
XPath function: boolean contains (string, string)
Надеюсь, что это поможет.
Ответ 5
Это должно быть что-то вроде...
<xsl:if test="contains($hhref, '1234')">
(не проверено)
См. w3schools (всегда хорошая ссылка)
Ответ 6
<xsl:if test="not contains(hhref,'1234')">