Bonjour,
je suis confronté à un problème bizarre auquel je n'ai pas trouvé de réponse sur le net:
Dans une feuille xsl, je parse un document xml pour générer de l'xHTML, jusque là rien d'anormal.
Sauf que si dans ma feuille je mets une balise <div> ou <span> (ou autre je n'ai pas testé) sans rien dedans, elle sera prise uniquement comme une ouverture de balise, et donc les éléments du dessous seront contenus dedans.
Comme un exemple vaut toujours mieux qu'un long discours voici ma feuille xsl (c'est la div de classe "projectInfosHeader_left" qui pose problème):
Et voici le rendu html (du moins un extrait qui montre bien le problème):
Quand par contre je mets quelque chose entre la balise <div class="projectInfosHeader_left"> et </div>, la balise est bien prise en compte.
Any idee?
Merci pour votre aide.
Dark.
je suis confronté à un problème bizarre auquel je n'ai pas trouvé de réponse sur le net:
Dans une feuille xsl, je parse un document xml pour générer de l'xHTML, jusque là rien d'anormal.
Sauf que si dans ma feuille je mets une balise <div> ou <span> (ou autre je n'ai pas testé) sans rien dedans, elle sera prise uniquement comme une ouverture de balise, et donc les éléments du dessous seront contenus dedans.
Comme un exemple vaut toujours mieux qu'un long discours voici ma feuille xsl (c'est la div de classe "projectInfosHeader_left" qui pose problème):
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:var="http://www.w3.org/TR/xhtml1/strict"
xmlns:php="http://php.net/xsl"
exclude-result-prefixes="xsl var php">
<xsl:output
indent="yes"
method="xml"
omit-xml-declaration="yes"
encoding="UTF-8"/>
<xsl:template match="/root">
<h2>Mes réalisations</h2>
<ul id="realisations">
<xsl:for-each select="project">
<li>
<xsl:attribute name="id">
<xsl:value-of select="@id" />
</xsl:attribute>
<!-- Ajout d'un margin-bottom pour éviter un bug IE -->
<xsl:if test="position() = last()">
<xsl:attribute name="style">margin-bottom: 0px</xsl:attribute>
</xsl:if>
<a class="project_overview">
<xsl:attribute name="href">
<xsl:value-of select="php:functionString('site_url', concat('creations/', @id))" />
</xsl:attribute>
<img>
<xsl:attribute name="alt">
<xsl:value-of select="name" />
</xsl:attribute>
<xsl:attribute name="src">
<xsl:value-of select="php:functionString('app_url', concat('images/projects/project_', @id, '_half.jpg'))" />
</xsl:attribute>
</img>
</a>
<div class="projectInfosHeader_left"></div>
<div>
<!-- Ajout d'un margin-bottom pour éviter un bug IE -->
<xsl:if test="position() = last()">
<xsl:attribute name="style">margin-bottom: 0px</xsl:attribute>
</xsl:if>
<ul class="floatRight">
<!-- Ajout d'un margin-bottom pour éviter un bug IE -->
<xsl:if test="position() = last()">
<xsl:attribute name="id">lastProject</xsl:attribute>
</xsl:if>
<li>
<a>
<xsl:attribute name="class">project_more</xsl:attribute>
<xsl:attribute name="href">
<xsl:value-of select="php:functionString('site_url', concat('creations/', @id))" />
</xsl:attribute>
En savoir plus
</a>
</li>
<xsl:if test="url">
<li>
<a>
<xsl:attribute name="href">
<xsl:value-of select="url" />
</xsl:attribute>
Voir le site
</a>
</li>
</xsl:if>
</ul>
<ul class="floatLeft">
<li>
<strong>Client: </strong> <xsl:value-of select="client"/>
</li>
<li>
<strong>Prestation: </strong>
<xsl:for-each select="services/service">
<xsl:value-of select="." />
<xsl:if test="position() != last()">
/
</xsl:if>
</xsl:for-each>
</li>
</ul>
</div>
</li>
</xsl:for-each>
</ul>
</xsl:template>
</xsl:stylesheet>
Et voici le rendu html (du moins un extrait qui montre bien le problème):
<ul id="realisations">
<li id="blabla">
<a href="http://..." class="project_overview">
<img src="http://....jpg" alt="blabla"/>
</a>
<div class="projectInfosHeader_left">
<div>
<ul class="floatRight">
<li>
<a href="http://..." class="project_more">
En savoir plus
</a>
</li>
<li>
<a href="http://...">
Voir le site
</a>
</li>
</ul>
<ul class="floatLeft">
<li><strong>Client: </strong>Aucun</li>
<li><strong>Prestation: </strong>Web design
/
Intégration xHTML
/
CSS
/
Accessibilité</li>
</ul>
</div>
</div></li>
Quand par contre je mets quelque chose entre la balise <div class="projectInfosHeader_left"> et </div>, la balise est bien prise en compte.
Any idee?
Merci pour votre aide.
Dark.