Announcement

Collapse
No announcement yet.

Prüfen ob Variable leer

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Prüfen ob Variable leer

    Hallo,

    ich suche im Grunde etwas ganz simples

    In einer for-each-Schleife weise ich einer Variablen einen Wert zu. Nun möchte ich prüfen, ob die Variable leer ist und darauf reagieren.

    Ich habe schon alles (was mir einfällt probiert), nichts führt zum Erfolg. Vielleicht habe ich ja auch einen Denkfehler.

    Code:
    <xsl:for-each select="stg_1">
    	<xsl:variable name="ende">
    		<xsl:value-of select="enddat" />
    	</xsl:variable>
    			
    	<xsl:if test="!$ende">
    		<xsl:value-of select="$ende" />
    	</xsl:if>
    </xsl:for-each>
    Wie prüfen ich, ob $ende leer ist?
    Btw: In der Variablen werden sonst Datumswerte abgelegt

  • #2
    Wenn es interessiert, ob die Variable leer ist, dann frage so ab:
    Code:
    <xsl:if test="not($ende)">
      ...
    </xsl:if>
    oder so:

    Code:
    <xsl:if test="string-length($ende) = 0">
      ...
    </xsl:if>
    BTW 1:
    Zur Vereinfachung würde ich das select-Attribut von xsl:variable bevorzugen:

    Code:
    <xsl:variable name="ende" select="enddat"/>
    BTW 2:
    XSLT-Fragen sind im dafür vorgesehenen Forum besser aufgehoben.

    Comment


    • #3
      Hallo und vielen Dank für deine Hilfe.

      Ich werde in Zukunft in das richtige Forum posten. Wird der Beitrag jetzt verschoben?

      Leider habe ich auch trotz deiner Hilfe nicht das gewünschte Ergebnis

      An sich möchte ich ja nur, wenn das End-Datum leer ist, dass er mir das Wörtchen "seit" hinschreibt

      In der XML-Datei steht:
      Code:
      <stg_1>
            <studieng>Wirtschaftsinformatik</studieng>
            <anfdat>01.09.2000</anfdat>
            <enddat>01.03.2005</enddat>
      </stg_1>
      <stg_1>
            <studieng>Ingenieurwissenschaften</studieng>
            <anfdat>01.09.2006</anfdat>
            <enddat />
      </stg_1>

      Und in der XSL-Datei:
      Code:
      <xsl:for-each select="stg_1">
      	<xsl:variable select="enddat" name="ende" />
      		<xsl:if test="string-length($ende) = 0">
      			<xsl:text>Seit </xsl:text>
      		</xsl:if>
      	<xsl:value-of select="anfdat"/>
      </xsl:for-each>
      Auch die Variante mit not() klappt nicht:

      Code:
      <xsl:for-each select="stg_1">
      	<xsl:variable select="enddat" name="ende" />
      		<xsl:if test="not($ende) ">
      			<xsl:text>Seit </xsl:text>
      		</xsl:if>
      	<xsl:value-of select="anfdat"/>
      </xsl:for-each>
      Zuletzt editiert von coffeemug; 24.06.2008, 17:32. Reason: Hinzufügen

      Comment


      • #4
        Die Variante mit string-length() funktioniert doch. Mit der not()-Abfrage würde es funktionieren, wenn das enddat-Element fehlt. Alternativ klappt es so ganz ohne Variable:
        Code:
        <xsl:if test="not(enddat/text())">
          <xsl:text>Seit </xsl:text>
        </xsl:if>

        Comment

        Working...
        X