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 : récupération de la valeur d'attribut par défaut


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut XSLT : récupération de la valeur d'attribut par défaut
    Bonjour,

    J'ai un fichier xml, validé par un schéma. Dans ce fichier certains attributs sont optionnels et ont dans ce cas une valeur par défaut (définie dans le schéma).

    Ma question est la suivante : est-il possible dans la transformation xslt de récupérer la valeur par défaut?

    Merci d'avance


    Le fichier 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
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <?xml-stylesheet type="text/xsl" href="matransformation.xslt"?>
    <catalog xmlns="http://toto.fr"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://toto.fr/schema monschema.xsd"
    	xmlns:to="http://toto.fr">
    	<cd>
    		<title>Empire Burlesque</title>
    	</cd>
    	<cd to:quality="bad">
    		<title>Greatest Hits</title>
    	</cd>
    </catalog>
    monschema.xsd :
    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
    24
    25
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
            elementFormDefault="qualified" 
            targetNamespace="http://toto.fr"
            xmlns="http://toto.fr">
        <xs:element name="cd">
            <xs:complexType>
                <xs:sequence>
                <xs:element name="title" type="xs:string"/>
                </xs:sequence>
                <xs:attribute ref="quality" default="good" />
            </xs:complexType>
        </xs:element>
        <xs:element name="catalog">
            <xs:complexType>
                <xs:sequence>
                    <xs:element ref="cd" maxOccurs="unbounded"/>
                </xs:sequence>
            </xs:complexType>       
        </xs:element>
        <xs:attribute name="quality" type="xs:string">
        </xs:attribute>
     
    </xs:schema>
    matransformation.xsd:
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://toto.fr/schema monschema.xsd"
      xmlns:to="http://toto.fr">
     
     
    <xsl:template match="/">
      <html>
      <body>
        <table border="1">
          <xsl:for-each select="child::*">
    	     <xsl:apply-templates/>
          </xsl:for-each>
        </table>
      </body>
      </html>
    </xsl:template>
     
    <xsl:template match="*">
      <tr>
        <xsl:for-each select="child::*">
          <td>
            <xsl:value-of select="."/>
          </td>
        </xsl:for-each>
          <td>
            <xsl:value-of select="attribute::to:quality"/>
          </td>
      </tr>
    </xsl:template>
     
    </xsl:stylesheet>

  2. #2
    Membre émérite
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Points : 2 371
    Points
    2 371
    Par défaut
    Bonjour,

    je ne crois pas que cela soit possible.

    Note : on utilise souvent l'extention xsl pour un fichier XSLT et xsd pour un schéma, cela évite des confusions.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour la réponse, mais j'ai du coup encore deux-trois questions.

    Tout d'abord,pourquoi ce n'est pas possible ? Il me semble que le processeur xslt doit bien valider le schema, non ? Je sais que tous ne le font pas, ceux de nos navigateurs en particulier, mais pour les autres ?
    Je travaille sur Oxygen Developper et j'ai testé les différents transformers proposés, le résultat est toujours identique.

    Deuxième question : et si à la place d'être un attribut avec une valeur par défaut, c'est un élément, la réponse est-elle la même?

    Merci


    ps : erratum! mon fichier en local a bien entendu une extension xslt.

  4. #4
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    Lorsque le schéma est exprimé en XML (c'est le cas avec XML Schema, bien sûr), on peut toujours y accéder dans la transformation XSLT à l'aide de la fonction document().

    L'expression XPath pour localiser la valeur par défaut n'est pas si compliquée...

    -Alain

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bien sur. Mais j'aurais aimé pouvoir la récupérer via le document de données brutes. Tant pis, merci pour votre aide !

Discussions similaires

  1. [1.x] symfony1.4/valeur du formulaire par défaut
    Par sou1987 dans le forum Symfony
    Réponses: 3
    Dernier message: 23/04/2010, 19h31
  2. Valeur de parametre par défaut inopérante
    Par brunoSCP dans le forum SSRS
    Réponses: 0
    Dernier message: 13/02/2009, 17h10
  3. configuration de valeur du DSCP par défaut
    Par Mik ArBer dans le forum Réseau
    Réponses: 0
    Dernier message: 05/11/2008, 23h18
  4. PrinterSetupDialog.Execute - Valeur de retour par défaut
    Par Lung dans le forum Composants VCL
    Réponses: 10
    Dernier message: 03/04/2008, 07h58
  5. [XSLT] Comment attribuer une valeur à un attribut?
    Par citizen87 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 11/10/2006, 15h12

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