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]enlever les retours à la ligne lors de la génération d'un xml


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 18
    Points : 10
    Points
    10
    Par défaut [XSLT]enlever les retours à la ligne lors de la génération d'un xml
    bonjour

    j'ai un fichier xml auquel j'applique une feuille de style qui me génère un fichier xml dans lequel un retour chariot est généré pour chaque nouvelle balise;
    je souhaiterais obtenir une chaine de caractère sur une seule ligne ;
    mon xsl est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     <?xml version="1.0" encoding="ISO-8859-1" ?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" omit-xml-declaration = "yes"/>
    <xsl:template match="/">
    	<xsl:apply-templates select="//data"/>
    </xsl:template>
    <xsl:template match="data">
    <Placemark><Point><coordinates><xsl:value-of select="x"/>,<xsl:value-of select="y"/>,0</coordinates></Point></Placemark>        
    </xsl:template>
    </xsl:stylesheet>
    comme résultat j'ai par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     <Placemark>
    <Point>
    <coordinates>11.311,38.384,2</coordinates>
    </Point>
    </Placemark>
    je souhaiterais avoir tout sur une même ligne soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <Placemark><Point><coordinates>11.311,38.384,2</coordinates></Point></Placemark>
    quelqu'un a-t'il une idée ?

    merci

    Jean-Marie

  2. #2
    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
    De manière générale, un moteur XSL-T reproduit les sauts de ligne présents dans la feuille de style... or la vôtre n'a pas l'air d'en avoir elle-même...

    Cela me fait penser à une indentation automatique à la sauvegarde du XML ?

    Avez-vous bien vérifié avec un éditeur de texte basique la présence effective de ces sauts de ligne ?

    Dans quel environnement travaillez-vous ?

    Même si ce n'est pas bien propre, une simple substitution des sauts de ligne en rien sur le texte résultat...
    Formulaires XForms sur tous navigateurs sans extension à installer (architecture XRX) : http://www.agencexml.com/xsltforms/

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    effectivement avec XMLSpy ou bien xsltproc sur unix j'ai bien mon résultat sur une seule ligne : donc ce n'est pas un problème au niveau du xsl ;
    c'est avec mon programme java que j'ai détecté ce problème, donc sûrement au niveau de la transformation (classe Transformer) ; il y a peut-être un paramètre à gérer...

    je continue mon investigation

    Jean-Marie

  4. #4
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    tu as essayer en rajoutant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:output method="xml" omit-xml-declaration = "yes" indent="no"/>

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    çà ne change rien que je mette "indent" à "yes" ou à "no",
    j'obtiens toujours le résultat suivant :

    <Placemark>
    <Point>
    <coordinates>9.901,39.09,18</coordinates>
    </Point>
    </Placemark>

    avec le xsl suivant :
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <xsl:stylesheet version="1.0"
    xmlnssl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" omit-xml-declaration = "yes" indent="no"/>
    <xsl:template match="/">
    <xsl:apply-templates select="//data"/>
    </xsl:template>
    <xsl:template match="data"><Placemark><Point><coordinates><xsl:value-of select="x"/>,<xsl:value-of select="y"/>,18</coordinates></Point></Placemark></xsl:template>
    </xsl:stylesheet>

    peut-être j'ai qch à paramétrer du côté de la classe Transformer en java

    Jean-Marie

  6. #6
    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
    Montre nous ton code Java, tu peux en effet passez pas mal de paramètres au transformer : Transformer.setOutputProperty(java.lang.String, java.lang.String)

  7. #7
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    autant pour moi, j'avais initialisé certains paramètres dans la transformée, en particulier le OutputKeys.INDENT à "yes"....

    public void createTransform(File pXslSource) throws TransformerConfigurationException {
    TraceAppli.log("XmlTransform - createTransform : xsl file = "+pXslSource.getAbsolutePath());
    TransformerFactory factory = TransformerFactory.newInstance();
    StreamSource source_xsl = new StreamSource(pXslSource);
    transform = factory.newTransformer(source_xsl);
    transform.setOutputProperty(OutputKeys.VERSION,"1.0");
    transform.setOutputProperty(OutputKeys.ENCODING,"iso-8859-1");
    transform.setOutputProperty(OutputKeys.STANDALONE,"yes");
    transform.setOutputProperty(OutputKeys.INDENT,"yes");
    }
    le transform.setOutputProperty(OutputKeys.INDENT,"yes");
    annulait donc le indent="no" du xsl...

    étourderie ! faut d'ailleurs que je revois aussi les autres paramètres

    j'ai viré cette ligne

    merci pour m'avoir aidé

    Jean-Marie

  8. #8
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    tu l'ouvres avec quoi ton fichier xml obtenu?

Discussions similaires

  1. enlever les retours à la ligne dans une chaîne ?
    Par Sefrou dans le forum VBA Access
    Réponses: 1
    Dernier message: 20/11/2009, 20h21
  2. [VB.NET] Enlever les retours à la ligne dans une string
    Par adrix26 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 09/01/2007, 23h27
  3. EXCEL, enlever les retour a la ligne .
    Par Raideman dans le forum Excel
    Réponses: 1
    Dernier message: 30/11/2006, 17h25
  4. Enlever tous les retours à la ligne d'une table
    Par jehhej dans le forum Requêtes
    Réponses: 1
    Dernier message: 25/11/2006, 11h05
  5. [XSLT] prendre en compte les retours à la ligne
    Par mathieux dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 19/07/2006, 21h05

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