Formation par Olivier Duffez

Formation au référencement par Olivier Duffez, créateur de WebRankInfo !
Une formule efficace alliant théorie et pratique, avec une haute disponibilité des intervenants
Cette formule a déjà convaincu plusieurs centaines d'entreprises, pourquoi pas vous ?
Réservez vite votre place en ligne (convention possible pour imputer sur le budget formation)

Formation référencement Marseille

XML/DTD/XSL: Accès à un attribut du DTD depuis un XSL

Poster un nouveau sujet Imprimer cette discussion    Forum -> Développement d'un site Web   Les dernières discussions de ce forum sont disponibles au format RSS
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 
belette
Nouveau WRInaute

Inscrit le: 18 Jan 2006
Messages: 3

URL permanente de ce messagePosté le : Mar Déc 12, 2006 14:28    Sujet du message: XML/DTD/XSL: Accès à un attribut du DTD depuis un XSL

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 :
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.
 
belette
Bacteries
WRInaute accro
WRInaute accro

Inscrit le: 27 Mai 2004
Messages: 1126
Localisation: France - Nantes

URL permanente de ce messagePosté le : Mar Déc 12, 2006 17:13    Sujet du message: XML/DTD/XSL: Accès à un attribut du DTD depuis un XSL

La DTD ne sert que pour valider (ou définir comment doit être) un XML.
La feuille XSL ne te permet que la transformation de ton XML, rien à voir avec la DTD.

Donc si ton fichier XML n'a de valeur à ton attribut "terme" il n'est théoriquement pas valide vu qu'il ne suit pas ta DTD, il devrait y avoir "toto" par défaut.

En gros ta DTD est une norme à suivre c'est tout. (a moins que d'autres possibilités existent, mais là connais pas).
D'ailleurs une DTD ou un RelaxNG n'est pas obligatoire.
 
Bacteries Visiter le site web du posteur
belette
Nouveau WRInaute

Inscrit le: 18 Jan 2006
Messages: 3

URL permanente de ce messagePosté le : Mar Déc 12, 2006 17:20    Sujet du message: XML/DTD/XSL: Accès à un attribut du DTD depuis un XSL

Oui effectivement c'est ce que j'ai finalement cru comprendre... d'autant plus que les DTD sont plus ou moins obsolète et "remplacés" maintenant par les schéma XML.
Ces derniers sont plus pointus au niveau de la définition des attributs, mais j'ai cru comprendre également que l'intérêt global du schéma XML est le même que le DTD.
On peut toujours s'en servir pour valider un XML mais je vois pas bien l'utilité s'il n'apporte pas un minimum d'héritage à l'XML...
Merci quand même de la réponse!
 
belette
Bacteries
WRInaute accro
WRInaute accro

Inscrit le: 27 Mai 2004
Messages: 1126
Localisation: France - Nantes

URL permanente de ce messagePosté le : Mer Déc 13, 2006 9:51    Sujet du message: XML/DTD/XSL: Accès à un attribut du DTD depuis un XSL

Bah c'est pas un langage de programmation. La DTD, XML schema, relaxNG, ... ça permet de vérifier qu'un XML suit une norme, vu que c'est destiné à un échange il est préférable que les documents générés soient identique (les RSS par exemple).
C'est donc à toi de faire en sorte que ton générateur d'XML soit valide.
 
Bacteries Visiter le site web du posteur
 
Montrer les messages depuis:   
Revenir en haut    Forum -> Développement d'un site Web Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1 - 
Connexion
Nom d'utilisateur:    Mot de passe:      Se connecter automatiquement à chaque visite    

A lire dans l'actualité sur WRI :

En savoir plus : , , , , .

CLIQUEZ ICI pour vous inscrire à WebRankInfo (forum, annuaire, outils...)

Connexion

© 2001-2005 phpBB Group, support français
Personnalisation : WebRankInfo ™


 ODP  Firefox  Alsacreations  annuaire webmaster Yagoort