Announcement

Collapse
No announcement yet.

XSLT gibt fehlerhaften Link aus

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

  • XSLT gibt fehlerhaften Link aus

    Ich habe ein kleines Problem mit einer Transformation eines XML-Dokumentes in ein HTML-Dokument. Ich möchte einen Link transformieren. Jedoch ist dieser nicht zu gebrauchen.

    Mein XML:
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE a SYSTEM "file:/Users/Claus/Documents/Uni/z_xml_test/einfach_url.dtd">
    <!-- Sie müssen das folgende DOCTYPE löschen -->
    <?xml-stylesheet type="text/xsl" href="einfach_url.xsl"?>
    
    <a type="Vers_2">
        <b>
    
            <url link="href">
                www.ak18.de
            </url>
        </b>
    </a>
    Hier gibt es die DTD.

    Mein XSLT:
    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="html"/>
        <xsl:template match="/">
            <HTML>
                <HEAD>
                    <TITLE>
                        Spökes
                    </TITLE>
                </HEAD>
                <BODY>
    
                        <xsl:apply-templates/>
    
                </BODY>    
            </HTML>
        </xsl:template>
        
    
    
        
      <xsl:template match="url[@link='href']">
          <a>
              <xsl:attribute name="href">
                  <xsl:apply-templates />
              </xsl:attribute>
              <xsl:text>link</xsl:text>
          </a>
      </xsl:template>  
    
            
    </xsl:stylesheet>
    Mein Ergebnis als HTML
    Code:
    <HTML>
       <HEAD>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
       
          <TITLE>
             Sp&ouml;kes
                  </TITLE>
       </HEAD>
       <BODY>      
               <a href="%0A            www.ak18.de%0A        ">link</a>
       </BODY>
    </HTML>
    Wie man sieht ist der Link vorher mit %0A und hinterher mit %0A verunstaltet.

    Woher kommt das? Was mache ich falsch?

  • #2
    Es wird der Whitespace mit verarbeitet. Wenn das nicht passieren soll, verwende die XSLT-Funktion normalize-space() für das Linkziel.

    Comment


    • #3
      Vielen Dank.
      Wo genau muss ich dann normalize-space() einsetzten?

      Comment


      • #4
        Am einfachsten so:

        Code:
        <xsl:template match="url[@link='href']">
          <a href="{normalize-space(.)}">link</a>
        </xsl:template>
        Beachte, dass der externe Link ohne http:// nicht funktioniert. Entweder im XML-Dokument angeben oder auch im Stylesheet:

        Code:
        <a href="{concat('http://',normalize-space(.))}">link</a>

        Comment


        • #5
          Super Thomas, ich danke Dir.

          Allerdings würde ich gerne mit
          Code:
          <xsl:attribut>
          arbeiten. Gibt es da auch eine Möglichkeit?

          Comment


          • #6
            Dann so:

            Code:
            ...
            <xsl:attribute name="href">
              <xsl:value-of select="normalize-space(.)"/>
            </xsl:attribute>
            ...
            Allerdings sind xsl:attribute ebenso wie xsl:element meistens unnötig und erst bei dynamisch zu vergebenden Namen von Nutzen.

            Comment


            • #7
              Wunderbar! Ich bedanke mich ganz herzlich

              Comment

              Working...
              X