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 :

Forcer l'existance d'une balise fermante


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 88
    Points : 72
    Points
    72
    Par défaut Forcer l'existance d'une balise fermante
    Bonjour.

    J'aimerais savoir comment je pourrais faire pour qu'une balise qui n'a pas de donnée entre son début et sa fin ne se génère pas en mais en Exemple
    XML Source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?xml version="1.0" encoding="UTF-8"?>
    <root>
    	<test name="blabla">
    </root>
    XSL Source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="root">
    	<xsl:element name="textarea">
    		<xsl:attribute name="name">
    			<xsl:value-of select="name"/>
    		</xsl:attribute>
    		<xsl:test value-of select="value">
    	</xsl:element>
    </xsl:template>
    XML Attendu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?xml version="1.0" encoding="UTF-8"?>
    <textarea name="blabla"></textarea>
    XML Obtenu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?xml version="1.0" encoding="UTF-8"?>
    <textarea name="blabla"/>
    J'ai fait des recherches dans la FAQ et sur le forum, je n'ai pas trouvé de problèmes semblables.
    Mon problème c'est que je ne peux pas utiliser la variante XSL qui consiste à écrire <textarea> directement dans le XSL. Parce que les attributs que je dois mettre sont dynamiques (il font appel à des call-template, mais seulement dans certains cas... ce n'est pas gérable). Je suis obligé de passer par <xsl:element>
    Je préfèrerai éviter de devoir toucher au xsl:output, on a déjà eu des soucis à ce niveau.

    Quelqu'un aurait une idée ?
    (d'avance)

    Joël.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    et si tu mets un avant de fermer l'element?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 88
    Points : 72
    Points
    72
    Par défaut
    Effectivement, j'avais essayé avec ça, mais si je mets <xsl:text></xsl:text> ca ne change rien, et si je mets <xsl:text> </xsl:text> (il y a un espace entre l'ouverture et la fermeture), j'obtiens bien <textarea> </textarea>, mais du coup j'ai un espace dans la zone de texte (normal, quoi ). Et ça, ça ne m'arrange pas du tout (" " != null...)

    Merci pour la réponse en tout cas.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Et en spécifiant un output :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:output cdata-section-elements="textarea"/>
    ?

    Ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <textarea><xsl:attribute name="name">
    			<xsl:value-of select="name"/>
    		</xsl:attribute>
    		<xsl:test value-of select="value">
    	</textarea>

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 88
    Points : 72
    Points
    72
    Par défaut
    Je ne connaissais pas cette option pour <xsl:output>, mais malheureusement elle n'a pas fonctionné.
    Je ne savais pas non plus qu'on pouvait utiliser <xsl:attribute> sans <xsl:element>, je pensais d'ailleurs qu'en faisant cela ca marcherait.
    Mais apparemment non. Je n'ai toujours qu'un <textarea/>, pas de <textarea></textarea>...

    Joël.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <xsl:element name="value">
        <xsl:text></xsl:text>
    </xsl:element>
    un <xsl:text> vide permet de lee faire (enable <value></value> element instead of <value />)

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    En fait tu peux utiliser <xsl:attribute> après n'importe quelle balise mais il faut aucun espace entre.
    Ben désolé je seche, peut être en encoder la balise en text et faire un disable output pour qu'a la sortie elle ne le soit plus, mais ça devient vachement tordu.

Discussions similaires

  1. Empêcher de modifier le texte existant d'une balise textarea
    Par Olivier Regnier dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 16/02/2009, 19h31
  2. Vérifier existence d'une balise XML
    Par aurelie83 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 18/07/2008, 16h21
  3. [HTML] Est-ce propre de marquer une balise fermante ?
    Par guidav dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 09/07/2008, 15h14
  4. [XPATH] Connaitre l'existence d'une balise xml
    Par john123 dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 02/05/2007, 17h01

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