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 :

Ajouter xmlsn et xmlns:xi comme attribut d'un élément


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 51
    Par défaut Ajouter xmlsn et xmlns:xi comme attribut d'un élément
    Bonjour à tous,

    On m'a fait une demande comme quoi, je devais ajouter 2 attributs dans un élément. Jusque là rien d'anormal, cependant ces attributs sont un peu spéciaux, ce sont des xmlns et xmlns: xsi.

    Je devrais avoir ceci en sortie :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Pack  Number="1" Sender="Moi" Receiver="Toi" xmlns="http:.../.../Truc.xsd" xmlns:xsi=".../.../XMLSchema-in">

    Evidemment lorsque mon xsl donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	<xsl:template match="/">
    		<xsl:element name="Pack">
    			<xsl:attribute name="Number">1</xsl:attribute>
    			<xsl:attribute name="Sender">Moi</xsl:attribute>
    			<xsl:attribute name="Receiver">Toi</xsl:attribute>
    			<xsl:attribute name="xmlns"><value-of select="'.../.../Truc.xsd'"/></xsl:attribute>
    			<xsl:apply-templates select="Document"/>
    		</xsl:element>

    Ca ne fonctionne pas, le terme xmlns est interdit comme nom d'attribut, et je n'ai même pas essayé avec le xmlns: xsi, de toute façon cela revient au même.

    Message d'erreur : illegal attribut name.

    Du coup, celui qui m'a fait cette demande veut ces données en attribut absolument, pour des raisons de recherche ou autre.
    Si jamais ce n'est pas possible j'essaierais de lui proposer de les mettre en stylesheet directement...

    Mes questions sont :

    -Est-ce possible ?
    -Si oui, comment forcer ces noms en attributs ?

    Merci à tous

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 51
    Par défaut
    Bon eh bien c'est pas du tout propre, mais le faire en brut fonctionne ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    		<Pack xmlns=".../.../Truc.xsd"  xmlns:xsi=".../.../XMLSchema-in">
    			<xsl:attribute name="Number">1</xsl:attribute>
    			<xsl:attribute name="Sender">Moi</xsl:attribute>
    			<xsl:attribute name="Receiver">Toi</xsl:attribute>
    			<xsl:apply-templates select="Document"/>
    		</Pack>

  3. #3
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Ben si c'est propre

    Par contre tu peux continuer de "rechercher" la valeur a mettre dans ces attributs de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    		<Pack xmlns="{'.../.../Truc.xsd'}"  xmlns:xsi="{'.../.../XMLSchema-in'}">
    			<xsl:attribute name="Number">1</xsl:attribute>
    			<xsl:attribute name="Sender">Moi</xsl:attribute>
    			<xsl:attribute name="Receiver">Toi</xsl:attribute>
    			<xsl:apply-templates select="Document"/>
    		</Pack>
    Le fait de mettre les accolades a le même effet que de faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="..."/>
    .
    Bon, là tu faisais un value-of sur du text (pas compris pourquoi d'ailleurs), mais si tu veux le faire sur un élément c'est possible de cette façon-là.

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

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

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Par défaut
    Ok ok

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Euh, non Loceka, les xmlns c'est une construction de XML pour déclarer des namespaces.

    Un moteur XSLT ne traitera pas les accolades dans un xmlns, en fait il ne les verra même pas, parce que le parseur ne les lui transmettra pas comme faisant partie d'un attribut, seulement d'un namespace déclaré dans le document.

    La bonne méthode serait de les déclarer dans la racine de la stylesheet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <xsl:stylesheet
      version = "1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns=".../.../Truc.xsd"
      xmlns:xsi=".../.../XMLSchema-in"
      >
    Ainsi elles s'appliqueront correctement à tous les éléments littéraux produits (il faut donc aussi faire <Pack> et non pas <xsl:element name="pack">).
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. ajout paragraphe dans le fichier comme Event Log
    Par faddou dans le forum Langage
    Réponses: 2
    Dernier message: 04/05/2007, 09h14
  2. [JDOM] Ajout d'une balise avec un attribut différent.
    Par Nidel dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 27/04/2007, 19h36
  3. Réponses: 4
    Dernier message: 24/04/2007, 12h14
  4. [XSLT]Mettre une variable comme attribut
    Par Oberown dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 29/09/2006, 10h47
  5. fonction comme attribut
    Par TERRIBLE dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 30/01/2006, 00h13

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