Cliquez ici.
Accueil
 chercher             Plan du site             Info (English version) 
L'histoire de XML s'écrit en ce moment même. XMLfr vous aide à la suivre et à en dégager les tendances.Les listes de discussions XMLfr sont à votre disposition pour réagir sur nos articles ou simplement poser une question.Si vous ètes passionnée(e) par XML, pourquoi ne pas en faire votre métier ?XMLfr n'est heureusement pas le seul site où l'on parle de XML. Découvrez les autres grâce à XMLfr et à l'ODP.Les partenaires grâce auxquels XMLfr peut se développer.Pour tout savoir sur XMLfr.XMLfr sans fil, c'est possible !Pour ceux qui veulent vraiment en savoir plus sur XML.L'index du site.
 Commentaires et questions non techniques.Commentaires et questions techniques.

 
Cliquez ici.

xml tech : Technologies XML

[xml-tech] RE : Re: Comment faire le parsing avec XSLT de fichiers plats ?

[xml-tech] RE : Re: Comment faire le parsing avec XSLT de fichiers plats ?

Auteur: Aguero, Dimitri <dimitri.aguero@fr.unisys.com>
Date: 03/02/2006 - 09:24

Devant tant de sagesse je ne peux que m'incliner respectueusement...
Merci beaucoup !
Dimitri
qui a pour s'amuser tout le week-end.
PS: C'est pour la bonne cause. Je suis en train de traduire un logiciel de calcul d'antennes pour radioamateurs (MMANA) au français, du pur freeware, donc du volontariat. J'ai déjà traduit le logiciel vers l'espagnol, un travail de fous, et j'ai trouvé que c'est écoeurant de passer des heures pour tout recommencer à nouveau lors de la sortie d'une nouvelle version... D'où mon intérêt de pouvoir faire un "diff" intelligent de la structure des messages et des menus, sous la forme de passage à une forme pivot en XML.
 
 

________________________________

De: xml-tech-bounce@xmlfr.org de la part de Eric van der Vlist
Date: ven. 03/02/2006 10:22
À: xml-tech@xmlfr.org
Objet : [xml-tech] Re: Comment faire le parsing avec XSLT de fichiers plats ?

Bonjour,
Le vendredi 03 février 2006 à 09:50 +0100, Aguero, Dimitri a écrit :
> Bonjour,
> Toujours en apprentissage quatre ans après avoir rejoint cette liste,

:-)

> je me demandais s'il était possible de parser un fichier plat de
> cette structure avec XSLT:
>
> **********************************************************************
>
> Titre 1
>
> Item1 Valeur 1 valeur 2 valeur 3.... valeur N
>
> Item2 valeur101 valeur 102 valeur 103 valeur 10n
>
> Titre 2
>
> Item1 Valeur 1 valeur 2 valeur 3.... valeur N
>
> Item2 valeur101 valeur 102 valeur 103 valeur 10n
>
> (....)

En XSLT 1.0, cela ne sera possible que si cette séquence est inclue dans
un document XML, par exemple :

<?xml version="1.0" encoding="UTF-8"?>
<racine><![CDATA[
Titre 1
Item1 Valeur 1 valeur 2 valeur 3.... valeur N
Item2 valeur101 valeur 102 valeur 103 valeur 10n
Titre 2
Item1 Valeur 1 valeur 2 valeur 3.... valeur N
Item2 valeur101 valeur 102 valeur 103 valeur 10n
]]></racine>

Si ce n'est pas le cas, il faudrait que vous rajoutiez les lignes
correspondantes avant et après le text pour en faire un document XML.

L'utilisation d'une section CDATA permet alors d'éviter la plupart des
problèmes liés à des caractères spéciaux.

Il faut toutefois noter que :

      * un "]]" dans le texte poserait problème.
      * l'encodage doit correspondre à celui qui est déclaré
      * les caractères de contrôles sont, quoique vous fassiez, interdit
        en XML.

> **********************************************************************
>
> en
>
> **********************************************************************
>
> <Titre1>
>
> <item1>Valeur 1 valeur 2 valeur 3.... valeur N </item1>
>
> <item2>valeur101 valeur 102 valeur 103 valeur 10n </item1>
>
> </Titre1>
>
> **********************************************************************

Vous éliminez ce qui est après "Titre 2"?

Pour faire ce type de transformation en XSLT 1.0, il faut combiner les
templates nommés et les rares fonctions XPath portant sur des chaînes de
caractères, ce qui donne des choses du style :

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="/racine">
        <xsl:param name="texte" select="substring-after(., '&#xa;')"/>
        <xsl:element name="{translate(substring-before($texte, '&#xa;'), ' ', '')}">
            <xsl:call-template name="items">
                <xsl:with-param name="texte" select="substring-after($texte, '&#xa;')"/>
            </xsl:call-template>
        </xsl:element>
    </xsl:template>
    <xsl:template name="items">
        <xsl:param name="texte"/>
        <xsl:variable name="ligne" select="substring-before($texte, '&#xa;')"/>
        <xsl:if test="contains($ligne, ' ')">
            <xsl:element name="{substring-before($ligne, ' ')}">
                <xsl:value-of select="substring-after($ligne, ' ')"/>
            </xsl:element>
            <xsl:call-template name="items">
                <xsl:with-param name="texte" select="substring-after($texte, '&#xa;')"/>
            </xsl:call-template>
        </xsl:if>
    </xsl:template>
</xsl:stylesheet>

Je ne suis pas un grand partisan de XSLT 2.0, mais il faut reconnaître
que c'est un domaine où les nouvelles fonctions introduites par la
spécification simplifient énormément les choses.

Cordialement,

Eric van der Vlist

--
GPG-PGP: 2A528005
Don't you think all these XML schema languages should work together?
                                                         http://dsdl.org <http://dsdl.org/> 
------------------------------------------------------------------------
Eric van der Vlist       http://xmlfr.org <http://xmlfr.org/>             http://dyomedea.com <http://dyomedea.com/> 
(ISO) RELAX NG   ISBN:0-596-00421-4 http://oreilly.com/catalog/relax
(W3C) XML Schema ISBN:0-596-00252-1 http://oreilly.com/catalog/xmlschema
------------------------------------------------------------------------
-- Attached file included as plaintext by Ecartis --
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
iD8DBQBD4yDNDvn+ZCpSgAURAuIUAKCQtBAvsVGoueR1SpvrDts99tHQ6QCfdtoX
/vEF5YWQUrhfrtDC+nINgfQ=
=sRQH
-----END PGP SIGNATURE-----
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org <http://xmlfr.org/> ).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
-- Binary/unsupported file stripped by Ecartis --
-- Type: application/ms-tnef
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de 
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant 
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Received on Fri Feb 3 10:27:31 2006

Archive générée par hypermail 2.1.8 le 28/02/2006 - 20:42 UTC

webmaster@xmlfr.org

 

xml tech

Discussions techniques au sujet de XML.

Cette liste est à votre disposition pour discuter en français de tout sujet technique lié à XML.



Devenez rédacteur <XML>fr et contribuez au développement du xml francophone !
Les documents publiés sur ce site le sont sous licence "Open Content"
Conception graphique
  l.henriot@online.fr  

Conception, réalisation et hébergement