[XSL] Transformation von URL + Text in a href=""



  • Hallo, ich will folgende (nur Auszug) XML-Datei transformieren:

    <links>
     <link>
      <text>Hallo Welt</text>
      <url>www.c-plusplus.net</url>
     </link>
    </links>
    

    Und zwar möchte ich aus dem link ein solches Ergebnis erstellen:

    <a href="www.c-plusplus.net">Hallo Welt</a>
    

    Soweit bin ich bisher mit meiner XSL gekommen:

    <xsl:for-each select="link">
     <xsl:for-each select="forum_link">
      <a>
       <xsl:attribute name="href"><xsl:value-of select="url"/></xsl:attribute>
        <xsl:apply-templates/>
      </a>
     </xsl:for-each>
    </xsl:for-each>
    

    Das funzt auch soweit. Nur wie bringe ich nun den Text von "text" dazu? Ich wollte ein weiteres <xsl:value-of select="text"> reinsetzen, aber anscheinend findet er das Element nicht, die Sache bleibt immer leer.

    Wie kann ich das Element hier adressieren?



  • das weiß doch bestimmt einer?



  • Habe mal Deinen Codeschnippsel eingetippt.

    Mozilla zeigt mir bisher als Ausgabe einen Link mit dem Text:
    "www.c-plusplus.net Hallo Welt"



  • Moment... meinst Du sowas:

    Hallo Welt

    oder das hier:

    [url]www.c-plusplus.net Hallo Welt[/url]



  • Hatte erst letzteres raus...

    Probiers mal hiermit, dann sollte Hallo Welt der Linktitel sein:

    XML:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <?xml-stylesheet type="text/xsl" href="test.xsl"?>
    <links>
     <link> 
      <url>http://www.c-plusplus.net</url> 
      <text>Hallo Welt</text> 
     </link> 
    </links>
    

    XSL:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
    <xsl:template match="/">
    <html>
    <body>
    
    </xsl:for-each>
    <xsl:for-each select="links"> 
        <xsl:for-each select="link"> 
        <a>
            <xsl:attribute name="href">
                <xsl:value-of select="url" />
            </xsl:attribute> 
            <xsl:value-of select="text" />
        </a>   
        </xsl:for-each> 
    </xsl:for-each> 
    
    </body>
    </html>
    
    </xsl:template>
    </xsl:stylesheet>
    

    edit: Code korrigiert



  • Doppelpost, siehe unten



  • Marucs codete:
    XSL:

    <!-- ~~~~~~~~~~~ -->
    <xsl:for-each select="link"> 
     <xsl:for-each select="forum_link">
    <!-- ~~~~~~~~~~~ -->
    
      <a> 
       <xsl:attribute name="href"><xsl:value-of select="url"/></xsl:attribute>
        <xsl:apply-templates/> 
      </a> 
     </xsl:for-each> 
    </xsl:for-each>
    

    Deine XML-Datei sieht etwas anders aus. Statt link(XSL) heißt es dort links(XML) und statt forum_link heißt es link. Dann passiert natürlich nichts.



  • Ah, das ist ein Copy&Paste-Fehler hier im Board. Also im Original stimmt das schon überein.

    Trotzdem scharfes Auge.

    Ich werde's mal testen.


Anmelden zum Antworten