[xsl]imbrication de balise
Nass2
-
Nass2 -
Nass2 -
Bonjour,
j'ai un problème avec l'imbrication de balise en xsl.
je m'explique : j'ai un fichier xml comme suis :
le but est de la formater avec un fichier xsl pour obtenir un menu
le problème ce situe au niveau de l'imbrication des balises <ul> ou <li> avec les balise <xsl:if> et </xsl:if> en effet le xsl nécessite que les balises ouvertes soit fermé en l'occurrence elles le sont mais pas au sein de le même imbrication
Pour ce qui est du message d'erreur obtenu (avec le moteur xsl de php) :
quelqu'un peut m'aider
Merci d'avance pour vos réponses
j'ai un problème avec l'imbrication de balise en xsl.
je m'explique : j'ai un fichier xml comme suis :
<Worksheet>
<Table>
<Row>
<Cell><Data>1</Data></Cell>
<Cell><Data>Menu 1</Data></Cell>
</Row>
<Row>
<Cell><Data>2</Data></Cell>
<Cell><Data>Sous Menu 1.1</Data></Cell>
</Row>
<Row>
<Cell><Data>2</Data></Cell>
<Cell><Data>Sous Menu 1.2</Data></Cell>
</Row>
<Row>
<Cell><Data>2</Data></Cell>
<Cell><Data>Sous Menu 1.3</Data></Cell>
</Row>
<Row>
<Cell><Data>3</Data></Cell>
<Cell><Data>Sous Menu 1.3.1</Data></Cell>
</Row>
</Table>
</Worksheet>
le but est de la formater avec un fichier xsl pour obtenir un menu
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version="1.0">
<xsl:output method="xml" indent="yes" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" encoding="UTF-8"/>
<xsl:template match="/Worksheet">
<xsl:variable name="nbLigne">
<xsl:value-of select="count(Table/Row)"/>
</xsl:variable>
<div id="menu">
<div id="menu-titre">
MENU
</div>
<div id="menu-contenu">
<ul>
<xsl:for-each select="Table/Row">
<li>
<xsl:variable name="rang" select="Cell[position() = 1]/Data" />
<xsl:if test="position() = 1">
<xsl:variable name="rangprec" select="1" />
</xsl:if>
<xsl:if test="rang > rangprec">
<ul>
</xsl:if>
<li><span>
<xsl:value-of select="Cell[position() = 2]/Data" />
</span>
<xsl:if test="rang = rangprec">
</li>
</xsl:if>
<xsl:if test="rang < rangprec">
</ul></li>
</xsl:if>
<xsl:variable name="rangprec" select="Cell[position() = 1]/Data" />
</xsl:for-each>
</ul>
</div>
</div>
</xsl:template>
</xsl:stylesheet>
le problème ce situe au niveau de l'imbrication des balises <ul> ou <li> avec les balise <xsl:if> et </xsl:if> en effet le xsl nécessite que les balises ouvertes soit fermé en l'occurrence elles le sont mais pas au sein de le même imbrication
Pour ce qui est du message d'erreur obtenu (avec le moteur xsl de php) :
Warning: DOMDocument::load() [domdocument.load]: Opening and ending tag mismatch: ul line 21 and xsl:if in file:menu.xsl, line: 22 in traitement.php on line 108
quelqu'un peut m'aider
Merci d'avance pour vos réponses
A voir également:
- [xsl]imbrication de balise
- Balise couleur html ✓ - Forum HTML
- Couleur de texte dans une cellule HTML - Forum HTML
- Balise nav html ✓ - Forum CSS
- Balise br - Forum CSS
- Balise html5 - Forum HTML
1 réponse
j'ai trouver :
maintenant j'ai a faire à d'autre erreur
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version="1.0">
<xsl:output method="xml" indent="yes" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" encoding="UTF-8"/>
<xsl:template match="/Worksheet">
<xsl:variable name="nbLigne">
<xsl:value-of select="count(Table/Row)"/>
</xsl:variable>
<div id="menu">
<div id="menu-titre">
MENU
</div>
<div id="menu-contenu">
<ul>
<xsl:variable name="rangprec" select="1" />
<xsl:for-each select="Table/Row">
<xsl:variable name="rang" select="Cell[position() = 1]/Data" />
<xsl:variable name="pos" select="position()" />
<xsl:value-of select="$rangprec" />><xsl:value-of select="$rang" />
<xsl:if test="$rang > $rangprec">
<xsl:text disable-output-escaping="yes"><ul></xsl:text>
</xsl:if>
<xsl:text disable-output-escaping="yes"><li></xsl:text>
<span>
<xsl:value-of select="Cell[position() = 2]/Data" />
</span>
<xsl:if test="$rang = $rangprec">
<xsl:text disable-output-escaping="yes"></li></xsl:text>
</xsl:if>
<xsl:if test="$rang < $rangprec">
<xsl:text disable-output-escaping="yes"></ul></li></xsl:text>
</xsl:if>
<xsl:variable name="rangprec" select="Cell[position() = 1]/Data" />
</xsl:for-each>
</ul>
</div>
</div>
</xsl:template>
</xsl:stylesheet>
maintenant j'ai a faire à d'autre erreur