Paul Brunner: Knoten in Text-Knoten

Hallo zusammen,

ich hatte dazu schon irgendwo einen Artikel gelesen (wenn ich nur wüsste wo) der eine elegante Lösung für folgendens Problem bot:

Der Start: xml
*-----
<?xml version='1.0' encoding='UTF-8'?>
<text>Los <link link="http://www.dahin.de">klick</link> mich</text>
*-----

Das Ziel: html
*-----
<p>Los <a href=""http://www.dahin.de">klick</a>mich</p>
*-----

Das Ergebnis: html
*-----
<p>Los </p>
*-----

Der Holzweg: xsl
*-----
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match='document'>
 <xsl:apply-templates select='*'/>
</xsl:template>

<xsl:template match='text'>
 <p><xsl:value-of select="text()" /></p>
</xsl:template>

<xsl:template match='link'>
 <a> <xsl:attribute name='href'><xsl:value-of select='@link' /></xsl:attribute>
 <xsl:value-of select="text()" /></a>
</xsl:template>

</xsl:stylesheet>
*-----

Wie ging das?
Paul

  1. hallo,

    Der Holzweg: xsl

    Der Holzweg ist nur ein kleiner Denkfehler gewesen.

    <xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

    <xsl:template match='document'>
     <xsl:apply-templates />
    </xsl:template>

    <xsl:template match='text'>
     <p><xsl:apply-templates /></p>
    </xsl:template>

    <xsl:template match='link'>
     <a> <xsl:attribute name='href'><xsl:value-of select='@link' /></xsl:attribute>
     <xsl:value-of select="." /></a>
    </xsl:template>

    </xsl:stylesheet>

    grüße
    thomas

    1. Hallo Thomas,

      danke für den "Denkanstoß".

      Aber jetzt beisst sich das ganze mit den Sheets in die es eingebunden werden soll. Und dort werden ungewollte/undefinierte Text-Knoten und damit auch der Inhalt von <text> unterdrückt.

      *----
      <xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
      <xsl:include href='elements.xsl'/>

      <xsl:template match='document'>
       <xsl:apply-templates />
      </xsl:template>

      [...]

      <xsl:template select='text()'/>

      </xsl:stylesheet>
      *----

      Gruß
      Paul

      1. hallo Paul,

        Und dort werden ungewollte/undefinierte Text-Knoten und damit auch der Inhalt von <text> unterdrückt.

        <xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

        <xsl:template match='document'>
         <xsl:apply-templates />
        </xsl:template>

        <xsl:template match='text'>
         <p>xsl:apply-templates/</p>
        </xsl:template>

        <xsl:template match='link'>
         <a> <xsl:attribute name='href'><xsl:value-of select='@link' /></xsl:attribute>
         <xsl:value-of select="." /></a>
        </xsl:template>

        <xsl:template match="text/text()">
        <xsl:value-of select="." />
        </xsl:template>

        <xsl:template match="text()">
        </xsl:template>

        </xsl:stylesheet>

        grüße
        thomas

        1. na darauf hätte ich auch sleber kommen können ;-)

          Dankeschön und Gute Nacht
          Paul