Salut,
Afin de transformer un code de mise en forme XML en sortie HTML, j'ai fait le XSL suivant :
Donc, avec le XML suivant :<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlnssl="http://www.w3.org/1999/XSL/Transform">
<xsl:output
method="html"
encoding="utf-8"
doctype-public="-//W3C//DTD HTML 4.01//EN"
doctype-system="http://www.w3.org/TR/html4/strict.dtd"
indent="yes" />
<xsl:preserve-space elements="pre | code" />
<xsl:template match="@*">
<xsl:copy />
</xsl:template>
<xsl:template match="*">
<xsl:copy>
<xsl:apply-templates select="* | text() | @*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="article">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="quote">
<blockquote>
<xsl:if test="@author ">
<span class="quote_author">
<xsl:value-of select="@author" />
</span> <br />
</xsl:if>
<xsl:value-of select="." />
</blockquote>
</xsl:template>
<xsl:template match="bold">
<strong>
<xsl:value-of select="." />
</strong>
</xsl:template>
</xsl:stylesheet>
J'obtiens ce que je veux. Le problème est lorsque j'ai deux balises imbriquées dans mon XML, comme ceci :<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE article SYSTEM "validator.dtd">
<?xml-stylesheet href="template.xsl" type="text/xsl"?>
<article>
Bonjour.
<bold>Gras </bold> <quote> Citation</quote>
</article>
En fait, il ne prend pas en compte la deuxième balise, dans ce cas, bold. Donc, avec le XML précédent, j'obtiens :<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE article SYSTEM "validator.dtd">
<?xml-stylesheet href="template.xsl" type="text/xsl"?>
<article>
Bonjour.
<quote> <bold>Gras </bold> Citation</quote>
</article>
Alors que j'aimerais :<blockquote>GrasCitation
</blockquote>
Existe t-il un moyen de faire ça avec XSL ? J'ai essayé quelques trucs à partir des tutoriels disponibles mais rien de satisfaisant.<blockquote><strong>Gras</strong> Citation</blockquote>
Merci![]()
Partager