Passer un paramètre aux noeuds enfants - XML/XSL - Programmation
Marsh Posté le 24-04-2007 à 18:05:15
Un template placé avant un autre est plus prioritaire, donc si tu mets des restrictions sur son "match", tu peux traiter en priorité des noeuds particuliers. Par exemple, tu peux t'intéresser aux Chapitres qui ont l'attribut OtherDir ou qui ont parmis leurs parents un Chapitres avec cet attribut:
Code :
|
Marsh Posté le 24-04-2007 à 18:38:15
Merci pour ta réponse,
c'est presque ça, j'ai néanmoins encore un souci...
En effet, seuls les premiers noeuds enfants sont traités...
Ex:
Code :
|
Ici, les noeuds Affichage de la vidéo, Barre d'informations et Nouvelle Sélection sont traités comme des chapitre normaux...
Le problème vient je pense de la directive xsl:apply-template
Code :
|
Comment spécifier ici d'utiliser le template "avec" OnDir?
Merci d'avance
Mike
Marsh Posté le 25-04-2007 à 17:39:42
Pour rester cohérent tu peux utiliser le même principe: match="Text[count(ancestor::Chapitres/@OtherDir)]".
Marsh Posté le 26-04-2007 à 22:47:16
Encore merci, ça marche impec' maintenant...
Néanmoins, j'ai une dernière question pour rendre le code un peu plus clair.
Comment utiliser une condition dans le match="" pour un attribut?
Code :
|
Comment donner comme condition ici que le noeud Chapitres pour lequel l'attribut Lien est utilisé ici, ait un attribut OtherDir existant?
J'ai ça pour différencier les noeuds Lien
Code :
|
J'ai essayé
Code :
|
Code :
|
Mais la version générique est toujours sélectionnée...
Sinon, comment accéder au noeud contenant l'attribut du match=""?
Code :
|
Code :
|
Que mettre dans le template pour afficher Roger? Ou bien Text?
Merci d'avance
Marsh Posté le 27-04-2007 à 10:14:45
Dans le dernier exemple (attention, tu as mis xsl:template select="", c'est match="", le select s'utilise avec xsl:apply-templates), tu peux écrire
match="Chapitres[count(@Lien) and count(@OtherDir)]"
Tu matches tous les Chapitres à condition qu'il y ait un attribut Lien et un attribut OtherDir.
Marsh Posté le 24-04-2007 à 11:28:53
Bonjour à tous,
j'ai un petit souci avec ma feuille de style XSL:
Soit le XML suivant:
J'aimerais appliquer un template différent pour tous les noeuds (Chapitres et Text) fils du premier Chapitres, parce qu'il a un attribut "OtherDir", et le template normal pour le dernier Chapitres, parce qu'il n'en a pas...
Comment je peux faire ça?
Merci d'avance
Mike