Verständnisprobleme mit apply-templates
Florian Neumeyer
- xsl
Hallo,
folgenden Text würde ich gerne direkt übernommen haben:
<u><i><b>1<br/>2<br/>3</b></i></u>
Mein bisheriger Ansatz:
[..]
<xsl:apply-templates select="text"/>
[..]
<xsl:template match="b">
<b>
xsl:choose
<xsl:when test="child::u|i">
<xsl:apply-templates select="child::u|i"/>
</xsl:when>
xsl:otherwise<xsl:value-of select="."/></xsl:otherwise>
</xsl:choose>
</b>
</xsl:template>
<xsl:template match="u">
<u>
xsl:choose
<xsl:when test="child::b|i">
<xsl:apply-templates select="child::b|i"/>
</xsl:when>
xsl:otherwise<xsl:value-of select="."/></xsl:otherwise>
</xsl:choose>
</u>
</xsl:template>
<xsl:template match="i">
<i>
xsl:choose
<xsl:when test="child::u|b">
<xsl:apply-templates select="child::u|b"/>
</xsl:when>
xsl:otherwise<xsl:value-of select="."/></xsl:otherwise>
</xsl:choose>
</i>
</xsl:template>
Allerdings ist mir nicht ganz klar, wie ich die <br/> Tags dargestellt bekommen, weil die bisher in der Ausgabe verständlicherweise fehlen :(
Über Tipps wäre ich sehr dankbar!
Grüße,
Flo
Hallo,
folgenden Text würde ich gerne direkt übernommen haben:
<u><i><b>1<br/>2<br/>3</b></i></u>Mein bisheriger Ansatz:
Recht viel, ist aber nicht wirklich notwendig.
Wenn du ein umgebendes XML-Elemnt hat in dem dieses HTML steht:
<xsl:template match="elmenetName">
<xsl:copy-of select="child::node()" />
</xsl:template>
Wenn das aus irgendeinem Grund nicht möglich ist:
<xsl:template match="u | i | b | br">
xsl:copy
<xsl:for-each select="@*">
<!-- kopiert die attribute, falls vorhanden -->
<xsl:copy />
</xsl:for-each>
<xsl:apply-templates />
</xsl:copy>
</xsl:template>
Grüße
Thomas
Recht viel, ist aber nicht wirklich notwendig.
Klappt prima und endlich ist meine XSL-Datei wieder übersichtlich :)
DANKE für die schnelle Hilfe!
Schönen Abend noch und Grüße,
Flo