Rechercher : dans
Par :

[xsl]imbrication de balise

Dernière réponse le 16 avr 2009 à 13:03:06 Nass2, le 16 avr 2009 à 11:56:49 
 Signaler ce message aux modérateurs

Bonjour,
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
Configuration: Windows Vista
Firefox 3.0.8

Meilleures réponses pour « [xsl]imbrication de balise » dans :
Les balises HTML Voir HTML, un langage à balises Le HTML n'est pas un langage de programmation. Il s'agit d'un langage permettant de décrire la mise en page et la forme d'un contenu rédigé en texte simple. Une page HTML est ainsi un simple fichier texte...
Mise en page de XML avec XSL Voir Introduction à XSL XML est un langage de structuration des données, et non de représentation des données. Ainsi XSL (eXtensible StyleSheet Language) est un langage recommandé par le W3C pour effectuer la représentation des données de documents XML....
Les balises de style Voir Qu'est-ce qu'une balise de style? Les balises de style modifient la typographie du texte. Elles peuvent être imbriquées dans d'autres balises de style de la même façon qu'on le ferait avec un traitement de texte. Voici une liste de balises de...
Les balises dans la partie 'head' VoirAvant tout : rappel sur le doctype La partie head Balises meta Mots clés Description Déclaration de la langue du site Catégorie Auteur Restrictions pour les moteurs de recherche Adresse de la page Logiciels utilisés pour la...
Générateur de mots clés sur google VoirUn Générateur de mots clés gratuit pour tous Les mots clés peuvent être utilisés à de nombreuses fins : titre du site, balise description, corps du texte, balises importantes (h1, h2, etc ...) et non pas seulement dans la balise "keywords" qui...
[XSL-FO] Comment lire un fichier .FO/.FOB ? VoirLe format XSL-FO est un format de description de page comme PDF ou DVI. Ces fichiers ont généralement l'extension .fo ou .fob, et parfois .xml (On peut les repérer facilement en les ouvrant avec le Bloc-Note: On trouve
Les éléments de transformation XSL VoirLes éléments de transformation Les éléments de transformations permettent de sélectionner et effectuer des opérations sur les éléments du document XML. Leur syntaxe est la suivante : Remarquez la présence du / indiquant que...
Les balises de structure VoirLes balises peuvent être réparties en 2 classes : celles qui modifient la structure de la page et celles qui modifient le style du texte. Parmi les balises de structure on trouve les en-têtes, les paragraphes, les listes ... Les attributs Les...
Introduction au HTML VoirPrésentation du HTML Le HTML (« HyperText Mark-Up Language ») est un langage dit de « marquage » (de « structuration » ou de « balisage ») dont le rôle est de formaliser l'écriture d'un document avec des balises de formatage. Les balises permettent...

1

 Nass2, le 16 avr 2009 à 13:03:06
  • +1

J'ai trouver :

<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

Répondre à Nass2