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 et indentation


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Par défaut xslt et indentation
    Bonjour,

    J'utilise xslt et xalan pour générer du code à partir de données xml. Je voudrais que dans le code que je génère il n'y ait pas d'indentation lorsque j'indente mon xsl. J'ai bien essayé de fixer l'attribut indent à no mais ça ne fonctionne pas.

    Voici ce que je fais :

    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
     
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    				xmlns:xalan="org.apache.xalan.xslt.extensions.Redirect" 
    				extension-element-prefixes="xalan" 
    				version="1.0">
    <xsl:output method="text" indent="no"/>
    <xsl:param name="outputDir"/>
     
    <xsl:template match="/">
    	<xsl:variable name="filename" select="concat($outputDir,'/temp.c')"/>
    	<xalan:write select="$filename">
    		Bonjour 
    	</xalan:write>
    </xsl:template>
     
    </xsl:stylesheet>
    Quelqu'un pourrait m'aider s'il vous plaît ?

  2. #2
    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 : 51
    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
    Bonjour,

    c'est pas normal, Xalan fonctionne très bien.

    N"aurais tu pas des caractères d'espace, ou de tabulations dans ton document Xml ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Par défaut
    Alors, j'ai essayé avec des documents xml sans aucune indentation ni espace et j'ai toujours le même résultat.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?xml version="1.0"?>
    <asb>
    <component name="x"/>
    </asb>
    me donne :

    ça peut paraître idiot comme problème mais je génère une grande quantité de code et avec une identation qui fait n'importe quoi c'est vraiment trop illisible.

  4. #4
    Membre Expert
    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
    Par défaut
    Ben, il y a tous ces espaces dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xalan:write select="$filename">
    		Bonjour 
    	</xalan:write>
    Et comme ta sortie est au format "text", je pense pas qu'ajouter un strip-spaces change quoi que ce soit (http://www.xmlplease.com/whitespace#s2.)

    T'aura plus vite fait d'appliquer un formateur de code adapté à ton langage de sortie.

    Sinon, t'es obligé d'utiliser xalan pour écrire dans plusieurs fichiers texte en une seul xsl-t?
    Moi, j'utiliserais plutôt Ant, ou je ferais un programme, pour piloter des transformation xsl-t standard vers autant de fichier qu'il faut.
    xalan:write c'est quand même assez spécifique

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Par défaut
    Bonjour,

    Tout d'abord merci pour votre aide. Finalement j'ai utilisé des balises value-of voilà ce que ça donne :

    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
     
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    				xmlns:xalan="org.apache.xalan.xslt.extensions.Redirect" 
    				extension-element-prefixes="xalan" 
    				version="1.0">
    <xsl:output method="text" indent="no"/>
    <xsl:param name="outputDir"/>
    <xsl:param name="qui"/>
     
    <xsl:template match="/">
    	<xsl:variable name="filename" select="concat($outputDir,'/temp.c')"/>
    	<xalan:write select="$filename">
    	<xslt:value of select="concat(
    		'#include &lt;stdio.h>&#xA;',
    		'main() {&#xA;',
    		'printf ("Bonjour',$qui,'!\n");&#xA;',
    		'}')"/>
    	</xalan:write>
    </xsl:template>
     
    </xsl:stylesheet>
    Je n'ai plus de tabulations dans mon fichier de sortie, je peux indenter mon code xslt comme je veux et celui-ci n'est pas trop illisible. Ils utilisent aussi des balises value-of pour générer leurs sources dans ce projet : http://www.openmask.org/wiki/index.p...hiers_XSLT_omk donc ça doit être une chose qui peut se faire.

    Pour répondre à Morbo oui je suis obligé d'utiliser xalan parce-que j'écris plusieurs fichiers avec un seul XSLT et pour ce qui est d'utiliser Ant je ne connais pas très bien cet outil mais merci de me l'avoir signalé je vais regarder comment il marche et si je ne ferai pas mieux effectivement de l'utiliser.

  6. #6
    Membre Expert
    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
    Par défaut
    Très bonne idée d'utiliser la fonction concat pour avoir qqchose de lisible en effet .

    Je me demande si utiliser le noeud xsl:text pour délimiter le text pourrait marcher.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <xsl:template match="/">
    	<xsl:variable name="filename" select="concat($outputDir,'/temp.c')"/>
    	<xalan:write select="$filename">
    	<xsl:text>#include &lt;stdio.h>
    </xsl:text>
    		<xsl:text>main() {
    </xsl:text>
    		<xsl:text>printf ("Bonjour',$qui,'!\n");
    </xsl:text>
    		<xsl:text>}</xsl:text>
    	</xalan:write>
    </xsl:template>

Discussions similaires

  1. [XSLT] Suppression indentation dans un noeud
    Par desperados3k dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 10/11/2008, 18h47
  2. [XSLT] indenter mon code
    Par Merfolk dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 14/12/2006, 12h15
  3. Réponses: 3
    Dernier message: 17/07/2006, 08h29
  4. XSLT -> HTML : formatage : indentation et retour a la lig
    Par jiib75 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 01/05/2004, 11h11
  5. [XSLT]position d'un element de valeur specifique
    Par squat dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 25/07/2002, 16h42

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