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

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par belette, 12 Décembre 2006.

  1. belette
    belette Nouveau WRInaute
    Inscrit:
    18 Janvier 2006
    Messages:
    2
    J'aime reçus:
    0
    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.
     
  2. Bacteries
    Bacteries WRInaute passionné
    Inscrit:
    27 Mai 2004
    Messages:
    1 253
    J'aime reçus:
    0
    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.
     
  3. belette
    belette Nouveau WRInaute
    Inscrit:
    18 Janvier 2006
    Messages:
    2
    J'aime reçus:
    0
    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!
     
  4. Bacteries
    Bacteries WRInaute passionné
    Inscrit:
    27 Mai 2004
    Messages:
    1 253
    J'aime reçus:
    0
    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.
     
Chargement...
Similar Threads - XML DTD XSL Forum Date
Plus de referencement avec XSL, DTD, XML, CSS Problèmes de référencement spécifiques à vos sites 25 Février 2004
DTD et <?xml version="1.0" encoding="UTF-8"?> Développement d'un site Web ou d'une appli mobile 22 Mai 2010
WordPress créer un sitemap xml avec YOAST SEO Crawl et indexation Google, sitemaps 14 Août 2022
tarifs flux xml programme TV Sport Développement d'un site Web ou d'une appli mobile 14 Novembre 2021
Gestion sitemap.xml sur un site multilingue Crawl et indexation Google, sitemaps 5 Octobre 2020
Parser en php un fichier xml Développement d'un site Web ou d'une appli mobile 12 Juin 2020
Supprimer le sitemap HTML et garder le XML Crawl et indexation Google, sitemaps 27 Avril 2020
Formule import xml Google sheet Débuter en référencement 6 Avril 2020
Besoin d'un sitemap.xml pour web app en REACT? Débuter en référencement 13 Février 2020
WordPress Yoast - Attachment-sitemap.xml à faire indexer ? Débuter en référencement 1 Février 2020
Parser un fichier xml : simplexml_load_file Développement d'un site Web ou d'une appli mobile 5 Avril 2019
Aide pour fichier XML e-commerce 28 Mars 2019
Comment intégrer un flux XML affiliation sur mon site WordPress ? Monétisation d'un site web 3 Octobre 2018
Quels outils pour générer un sitemap xml en ligne ? Référencement Google 20 Septembre 2018
Foaf, rdfs, purl, schema, sioct, xsd, xmlns signification de tout ces termes Référencement Google 22 Août 2018
Comment indiquer mon sitemap XML à Google ? Crawl et indexation Google, sitemaps 13 Août 2018
PHP : script pour mettre catalogue xml clickbank dans mysql Développement d'un site Web ou d'une appli mobile 6 Décembre 2017
Référencement et importation xml Référencement Google 23 Mai 2017
Google XML Sitemaps (wordpress). images en attachment Développement d'un site Web ou d'une appli mobile 10 Octobre 2016
Importance du crawl en cas de présence d'un sitemap XML dans Search Console Crawl et indexation Google, sitemaps 23 Juin 2016