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] Suppression indentation dans un noeud


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 4
    Points : 5
    Points
    5
    Par défaut [XSLT] Suppression indentation dans un noeud
    Bojour tout le monde,
    Je viens tout juste de commencer avec XML/XSL. J'ai une petite question car je n'arrive pas à m'en sortir.
    Je vous expose ci-dessous le problème : j'ai un fichier XML dans lequel j'essaie de mettre un peu d'ordre pour plus de visibilité. En fait je veux supprimer les espaces entre les balises au sein d'un noeud particulier. Je pensais pouvoir passer directement par une transformation XSL plutôt que de coder ça en C# ou autre. Ci dessous un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <adulte>
    <conjoint>
    <nom>Marie</nom>
    </conjoint>
    <enfant>
    <nom>patricia</nom>
    <age>6</age>
    </enfant>
    <enfant>
    <nom>Maxence</nom>
    <age>14</age>
    </enfant>
    </adulte>
    Ce que je cherche à obtenir est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <adulte>
    <conjoint>
    <nom>Marie</nom>
    </conjoint>
    <enfant><nom>patricia</nom><age>6</age></enfant>
    <enfant><nom>Maxence</nom><age>14</age></enfant>
    </adulte>
    Quelqu'un pourrait-il m'aider ? Merci.

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    XSLT conserve par défaut tous les caractères "blancs" (espaces, sauts de ligne, tabulations, etc.) du document source, et les restitue dans le document de sortie, à moins que le développeur en décide autrement.

    Il est possible de changer ce comportement par défaut à l'aide de la balise strip-space qui permet de spécifier au processeur XSLT quels éléments du document source doivent être débarassés de leurs espaces. La balise preserve-space a le comportement inverse, et pour les deux il est possible d'utiliser le caractère joker * pour désigner tous les éléments. Dans ton cas, il suffira de faire :
    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 version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="xml" version="1.0" encoding="UTF-8"/>
    	<xsl:strip-space elements="enfant"/>
    	<xsl:template match="*">
    		<xsl:copy>
    			<xsl:apply-templates />
    		</xsl:copy>
    	</xsl:template>
    </xsl:stylesheet>
    Une mise en garde cependant : tous les processeurs XSLT ne respectent pas à la lettre les recommandations du W3C concernant la gestion des caractères blancs, certains ont tendance à les supprimer d'office quelles que soient les valeurs de strip-space ou preserve-space. C'est le cas de MSXML 4, par exemple. Il vaut mieux utiliser des processeurs réputés pour leur respect des spécifications W3C, comme Xalan ou Saxon notamment.

  3. #3
    Futur Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Merci GrandFather.
    J'ai appliqué la transformation en question avec succès dans une petite appli .Net. Ca a apporté la solution à mon problème.
    Merci encore une fois.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSLT] somme d'attributs dans des noeud différents
    Par ze_pat dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/12/2009, 13h58
  2. [XSLT] Fichier HTML vide si noeud dans template enfant
    Par strat0 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 26/06/2007, 12h28
  3. [XSLT]Circuler dans les noeuds
    Par boumbomagic dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 14/06/2007, 11h59
  4. [XSLT] parser du texte dans un noeud
    Par Raumfahrerralf dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 16/03/2007, 13h00
  5. Réponses: 10
    Dernier message: 02/02/2007, 16h00

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