Bonjour tout le monde,
Je tombe sur un problème que malheureusement je n'arrive pas à résoudre, pour mon évaluation XML ( cours ) je doit créer une dvdtheque ( DTD + XML + XSL(T) )
Mon problème est que je n'arrive pas à récupérer un élément par rapport à son id, hummmmm pas très clair peut-être
Voici ma DTD
dvdtheque.dtd
jusque là je pense que ma DTD est correct je définit bien les ID et les IDREF ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 <!ELEMENT dvdtheque (films*,genre*,acteurs*,realisateurs*,nationalite*,disponibilite*)> <!-- Noeud des films --> <!ELEMENT films(titre,genre*,acteur*,realisateur*,dispo*,synopsis)> <!ATTLIST films idfilm CDATA #REQUIRED> <!ELEMENT titre (#PCDATA) #REQUIRED> <!ATTLIST titre annee CDATA #REQUIRED> <!ATTLIST titre duree CDATA #REQUIRED> <!ELEMENT genre EMPTY> <!ATTLIST genre idgenre IDREF #REQUIRED> <!ELEMENT acteur EMPTY> <!ATTLIST acteur idact IDREF #REQUIRED> <!ELEMENT realisateur EMPTY> <!ATTLIST realisateur idreal IDREF #REQUIRED> <!ELEMENT dispo EMPTY> <!ATTLIST dispo iddispo IDREF #REQUIRED> <!ELEMENT synopsis (#PCDATA) #REQUIRED> <!-- Noeud des genres --> <!ELEMENT genres (nomg)> <!ATTLIST genres idrefgenre ID #REQUIRED> <!ELEMENT nomg (#PCDATA) #REQUIRED> <!-- Noeud des acteurs --> <!ELEMENT acteurs (noma)> <!ATTLIST acteurs idrefact ID #REQUIRED> <!ELEMENT noma (#PCDATA) #REQUIRED> <!-- Noeud des realisateurs --> <!ELEMENT realisateurs (nomr)> <!ATTLIST realisateurs idrefreal ID #REQUIRED> <!ELEMENT nomr (#PCDATA) #REQUIRED> <!-- Noeud des nationalités --> <!ELEMENT nationalites (nomn)> <!ATTLIST nationalites idrefnat ID #REQUIRED> <!ELEMENT nomn (#PCDATA) #REQUIRED> <!-- Noeud des nationalité --> <!ELEMENT disponibilites (nomd)> <!ATTLIST disponibilites idrefdispo ID #REQUIRED> <!ELEMENT nomd (#PCDATA) #REQUIRED>
Maintenant le XML
dvdtheque.xml
ici mes idact etc... font bien référence au acteur et autre, et voici le XSL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="dvdtheque.xsl"?> <!DOCTYPE dvdtheque SYSTEM "dvdtheque.dtd"> <dvdtheque> <films idfilm="1"> <titre annee="1994" duree="2H40">Titre 1</titre> <genre idgenre="g1"/> <acteur idact="a1"/> <realisateur idreal="r1"/> <dispo iddispo="d1"/> <synopsis>Premier synopsis</synopsis> </films> <genres idrefgenre="g1"> <nomg>Action</nomg> </genres> <acteur idrefact="a1"> <noma>Acteur1</noma> </acteur> <realisateurs idrefreal="r1"> <nomr>Réalisateur 1</nomr> </realisateurs> <nationalites idrefnat="n1"> <nomn>Nationalite 1</nomn> </nationalites> <disponibilites idrefdispo="d1"> <nomd>Dispo ici et là</nomd> </disponibilites> </dvdtheque>
dvdtheque.xsl
Vous remarquerez aucune mise en page je cherche juste à l'afficher, dans ce XSL le titre s'affiche correctement ( normale je fait la boucle sur les films )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <html> <head> <title>Dvdthèque</title> </head> <body> <xsl:for-each select="dvdtheque/films"> <xsl:value-of select="titre"/><br/> <xsl:for-each select="acteur"> <xsl:value-of select="id(./@idact)/noma"/><br/> </xsl:for-each> </xsl:for-each> </body> </html> </xsl:template> </xsl:stylesheet>
ensuite j'effectue une boucle sur acteur en lui demandant de m'envoyer l'element noma de l'identifiant a1
mais rien impossible d'afficher l'acteur
Si quelqu'un à du temps à me consacrer pour comprendre ou est mon erreur, car je suppose que c'est une erreur de ma part
d'avance merci de votre aide
Partager