2009-02-20 12 views
49

Mam następujący fragment xsl:Czy istnieje dyrektywa XSL "zawiera"?

<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 nie działa, bo nie udało się wypracować składnię zawiera. Jak poprawnie wyrazić xsl: if?

Odpowiedz

98

Jasne jest! Na przykład:

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

Składnia jest następująca: contains(stringToSearchWithin, stringToSearchFor)

1

Powinno być coś takiego ...

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

(nie badane)

Zobacz w3schools (zawsze dobre referencje BTW)

+0

w liniach z ...? –

+0

Poprawione formatowanie kodu. – Tomalak

+0

@cadrian: nawiasy klamrowe są nieprawidłowe. – Tomalak

6

tam jest rzeczywiście XPath zawiera funkcja powinna wyglądać mniej więcej tak:

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

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

Czy operator nie działa bez nawiasów? Jeśli tak, nie wiedziałem o tym. – Cerebrus

+1

@Cerebrus Działa w XSLT 2.0, ale nie w wersji 1.0 – Stijn

6

Użyj standardowej funkcji XPathcontains().

Funkcja: logicznazawiera (string, string)

Funkcja contains zwraca prawdę, jeśli pierwszy ciąg argument zawiera drugi ciąg argumentów, a w przeciwnym razie zwraca false

Powiązane problemy