[XSLT] [ID & IDREF] problème d'utilisation
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
Code:
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> |
jusque là je pense que ma DTD est correct je définit bien les ID et les IDREF ?
Maintenant le XML
dvdtheque.xml
Code:
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> |
ici mes idact etc... font bien référence au acteur et autre, et voici le XSL
dvdtheque.xsl
Code:
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> |
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 )
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