VIVEZ LE
FOOTBALL !

Posez votre question Signaler

[xml /xsl / dtd] Problème sur un noeud

Sahasrara - Dernière réponse le 28 août 2005 à 11:32
Bonjour,

J'ai besoin de votre aide afin de comprendre un mécanisme de XSL et de pouvoir corriger l'erreur.

Je commence par la fin et vous montre ce à quoi j'arrive et ce à quoi j'aimerais arriver :

Le résultat :
# Nom : Sahasrara Père : Mère :
# Amant : Cyltar
# Amant : Cyltar
# Nom : Cyltar Père : Mère :
# Amant : Sahasrara
# Amant : Sahasrara

Le résultat souhaité :
# Nom : Sahasrara Père : Mère :
# Amant : Cyltar
# Amant : Pèrebenoit
# Nom : Cyltar Père : Mère :
# Amant : Sahasrara
# Amant : Pèrebenoit

Comme vous le voyez le problème se situe aux niveaux des amants, puisque dans le cas réel j'affiche deux fois le même nom.

Voici maintenant le fichier XML (comprenant la dtd) et le fichier xsl :

xml/dtd :

<!DOCTYPE genealogie [
<!ELEMENT personne (pseudo, pere, mere, enfant*, epoux*, amant*)>

<!ELEMENT pseudo (nom) >
<!ELEMENT pere (nom) >
<!ELEMENT mere (nom) >
<!ELEMENT enfant (nom) >
<!ELEMENT epoux (nom) >
<!ELEMENT amant (nom) >
<!ELEMENT nom (#PCDATA) >
]>
<genealogie>
<personne>
<nom>Sahasrara</nom>
<amant>Cyltar</amant>
<amant>Pèrebenoit</amant>
</personne>
<personne>
<nom>Cyltar</nom>
<amant>Sahasrara</amant>
<amant>Pèrebenoit</amant>
</personne>
</genealogie>


le fichier XSL :

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" media-type="text/html; charset=ISO-8859-1"/>
<xsl:template match="genealogie">
<html>
<head>
<title>
Généalogie du Clergé d'Azeroth
</title>
</head>
<body>
<xsl:apply-templates select="personne"/>
</body>
</html>
</xsl:template>

<xsl:template match="personne">
Nom : <xsl:value-of select="nom"/>
Père : <xsl:value-of select="pere"/>
Mère : <xsl:value-of select="mere"/>
<xsl:apply-templates select="amant"/>
</xsl:template>

<xsl:template match="amant">
<li>
Amant : <xsl:value-of select="../amant"/>
</li>
</xsl:template>

</xsl:stylesheet>




Ce qui m'intéresse est de comprendre pourquoi avec ma méthode le page ne s'affiche pas comme je le souhaite et si vous pouvez me donner la réponse en plus celà me permetrait de mieux comprendre.

Je vous remercie d'avance pour le temps que vous avez passé à lire le message et le temps que vous allez prendre pour y répondre.

Salutations, Sahasrara.
Lire la suite 

[xml /xsl / dtd] Problème sur un noeud »

1 réponses
Réponse
+0
moins plus
Salut,
Dans le template 'amant' tu écris
 Amant : <xsl:value-of select="../amant"/> 

Alors que tu veux afficher le texte du noeud courant. Le ../amant va te donner
la valeur (le texte) du premier noeud amant du pere du noeud courant (..).
Essaies avec :
 Amant : <xsl:value-of select="."/> 


A+, crabs
Ajouter un commentaire
Ce document intitulé « [xml /xsl / dtd] Problème sur un noeud » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?