[xml /xsl / dtd] Problème sur un noeud
Sahasrara
-
crabs Messages postés 909 Statut Membre -
crabs Messages postés 909 Statut Membre -
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.
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.
A voir également:
- [xml /xsl / dtd] Problème sur un noeud
- Xml viewer - Télécharger - Édition & Programmation
- Office xml handler - Télécharger - Traitement de texte
- Driveimage xml - Télécharger - Sauvegarde
- Format office open xml ou opendocument - Forum LibreOffice / OpenOffice
- Le XML A quoi ca sert? ✓ - Forum Programmation