Announcement

Collapse
No announcement yet.

Testen, ob Knoten vorhanden

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

  • Testen, ob Knoten vorhanden

    Hallo,

    habe Probleme mit meiner Verlinkung in XSLT. In der XML-Datei steht z.B. folgendes:

    Code:
    <verlinkung><linktext>Das ist Google</linktext><link>http://www.google.de</link></verlinkung>
    Es kommt aber auch das vor:

    Code:
    <verlinkung><link>http://www.google.de</link></verlinkung>
    Nun möchte ich per <xsl:when test="..."> entscheiden, ob ein Linktext samt Link angezeigt wird (erste Codebox) oder, falls <linktext> nicht vorhanden nur den Link anzeigen.

    Meine XSLT sieht dabei auszugsweise so aus:

    Code:
    <xsl:template match="verlinkung">
    	<a href="{link}">
    	<xsl:choose>
    		<xsl:when test="//linktext"><xsl:value-of select="linktext" /></xsl:when> 
    		<xsl:otherwise><xsl:value-of select="." /></xsl:otherwise>
    	</xsl:choose>
    	</a>
    </xsl:template>
    Leider funktioniert dann nur die erste Variante. Der Linktext wird angezeigt und leitet auf eine bestimmte URL aber wenn kein Linktext angegeben ist, wird <xsltherwise> nicht ausgeführt und es wird der Link gänzlich ohne Text angezeigt.

    Wo liegt der Fehler?

  • #2
    Man sollte das folgendermaßen angehen:
    Code:
    <xsl:template match="verlinkung">
      <a href="{link}">
        <xsl:apply-templates select="(linktext | link)[1]"/>
      </a>
    </xsl:template>
    Ansonsten ist in deinem Code der Testausdruck
    test="//linktext"
    falsch, das müsste
    test="linktext"
    lauten, um relativ zum Element "verlinkung" das Kindelement "linktext" zu prüfen.

    Comment


    • #3
      Funktioniert wunderbar. Danke!

      Comment

      Working...
      X