Jan: Stringvergleiche in xsl:if

Beitrag lesen

Hi Thomas,

vielen Dank für deine Antwort. Folgender Code funktioniert leider auch nicht:

<xsl:if test="string(status/text())='bewilligt'">klappt</xsl:if>

Wenn ich direkt nach der if-Abfrage folgende Zeile eintrage
<xsl:value-of select="status" />
dann zeigt der mir richtiger Weise 'bewilligt' an. Und wie gesagt: Wenn ich einen anderen Knoten (nicht status) auswähle und darin eine Zahl gespeichert ist, dann geht der Vergleich. Ich poste mal die ganze Transformation und die XML-Datei. Die Transformation habe ich etwas gekürzt, damit es lesbarer wird, aber auch genau so getestet. Den Status nach der if-Anweisung lasse ich nur zum testen ausgeben. Damit sehe ich ja, dass ich den Knoten an sich richtig adressiere.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">  
  
  <xsl:template match="/">  
    <xsl:for-each select="fullJoin/row">  
    <tr>  
      <td/>  
      <td/>  
      <td>  
        --<xsl:if test="status='bewilligt'">klappt</xsl:if>--  
        <xsl:value-of select="status" />  
      </td>  
      <td><xsl:value-of select="info" /></td>  
    </tr>  
    </xsl:for-each>  
  </xsl:template>  
  
</xsl:stylesheet>

Die XML-Datei:

<fullJoin>  
  <row>  
    <userID>s-123</userID>  
    <lockAuthID>26</lockAuthID>  
    <roomID>3</roomID>  
    <status>bewilligt</status>  
    <info />  
    <roomNumber>C035</roomNumber>  
    <roomName>Büro 1</roomName>  
  </row>  
  <row>  
    <userID>s-456</userID>  
    <lockAuthID>27</lockAuthID>  
    <roomID>10</roomID>  
    <status>auslaufend</status>  
    <roomNumber>X123</roomNumber>  
    <roomName>Testraum</roomName>  
  </row>  
</fullJoin>

Ich bin echt total ratlos.

Grüße
Jan