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 2] Plat -> XML : Content is not allowed in prolog.


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 18
    Points : 10
    Points
    10
    Par défaut [XSLT 2] Plat -> XML : Content is not allowed in prolog.
    Bonjour à tous,

    j'ai un petit composant java qui tourne sur du xslt 2. Le but étant de prendre en charge un fichier plat, et de le transformer (vers plat ou xml).

    Lorsque je lance ma transformation, l'erreur suivante est retournée : SXXP0003: Error reported by XML parser: Content is not allowed in prolog.

    J'ai enlevé le BOM dans mon fichier xsl, mais l'erreur persiste. Une idée?

    ci dessous le contenu de mon xsl (gratté sur un tuto sur le net) :

    Code xml : 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet 
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
      xmlns:fn="fn" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      version="2.0" exclude-result-prefixes="xs fn" >
     
    <xsl:output indent="yes" encoding="US-ASCII" />
     
    <xsl:param name="pathToCSV" select="'file:///C:/Axway/CTR_ADC/LM_ADC_TPR_DIR/test1.csv'"/>
     
    <xsl:function name="fn:getTokens" as="xs:string+">
        <xsl:param name="str" as="xs:string" />
        <xsl:analyze-string select="concat($str, ',')" regex='(("[^"]*")+|[^,]*),'>
            <xsl:matching-substring>
            <xsl:sequence select='replace(regex-group(1), "^""|""$|("")""", "$1")' />
            </xsl:matching-substring>
        </xsl:analyze-string>
    </xsl:function>
     
    <xsl:template match="/" name="main">
        <xsl:choose>
        <xsl:when test="unparsed-text-available($pathToCSV)">
            <xsl:variable name="csv" select="unparsed-text($pathToCSV)" />
            <xsl:variable name="lines" select="tokenize($csv, ' ')" as="xs:string+" />
            <xsl:variable name="elemNames" select="fn:getTokens($lines[1])" as="xs:string+" />
            <root>
            <xsl:for-each select="$lines[position() &gt; 1]">
                <row>
                <xsl:variable name="lineItems" select="fn:getTokens(.)" as="xs:string+" />
     
                <xsl:for-each select="$elemNames">
                    <xsl:variable name="pos" select="position()" />
                    <elem name="{.}">
                    <xsl:value-of select="$lineItems[$pos]" />
                    </elem>
                </xsl:for-each>
                </row>
            </xsl:for-each>
            </root>
        </xsl:when>
        <xsl:otherwise>
            <xsl:text>Cannot locate : </xsl:text><xsl:value-of select="$pathToCSV" />
        </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
     
    </xsl:stylesheet>

  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,

    L'utilisation de XSLT dans ce contexte est un peu curieuse... Cela relève d'ailleurs plus de l'expérimentation, ou comme un genre de défi technique, plus que d'une technique viable pour faire de la transformation de fichier CSV vers du XML ; XSLT est avant tout conçu pour faire le contraire... Tu ne devrais pas avoir de mal à trouver sur le net une classe Java qui fasse de la conversion CSV->XML, ou au pire à en coder une, ce qui n'est pas bien sorcier.

    Quoi qu'il en soit, il faut que tu fournisses en entrée un fichier XML, fût-il bidon, pour qu'il soit parsé et que le template "/" soit déclenché. Quelque chose dans ce genre :
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour , je travaille avec davedenice sur ce projet.

    Voici un lien indiquant la transformation xslt2 à partir d'un fichier csv
    http://ajwelch.blogspot.com/2007/02/...n-xslt-20.html

    si cela peut aider...

Discussions similaires

  1. [SAX] Erreur "org.xml.sax.SAXParseException Content is not allowed in prolog."
    Par Wizard50 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 17/06/2011, 15h10
  2. Content is not allowed in prolog
    Par zulad dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 17/07/2007, 19h31
  3. Content is not allowed in prolog
    Par Battosaiii dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/11/2006, 11h02
  4. [Xerces] SAX Exception Content is not allowed in prolog
    Par be_tnt dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 18/10/2006, 08h10
  5. [Castor] Content is not allowed in prolog.
    Par marsupilamuf dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 01/09/2004, 07h59

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