IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

[XSLT][PHP] Accès à la valeur par défaut d'un attribut (d'après la DTD)


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 3
    Par défaut [XSLT][PHP] Accès à la valeur par défaut d'un attribut (d'après la DTD)
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <!ELEMENT glossaire     (element)*>
    <!ELEMENT element     (terme,definition)>
    <!ELEMENT terme     (#PCDATA)>
    <!ATTLIST terme type CDATA "toto">
    <!ELEMENT definition  (#PCDATA)>
    Mon XML
    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
    <?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 : 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
    <?xml version="1.0" encoding="iso-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="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.

    Nicolas DEZORTHES

  2. #2
    Membre émérite
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Par défaut
    En faite j'espère ne pas dire de bêtises mais pour moi ton fichier xml n'est pas bon: en faite quand tu indiques via ta dtd que type aura pour valeur par défaut toto cela n'est qu'a titre indicatif, le parser ne prendra pas cette valeur même si l'attribut type n'existe pas.

    enfin je crois

  3. #3
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Citation Envoyé par fraoustin
    En faite j'espère ne pas dire de bêtises mais pour moi ton fichier xml n'est pas bon: en faite quand tu indiques via ta dtd que type aura pour valeur par défaut toto cela n'est qu'a titre indicatif, le parser ne prendra pas cette valeur même si l'attribut type n'existe pas.
    ce n'est pas à titre indicatif, si le parseur est validant, cette valeur par défaut ressortira. A condition que la validation soit activée, ce qui s'établit avec la propriété validateOnParse de DOMDocument (voir http://www.php.net/manual/fr/ref.dom.php )
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  4. #4
    Membre émérite
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Par défaut
    merci de cette réponse car pour ma part ce que j'ai écrit je l'ai déduit de mon expérience mais là tu m'ouvres des portes .
    encore une fois merci

Discussions similaires

  1. [JAXB]Comment faire apparaitre dans le xsd une valeur par défaut pour un attribut
    Par Marcos Ickx dans le forum Persistance des données
    Réponses: 0
    Dernier message: 07/01/2010, 18h38
  2. Valeur par défaut d'un attribut
    Par alt3 dans le forum Eclipse Platform
    Réponses: 0
    Dernier message: 22/05/2008, 14h07
  3. ACCES-Formulaire-valeur par défaut issue d'1 table?
    Par zigzag7892 dans le forum VBA Access
    Réponses: 1
    Dernier message: 26/10/2007, 11h21
  4. valeur par défaut d'une attribut date
    Par didi dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 10/08/2007, 16h11
  5. Réponses: 3
    Dernier message: 20/09/2005, 08h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo