Xsl et templates, récursivité

Fermé
Olivier - 9 nov. 2004 à 00:42
 teslasghost - 9 nov. 2004 à 21:26
Bonjour tout le monde, g besoin d'un petit coup de main pour réussir à faire une feuille de style permettant l'utilisation de puces, de façon récursive (à la word, oui, je sais , je réinvenve l'eau chaude, mais j'aime ca ...)

Donc, pour faire simple, un petit exemple :

dans mon xml:
<point>
<point>premierpoint</point>
<point>
<titre>titre second point</titre>
<point>premier sous-point du second point</point>
<point>second sous-point du second point</point>
</point>
</point>


petit bout de ma feuille de style :

<xsl:template match="point">

<xsl:if test="point/point">
<sstitre><xsl:value-of select="titre"/></sstitre>
<blockquote>
<xsl:for-each select="point/point">
<xsl:apply-templates select="point"/>
</xsl:for-each>
</blockquote>
</xsl:if>
<xsl:if test="not(point/point)">
<xsl:value-of select="point"/>
<xsl:apply-templates /><br/><br/>
</xsl:if>

</xsl:template>



Merci d'avance

Olivier

5 réponses

teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
9 nov. 2004 à 09:16
Salut tout seul...

Tu voudrais que ton résultat est quelle tête après?
Quel est le résultat insatisfaisant que tu obtiens?


Qui va en mer pour son plaisir,
irait en enfer pour ses vacances
0
Ben en fait, je voudrais avoir l'affichage de la puce (•), puis le contenu du point, ceci pour chaque point. Si celui ci contient un titre et un ou plusieurs points, je veux qu'il affiche le titre, et en dessous les points décalés (par récursivité = par rappel du même template).

Je suis vraiment pas loin d'obtenir ce que je veux, mais disons que une fois, il affiche bien tout, une autre fois, j'arrive à afficher que la première profondeur ... (enfin, je t'ai mis qu'un seul essai de template, et je peux plus trop te dire ce qui'l fé exactement à l'écran ...)

Pour l'exemple précédent, j'aiemerais le résultat : (j'aurais pu très bien mettre un titre à cette arborescence en mettant une balise <titre> dans le premier point ...

• premierpoint
• titre second point
•premier sous-point du second point
•second sous-point du second point



Voilà, en espérant que tu puisses m'aider ...

@ tout

Olivier
0
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
9 nov. 2004 à 16:18
Tu veux dire ça à partir du xml du dessus?

• premier point
     • titre second point
               • premier sous titre
               • Second sous titre

ou bien plutôt ça?

• premier point
• titre second point
           • premier sous titre
           • Second sous titre

      


En fait tu devrais déjà nommer ta première balise "points" pour ne pas confondre. Ensuite tu devrais aussi enlever ce "titre" qui n'apporte rien si j'ai bien compris, ou alors au contraire laisser un attribut titre mais alors pour chaque point.

Déjà pour t'y retrouver mieux, as tu un XSD ou un DTD? Bien mettre ça en place aide sacrément pour faire le XML et le XSL correctement :o)
Qui va en mer pour son plaisir,
irait en enfer pour ses vacances
0
J'avais déjà fais un teste avec points, mais c t nul (pas top comme récursivité...)
Quant au résultat, c plutôt ta seconde proposition.

Mais en promenant, je viens de me rendre compte que je réinvente méchament l'eau chaude ... :p
Voir html et les balises <ul>, je que V m'empresser d'utiliser ...
exemple que je viens de faire pour voir si j'y arriverai (et c ca que je voulais faire)

<html>
<body>
<dl>
<dt>Terme</dt>

<dd><dl><dt>Sterme1</dt><dd>test1</dd></dl></dd>
<dd>Définition2</dd>

</dl>

<ul>
<li>article 1<ul><li>test1</li><li>tes2</li></ul> </li>
<li> article 2 </li>
</ul>


</body>


V essayer de faire ca vace mes templates ce soir

@ +

Olivier

G pas trop le temps pour la DTD et je sais pas quoi (je tape mes résumés de cours en xml, et fais ma feuille de style en fonction du besoin ...)

Olivier
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Comme prévu, ca c goupillé nickel avec ces balises html ...
Je les réappelle juste dans mon template point. Pour pas afficher la puce associable au premier point, ca donne ca :

<xsl:template match="point/point">
<ul>
<li>
<xsl:apply-templates />
</li>
</ul>
</xsl:template>

Je ke c pas propre dutout, mais vu que ma xsl change tout le temps, ce ser surement modifié bientôt, en attendnat, ca fé ce que je veux ...

@ tout

Olivier
0