Bonjour, après quelques heures de recherches infructueuses, je vous soumet un problème que je rencontre :
Je débute dans l'utilisation des XSL, et je ne comprends pas comment accéder dans un XSL à un attribut défini par défaut dans le DTD.
Si mon attribut est défini au niveau de mon noeud XML, pas de problème j'accède à la valeur de mon attribut, par contre si je veux définir une valeur par défaut au niveau du DTD, impossible d'accéder à cette valeur
Mon DTD :
Mon XML
Mon XSL:
Dans mon XSL, la variable @type me renvoie bien "aa" pour mon premier noeud terme (variable déclaré dans le XML) mais ne me renvoie rien pour le second, la ou j'attends la valeur par défaut issue du DTD.
A noter que je réalise la transformation avec les fonctions XSL de PHP5 via le DOM.
Ai je fais une erreur, ou cette manipulation est elle impossible?
Par avance merci de vos réponses.
Je débute dans l'utilisation des XSL, et je ne comprends pas comment accéder dans un XSL à un attribut défini par défaut dans le DTD.
Si mon attribut est défini au niveau de mon noeud XML, pas de problème j'accède à la valeur de mon attribut, par contre si je veux définir une valeur par défaut au niveau du DTD, impossible d'accéder à cette valeur
Mon DTD :
Code:
<!ELEMENT glossaire (element)*>
<!ELEMENT element (terme,definition)>
<!ELEMENT terme (#PCDATA)>
<!ATTLIST terme type CDATA "toto">
<!ELEMENT definition (#PCDATA)>
Mon XML
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE glossaire SYSTEM "z.dtd">
<glossaire>
<element>
<terme type="aa" >Avatar</terme>
<definition>
désigne dans la mythologie un dieu qui se promène sur terre. Dans le jargon de la toile, c'est un personnage graphique imaginaire qui prend part avec un participant au clavardage, à des jeux de rôles etc....
</definition>
</element>
<element>
<terme >Award</terme>
<definition>
Sur la toile, une distinction pour des pages Web particulièrement bien faites. La prolifération de donateurs de distinctions autoproclamés qui ne visent qu'à attirer des visiteurs sur leurs propres pages, ont beaucoup nui à la notion de distinction sur le Web.
<![CDATA[<u>toto</u>]]>
</definition>
</element>
</glossaire>
Mon XSL:
Code:
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlnssl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl">
<xsl:template match="/">
<html>
<head>
</head>
<body>
<table border="1">
<tr>
<td><b>terme</b></td>
<td><b>Definition</b></td>
</tr>
<xsl:for-each select="glossaire/element">
<tr>
<td valign="top"><xsl:value-of select="php:functionString('test',string(terme),string(terme/@type))" disable-output-escaping="yes" /></td>
<td valign="top"><xsl:value-of select="definition" disable-output-escaping="yes" /></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Dans mon XSL, la variable @type me renvoie bien "aa" pour mon premier noeud terme (variable déclaré dans le XML) mais ne me renvoie rien pour le second, la ou j'attends la valeur par défaut issue du DTD.
A noter que je réalise la transformation avec les fonctions XSL de PHP5 via le DOM.
Ai je fais une erreur, ou cette manipulation est elle impossible?
Par avance merci de vos réponses.