Knoten in Text-Knoten
Paul Brunner
- xsl
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
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
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
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
na darauf hätte ich auch sleber kommen können ;-)
Dankeschön und Gute Nacht
Paul