XSL Bedingung

SpassCola

Grünschnabel
Hallo miteinander :)
Ich beschäftige mich zwangsweise seit 2Tagen mit XML/XSL und bin nun an einem Punkt an dem ich nicht weiterkomme, Abfragen. Hier einmal ein Auszug der XML-Datei:

<block tag="List">huhu<block>
<block tag="b">irgendwas</block>

Dazu bräuchte ich nun eine Abfrage, welche auswählt, was bei welchem tag-Wert geschieht. Block hat übrigens kein allgemein übergeordnetes Tag, wenn das hilft.

Bisher hatte ich dies:

<xsl:template match="article_body">
<xsl:for-each select="block">
<xsl:choose>
<xsl:when test="block/@tag=List">
<li><xsl:value-of select="."/></li>
</xsl:when>
<xsl:when test="block/@tag=b">
<b><xsl:value-of select="."/></b>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</xsl:template>

Funktioniert nur leider nicht, habt ihr einen Rat?

Vielen Dank

edit: und auf noch ein Problem bin ich gestoßen:
aus der XML: <link>http://usw</link><descr>hier klicken</descr>
der Link ansich ist garkein Problem das klappt, allerdings nur solange keine "descr" vorhanden ist. Wie ließe sich das realisieren, dass beim Vorhandensein einer solchen "descr" diese als Linktext genommen wird, ansonsten, die URL vom Link als Namen?

Danke :)
 
Zuletzt bearbeitet:
Hallo!

Schau mal hier:
Data.xml:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <foo bar="blub"/>
</root>

Style.xsl:
Code:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="xml"/>
    <xsl:template match="/">
        <xsl:choose>
            <xsl:when test="root/foo[@bar='blub']">
                a
            </xsl:when>
            <xsl:otherwise>
                b
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
</xsl:stylesheet>

Gruß Tom
 
Hallo und erstmal danke für den Tipp, leider hat es so bisher nicht geklappt.

xml
Code:
<article_body><line><block tag="b">Ferienwohnung 60m² max. 6 Pers.</block></line>
<line></line>
<line><block tag="List">einzigartige Ferienhalbinsel</block><block tag="List">breiter flacher Sandstrand</block><block tag="List">3 Schwimmbäder</block></line>
<line></line></article_body>

xsl
Code:
<xsl:template match="/">
        <xsl:choose>
            <xsl:when test="line/block[@tag='b']">
                <b><xsl:value-of select="." /></b>
            </xsl:when>
            <xsl:otherwise>
                <li><xsl:value-of select="." /></li>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>

Ich glaube das Problem ist, dass mein block-tag nicht immer ein höheres root-Element besitzt. Vielleicht könntest du mir da nochmal helfen, ebenso mein Problem mit dem Link :(

Viele Grüße
 

Neue Beiträge

Zurück