Probleme mit xsl:if

pattexx

Grünschnabel
Hallo tutorials.de User!

Ich habe ein Problem mit einer xsl:if Bedingung. Es handelt sich dabei um die Gebote bei einer Auktion (ist nur ein Beispiel also nicht wundern ;) )
Diese xml Datei liegt mir vor:
Code:
<?xml version="1.0"?>
<AUCTIONBLOCK>

  <ITEM>
    <TITLE>Sandstone</TITLE>
    <ARTIST>Linda Mann</ARTIST>
    <DIMENSIONS>20x30 inches</DIMENSIONS>
    <MATERIALS>Oil</MATERIALS>
    <YEAR>1995</YEAR>
    <DESCRIPTION>Still Life</DESCRIPTION>
    <PREVIEW-SMALL src="sand-s.jpg" width="300" height="202" alt="Sandstone"/>
    <BIDS>
      <BID>
        <PRICE>11200</PRICE>
        <TIME>12:33:19 PM</TIME>
        <BIDDER>Andrew</BIDDER>
        <TIMESTAMP>2673</TIMESTAMP>
      </BID>
      <BID>
        <PRICE>11000</PRICE>
        <TIME>12:21:03 PM</TIME>
        <BIDDER>Chris</BIDDER>
        <TIMESTAMP>2665</TIMESTAMP>
      </BID>
      <BID>
        <PRICE>10500</PRICE>
        <TIME>12:18:00 PM</TIME>
        <BIDDER>Andrew</BIDDER>
        <TIMESTAMP>2662</TIMESTAMP>
      </BID>
      <BID>
        <PRICE>10400</PRICE>
        <TIME>12:16:42 PM</TIME>
        <BIDDER>Chris</BIDDER>
        <TIMESTAMP>2649</TIMESTAMP>
      </BID>
      <BID>
        <PRICE>6200</PRICE>
        <TIME>11:07:47 AM</TIME>
        <BIDDER>opening price</BIDDER>
        <TIMESTAMP>15</TIMESTAMP>
      </BID>
  
    </BIDS>
    <TIMESTAMP>2673</TIMESTAMP>
  </ITEM>

</AUCTIONBLOCK>

In der xsl Datei möchte ich nun alle Gebote in einer Tabelle anzeigen. Aber nicht die Gebote von "Chris". Sprich, er würde nur das Gebot von "Andrew" anzeigen und das opening Gebot.

So sieht meine xsl Datei aus:
Code:
<?xml version="1.0"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
  <xsl:template match="/">
    <TABLE STYLE="border:1px solid black">
      <TR  STYLE="font-size:12pt; font-family:Verdana; font-weight:bold; text-decoration:underline">
        <TD>Price</TD>
        <TD STYLE="background-color:lightgrey">Time</TD>
        <TD>Bidder</TD>
      </TR>
      <xsl:for-each select="AUCTIONBLOCK/ITEM/BIDS/BID" order-by="BIDDER">
       <xsl:if test="BIDDER!='Chris'">
        <TR STYLE="font-family:Verdana; font-size:12pt; padding:0px 6px">
          <TD>$<xsl:value-of select="PRICE"/></TD>
          <TD STYLE="background-color:lightgrey"><xsl:value-of select="TIME"/></TD>
          <TD><xsl:value-of select="BIDDER"/></TD>
        </TR>
       </xsl:if>
      </xsl:for-each>
    </TABLE>
  </xsl:template>
</xsl:stylesheet>

Als Fehler erscheint dann im IE:
"Erwartetes Toke 'eof' fand '!='".

Was ist denn an der xsl:if Bedingung falsch?
Gruß und vielen Dank für eure Hilfe
pattexx
 
Hallo,

wenn du in dem FOR-EACH-Element das order-by="BIDDER" weglässt (wahrscheinlich an SQL gedacht), dann müsstest du die Tabelle erhalten, die du erwartest.
 
Danke für die Antwort! Leider bleibt die Fehlermeldung. Das "sort" müsste schon richtig sein (zumindest tritt dabei kein Fehler auf und sortiert die Ergebnisse nach dem Bieter)


edit: Ich habe es gerade mit Safari probiert und dort funktioniert es :confused:
 
Zuletzt bearbeitet:
Bei mir funktioniert das auch im IE.
Die IF-Bedingung kannst dir übrigens sparen, wenn du im FOR-EACH-Element mit einem Prädikat selektierst:
Code:
<xsl:for-each select="//BIDS/BID[BIDDER != 'Chris']">
  <xsl:sort select="BIDDER"/>
  <TR STYLE="font-family:Verdana; font-size:12pt; padding:0px 6px">
    <TD>$<xsl:value-of select="PRICE"/>
    </TD>
    <TD STYLE="background-color:lightgrey">
      <xsl:value-of select="TIME"/>
    </TD>
    <TD>
      <xsl:value-of select="BIDDER"/>
    </TD>
  </TR>
</xsl:for-each>
 

Neue Beiträge

Zurück