Re: fichier tableur xml

2016-03-11 Par sujet Nicolas BUONOMO

On 03/11/2016 10:52 AM, Yves Rutschle wrote:

On Thu, Mar 10, 2016 at 06:57:46PM +0100, Bernard Schoenacker wrote:

le document ne se laisse pas faire :

xsltproc --debug jmb1.xml

compilation error: file jmb1.xml line 1 element root
xsltParseStylesheetProcess : document is not a stylesheet


Bah oui, tu ne peux pas faire une ligne de commande
aléatoire et espérer que ça fonctionne.

xsltproc stylesheet.xslt jmb1.xml

Avec ce qu'il faut dans la feuille XSLT pour transformer le
XML en CSV.

Mais libre à toi de faire des regexps.
http://blog.codinghorror.com/parsing-html-the-cthulhu-way/

Y.


+1

Pour transformer du xml rien de mieux que xslt, et ce n'est pas plus 
compliqué que les expressions régulières. Je peux donner un coup de main 
pour démarrer.


Le xml produit à l'air assez sophistiqué, cela ressemble un peu à du 
docbook pour la construction de la table et je suis assez surpris qu'il 
n'existe pas un schéma et une feuille de styles associés.


Nicolas



Re: fichier tableur xml

2016-03-11 Par sujet Yves Rutschle
On Thu, Mar 10, 2016 at 06:57:46PM +0100, Bernard Schoenacker wrote:
> le document ne se laisse pas faire :
> 
> xsltproc --debug jmb1.xml
> 
> compilation error: file jmb1.xml line 1 element root
> xsltParseStylesheetProcess : document is not a stylesheet

Bah oui, tu ne peux pas faire une ligne de commande
aléatoire et espérer que ça fonctionne.

xsltproc stylesheet.xslt jmb1.xml

Avec ce qu'il faut dans la feuille XSLT pour transformer le
XML en CSV.

Mais libre à toi de faire des regexps.
http://blog.codinghorror.com/parsing-html-the-cthulhu-way/

Y.



Re: fichier tableur xml

2016-03-10 Par sujet Daniel Caillibaud
Le 11/03/16 à 02:26, Bernard Schoenacker  a écrit :

BS> sed -i 's//,/g' 's/<\/block>/,/g' raw

Il me semble que la bonne syntaxe serait plutôt

sed -i -e 's/pattern/repl/g; s/pattern2/repl2/g' fichier

-- 
Daniel

On ne peut pas juger quelqu'un à ses fréquentations ;
ne perdons pas de vue que Judas avait des amis irréprochables.
Tristan Bernard



Re: fichier tableur xml

2016-03-10 Par sujet Pierre Malard
Le 11 mars 2016 à 02:26, Bernard Schoenacker  a 
écrit :
> 
> Le Thu, 10 Mar 2016 21:24:42 +0100,
> Pierre Malard  a écrit :
> 
>> Et un truc du genre :
>>  sed -i ’s/\/*}/,/g’
>> ça ne fonctionnerait pas ?
> 
> bonjour,
> 
> merci pierre pour le résultar qui ne fonctionne pas
> 
> pour ma part avec 2 passes c'est bon :
> 
> sed -i 's//,/g' raw |sed -i  's/<\/block>/,/g'
> 
> mais j'eusse préféré quelque chose dans le style :
> 
> sed -i 's//,/g' 's/<\/block>/,/g' raw
> 
> mais la 2e ne passe pas du fait qu'il manque un caractère de séparation
> mais lequel?
> 
> ci joint le fichier raw
> 
> slt
> bernard

Je n’avais pas bien compris ton problème. En fait, tu ne veux pas seulement 
transformer les blocs «  » et «  » en virgule. Dans ce cas, le 
script :
sed -i 's/<\/*block>/,/g’ FICHIER
fonctionne parfaitement.

Ce que tu veux, c’est transformer un XML en CSV, c’est à dire transformer tes 
fameux blocs en virgule. Mais pas seulement les blocs mais aussi le passage à 
la ligne précédent. Un truc du genre :
sed -i ’s/FIN_LIGNE*<\/*block>/,/g’ FICHIER
ça, ça ne fonctionne pas parce que sed, comme ed, est un simple « éditeur de 
ligne ». Il ne traite que la ligne, pas plus.
Il faudrait mettre en buffer les données jusqu’à trouver le déclencheur voulu 
pour faire un traitement comme tu le désire. Un langage comme « awk » me semble 
mieux adapté pour ça.

Comme je suis un grand fainéant et que j’ai horreur de refaire ce qui a déjà 
été très bien fait, j’aurais tendance à te conseiller l’excellente lecture du 
blog de Stéphane Bortzmeyer qui traite du sujet :
http://www.bortzmeyer.org/xml-to-csv.html

Cordialement


--
Pierre Malard

  « La mondialisation de l'économie a, « en moyenne », eu pour conséquence
 l'augmentation du niveau de vie « moyen ».
 Un homme avec la tête dans un four et les jambes dans un congélateur a,
 « en moyenne », une température corporelle idéale... »
 Philippe Val - France Inter 09/04/2001
   |\  _,,,---,,_
   /,`.-'`'-.  ;-;;,_
  |,4-  ) )-,_. ,\ (  `'-'
 '---''(_/--'  `-'\_)   πr

perl -e '$_=q#: 3|\ 5_,3-3,2_: 3/,`.'"'"'`'"'"' 5-.  ;-;;,_:  |,A-  ) )-,_. ,\ 
(  `'"'"'-'"'"': '"'"'-3'"'"'2(_/--'"'"'  `-'"'"'\_): 
24πr::#;y#:#\n#;s#(\D)(\d+)#$1x$2#ge;print'
- --> Ce message n’engage que son auteur <--



signature.asc
Description: Message signed with OpenPGP using GPGMail


Re: fichier tableur xml

2016-03-10 Par sujet Bernard Schoenacker
Le Thu, 10 Mar 2016 21:24:42 +0100,
Pierre Malard  a écrit :

> Et un truc du genre :
>   sed -i ’s/\/*}/,/g’
> ça ne fonctionnerait pas ?

bonjour,

merci pierre pour le résultar qui ne fonctionne pas

pour ma part avec 2 passes c'est bon : 

sed -i 's//,/g' raw |sed -i  's/<\/block>/,/g'

mais j'eusse préféré quelque chose dans le style :

sed -i 's//,/g' 's/<\/block>/,/g' raw

mais la 2e ne passe pas du fait qu'il manque un caractère de séparation
mais lequel?

ci joint le fichier raw

slt
bernard

Re: fichier tableur xml

2016-03-10 Par sujet Pierre Malard
Un petit peu gros doigts, ce serait mieux avec :
sed -i ’s/<\/*block>/,/g'

> Le 10 mars 2016 à 21:24, Pierre Malard  a écrit :
> 
> Et un truc du genre :
>   sed -i ’s/\/*}/,/g’
> ça ne fonctionnerait pas ?
> 
>> Le 10 mars 2016 à 20:09, Bernard Schoenacker  a 
>> écrit :
>> 
>> Le Thu, 10 Mar 2016 19:43:16 +0100,
>> Bernard Schoenacker  a écrit :
>> 
>>> Le Thu, 10 Mar 2016 19:26:38 +0100,
>>> Daniel Huhardeaux  a écrit :
>>> 
 Le 10/03/2016 18:57, Bernard Schoenacker a écrit :
 
 [...]
> steve à essayé et à trouvé l'astuce
 
 Il serait bon de la partager ...
 
>>> 
>>> bonjour,
>>> 
>>> comment déposé le fichier exemple sur la liste pour que les gens
>>> comprennent ?
>>> 
>>> en premier steve a employé ceci :
>>> 
>>>  extract.py
>>> 
>>> # !/usr/bin/env python3
>>> # -*- coding : utf-8 -*-
>>> 
>>> from bs4 import BeautifulSoup
>>> 
>>> f = open("fichier.xml")
>>> xml = f.read()
>>> soup = BeautifulSoup(xml)
>>> 
>>> for p in soup.find_all('block'):
>>>   print(p)
>>> 
>>> 
>>> 
>>> ensuite :
>>> 
>>> # !/bin/bash
>>> 
>>> # echo
>>> Num,Nom,Naissance,Bapteme,Mariage,Décès,Inhumation,Profession,Résidence
 out.csv
>>> 
>>> x=1
>>> while read f
>>> do
>>> # il y a 9 champs, donc au 9e, on passe à la ligne
>>> if [ $x -lt 9 ]
>>> then
>>>   echo -n "$f",
>>>   # le -n permet de ne pas passer à la ligne
>>>   x=$[x+1]
>>> else
>>> printf "\n"
>>> x=1
>>> fi
>>> done>> 
>>> 
>>> ensuite je cite :
>>> 
>>> Ensuite, j'ai ouvert le fichier dans libreoffice pour
>>> facilement supprimer les  et  qui trainaient (oui je
>>> sais, j'aurais pu le faire avec sed, mais je suis flemmard…)
>>> 
>>> 
>>> slt
>>> bernard
>> 
>> bonjour,
>> 
>> j'ai une qustion annexe qui facilitera le travail avec sed ...
>> 
>> enlever le premier  :
>> 
>> sed -i 's//,/g'
>> 
>> mais pour le deuxième je fais :
>> 
>> sed -i  's/<\/block>/,/g
>> 
>> 
>> commentr le faire en une seule opération avec sed ?
>> 
>> 
>> slt
>> bernard
> 
> --
> Pierre Malard
> 
> À propos de nos chers économistes :
>«Les habiles, dans notre siècle, se sont décernés a eux-mêmes la
>qualification d’homme d’état. [...] ces politiques, ingénieux
>a mettre aux fictions profitables un masque de nécessité.»
> Victor Hugo : “Les misérables”, La pléiade, Gallimard, P. 843
> 
>   |\  _,,,---,,_
>   /,`.-'`'-.  ;-;;,_
>  |,4-  ) )-,_. ,\ (  `'-'
> '---''(_/--'  `-'\_)   πr
> 
> perl -e '$_=q#: 3|\ 5_,3-3,2_: 3/,`.'"'"'`'"'"' 5-.  ;-;;,_:  |,A-  ) )-,_. 
> ,\ (  `'"'"'-'"'"': '"'"'-3'"'"'2(_/--'"'"'  `-'"'"'\_): 
> 24πr::#;y#:#\n#;s#(\D)(\d+)#$1x$2#ge;print'
> - --> Ce message n’engage que son auteur <--
> 

--
Pierre Malard

   |\  _,,,---,,_
   /,`.-'`'-.  ;-;;,_
  |,4-  ) )-,_. ,\ (  `'-'
 '---''(_/--'  `-'\_) πr

perl -e '$_=q#: 3|\ 5_,3-3,2_: 3/,`.'"'"'`'"'"' 5-.  ;-;;,_:  |,A-  ) )-,_. ,\ 
(  `'"'"'-'"'"': '"'"'-3'"'"'2(_/--'"'"'  `-'"'"'\_): 
24πr::#;y#:#\n#;s#(\D)(\d+)#$1x$2#ge;print'
- --> Ce message n’engage que son auteur <--



signature.asc
Description: Message signed with OpenPGP using GPGMail


Re: fichier tableur xml

2016-03-10 Par sujet Pierre Malard
Et un truc du genre :
sed -i ’s/\/*}/,/g’
ça ne fonctionnerait pas ?

> Le 10 mars 2016 à 20:09, Bernard Schoenacker  a 
> écrit :
> 
> Le Thu, 10 Mar 2016 19:43:16 +0100,
> Bernard Schoenacker  a écrit :
> 
>> Le Thu, 10 Mar 2016 19:26:38 +0100,
>> Daniel Huhardeaux  a écrit :
>> 
>>> Le 10/03/2016 18:57, Bernard Schoenacker a écrit :
>>> 
>>> [...]
 steve à essayé et à trouvé l'astuce
>>> 
>>> Il serait bon de la partager ...
>>> 
>> 
>> bonjour,
>> 
>> comment déposé le fichier exemple sur la liste pour que les gens
>> comprennent ?
>> 
>> en premier steve a employé ceci :
>> 
>>  extract.py
>> 
>> # !/usr/bin/env python3
>> # -*- coding : utf-8 -*-
>> 
>> from bs4 import BeautifulSoup
>> 
>> f = open("fichier.xml")
>> xml = f.read()
>> soup = BeautifulSoup(xml)
>> 
>> for p in soup.find_all('block'):
>>print(p)
>> 
>> 
>> 
>> ensuite :
>> 
>> # !/bin/bash
>> 
>> # echo
>> Num,Nom,Naissance,Bapteme,Mariage,Décès,Inhumation,Profession,Résidence
>>> out.csv
>> 
>> x=1
>> while read f
>> do
>> # il y a 9 champs, donc au 9e, on passe à la ligne
>>  if [ $x -lt 9 ]
>>  then
>>echo -n "$f",
>># le -n permet de ne pas passer à la ligne
>>x=$[x+1]
>>  else
>>  printf "\n"
>>  x=1
>>  fi
>> done> 
>> 
>> ensuite je cite :
>> 
>> Ensuite, j'ai ouvert le fichier dans libreoffice pour
>> facilement supprimer les  et  qui trainaient (oui je
>> sais, j'aurais pu le faire avec sed, mais je suis flemmard…)
>> 
>> 
>> slt
>> bernard
> 
> bonjour,
> 
> j'ai une qustion annexe qui facilitera le travail avec sed ...
> 
> enlever le premier  :
> 
> sed -i 's//,/g'
> 
> mais pour le deuxième je fais :
> 
> sed -i  's/<\/block>/,/g
> 
> 
> commentr le faire en une seule opération avec sed ?
> 
> 
> slt
> bernard

--
Pierre Malard

À propos de nos chers économistes :
«Les habiles, dans notre siècle, se sont décernés a eux-mêmes la
qualification d’homme d’état. [...] ces politiques, ingénieux
a mettre aux fictions profitables un masque de nécessité.»
 Victor Hugo : “Les misérables”, La pléiade, Gallimard, P. 843

   |\  _,,,---,,_
   /,`.-'`'-.  ;-;;,_
  |,4-  ) )-,_. ,\ (  `'-'
 '---''(_/--'  `-'\_)   πr

perl -e '$_=q#: 3|\ 5_,3-3,2_: 3/,`.'"'"'`'"'"' 5-.  ;-;;,_:  |,A-  ) )-,_. ,\ 
(  `'"'"'-'"'"': '"'"'-3'"'"'2(_/--'"'"'  `-'"'"'\_): 
24πr::#;y#:#\n#;s#(\D)(\d+)#$1x$2#ge;print'
- --> Ce message n’engage que son auteur <--



signature.asc
Description: Message signed with OpenPGP using GPGMail


Re: fichier tableur xml

2016-03-10 Par sujet Bernard Schoenacker
Le Thu, 10 Mar 2016 19:43:16 +0100,
Bernard Schoenacker  a écrit :

> Le Thu, 10 Mar 2016 19:26:38 +0100,
> Daniel Huhardeaux  a écrit :
> 
> > Le 10/03/2016 18:57, Bernard Schoenacker a écrit :
> > 
> > [...]  
> > > steve à essayé et à trouvé l'astuce
> > 
> > Il serait bon de la partager ...
> >   
> 
> bonjour,
> 
> comment déposé le fichier exemple sur la liste pour que les gens
> comprennent ?
> 
> en premier steve a employé ceci :
> 
>  extract.py
> 
> # !/usr/bin/env python3
> # -*- coding : utf-8 -*-
> 
> from bs4 import BeautifulSoup
> 
> f = open("fichier.xml")
> xml = f.read()
> soup = BeautifulSoup(xml)
> 
> for p in soup.find_all('block'):
> print(p)
> 
> 
> 
> ensuite :
> 
> # !/bin/bash
> 
> # echo
> Num,Nom,Naissance,Bapteme,Mariage,Décès,Inhumation,Profession,Résidence
> > out.csv  
> 
> x=1
> while read f
> do
> # il y a 9 champs, donc au 9e, on passe à la ligne
>   if [ $x -lt 9 ]
>   then
> echo -n "$f",
> # le -n permet de ne pas passer à la ligne
> x=$[x+1]
>   else
>   printf "\n" 
>   x=1
>   fi
> done 
> 
> ensuite je cite :
> 
> Ensuite, j'ai ouvert le fichier dans libreoffice pour
> facilement supprimer les  et  qui trainaient (oui je
> sais, j'aurais pu le faire avec sed, mais je suis flemmard…)
> 
> 
> slt
> bernard

bonjour,

j'ai une qustion annexe qui facilitera le travail avec sed ...

enlever le premier  :

sed -i 's//,/g'

mais pour le deuxième je fais :

sed -i  's/<\/block>/,/g 


commentr le faire en une seule opération avec sed ?


slt
bernard



Re: fichier tableur xml

2016-03-10 Par sujet Bernard Schoenacker
Le Thu, 10 Mar 2016 19:26:38 +0100,
Daniel Huhardeaux  a écrit :

> Le 10/03/2016 18:57, Bernard Schoenacker a écrit :
> 
> [...]
> > steve à essayé et à trouvé l'astuce  
> 
> Il serait bon de la partager ...
> 

bonjour,

comment déposé le fichier exemple sur la liste pour que les gens
comprennent ?

en premier steve a employé ceci :

 extract.py

# !/usr/bin/env python3
# -*- coding : utf-8 -*-

from bs4 import BeautifulSoup

f = open("fichier.xml")
xml = f.read()
soup = BeautifulSoup(xml)

for p in soup.find_all('block'):
print(p)



ensuite :

# !/bin/bash

# echo
Num,Nom,Naissance,Bapteme,Mariage,Décès,Inhumation,Profession,Résidence
> out.csv

x=1
while read f
do
# il y a 9 champs, donc au 9e, on passe à la ligne
  if [ $x -lt 9 ]
  then
echo -n "$f",
# le -n permet de ne pas passer à la ligne
x=$[x+1]
  else
  printf "\n" 
  x=1
  fi
done et  qui trainaient (oui je
sais, j'aurais pu le faire avec sed, mais je suis flemmard…)


slt
bernard

jmb1.xml
Description: XML document


Re: fichier tableur xml

2016-03-10 Par sujet Daniel Huhardeaux

Le 10/03/2016 18:57, Bernard Schoenacker a écrit :

[...]

steve à essayé et à trouvé l'astuce


Il serait bon de la partager ...

--
Daniel



Re: fichier tableur xml

2016-03-10 Par sujet Bernard Schoenacker
Le Thu, 10 Mar 2016 15:39:14 +,
Yves Rutschle  a écrit :

> On Thu, Mar 10, 2016 at 01:05:04PM +0100, Bernard Schoenacker wrote:
> > mais de fichier issu d'un logiciel de généalogie qui génère un p**
> > de fichier xml tableur ...  
> 
> Avec une feuille XSLT et xsltproc, tu dois pouvoir
> tranformer du XML en n'importe quoi, moyennant de parler le
> XSLT.
> 
> Y.
> 

bonjour,

le document ne se laisse pas faire :

xsltproc --debug jmb1.xml

compilation error: file jmb1.xml line 1 element root
xsltParseStylesheetProcess : document is not a stylesheet

steve à essayé et à trouvé l'astuce

slt
bernard



Re: fichier tableur xml

2016-03-10 Par sujet Yves Rutschle
On Thu, Mar 10, 2016 at 01:05:04PM +0100, Bernard Schoenacker wrote:
> mais de fichier issu d'un logiciel de généalogie qui génère un p** de
> fichier xml tableur ...

Avec une feuille XSLT et xsltproc, tu dois pouvoir
tranformer du XML en n'importe quoi, moyennant de parler le
XSLT.

Y.



Re: fichier tableur xml

2016-03-10 Par sujet Yannick VOYEAUD
Le 10/03/2016 13:48, Bernard Schoenacker a écrit :
> Le Thu, 10 Mar 2016 13:10:50 +0100,
> steve  a écrit :
> 
>> Le 10-03-2016, à 13:05:04 +0100, Bernard Schoenacker a écrit :
>>
>>> il ne s'agit pas de fichier html ou xhtml ...
>>>
>>> mais de fichier issu d'un logiciel de généalogie qui génère un p** de
>>> fichier xml tableur ...  
>>
>> Quel logiciel de généalogie ? Geneweb ?
>>
> 
> http://genj.sourceforge.net/
> 
> 

Bonjour Bernard,

Quel est ton problème de base?
Ancestris a peut-être aussi le même problème ou l'a peut-être résolu?

Ancestris (http://www.ancestris.org) est issu de GenJ mais n'a,
aujourd'hui, plus rien à voir car le code a entièrement été refondu
suite à l'abandon de GenJ-fr qui était un fork.
Les développeurs d'Ancestris sont ceux qui faisaient le fork fr donc
peut-être une solution de ce coté.

Peut-être aussi l'occasion de découvrir un produit qui a bien évolué. Si
tu es sur Lyon le logiciel sera présent aux JDLL.

Amitiés

-- 
Yannick VOYEAUD
Nul n'a droit au superflu tant que chacun n'a pas son nécessaire
(Camille JOUFFRAY 1841-1924, maire de Vienne)
http://www.voyeaud.org
Créateur CimGenWeb: http://www.francegenweb.org/cimgenweb/
Journées du Logiciel Libre: http://jdll.org
Généalogie en liberté avec Ancestris http://www.ancestris.org



signature.asc
Description: OpenPGP digital signature


Re: fichier tableur xml

2016-03-10 Par sujet steve

Le 10-03-2016, à 13:48:13 +0100, Bernard Schoenacker a écrit :


>il ne s'agit pas de fichier html ou xhtml ...
>
>mais de fichier issu d'un logiciel de généalogie qui génère un p** de
>fichier xml tableur ...

Quel logiciel de généalogie ? Geneweb ?



http://genj.sourceforge.net/



Connais pas, peux pas t'aider, désolé…



Re: fichier tableur xml

2016-03-10 Par sujet Bernard Schoenacker
Le Thu, 10 Mar 2016 13:10:50 +0100,
steve  a écrit :

> Le 10-03-2016, à 13:05:04 +0100, Bernard Schoenacker a écrit :
> 
> >il ne s'agit pas de fichier html ou xhtml ...
> >
> >mais de fichier issu d'un logiciel de généalogie qui génère un p** de
> >fichier xml tableur ...  
> 
> Quel logiciel de généalogie ? Geneweb ?
> 

http://genj.sourceforge.net/



Re: fichier tableur xml

2016-03-10 Par sujet steve

Le 10-03-2016, à 13:05:04 +0100, Bernard Schoenacker a écrit :


il ne s'agit pas de fichier html ou xhtml ...

mais de fichier issu d'un logiciel de généalogie qui génère un p** de
fichier xml tableur ...


Quel logiciel de généalogie ? Geneweb ?



Re: fichier tableur xml

2016-03-10 Par sujet Bernard Schoenacker
Le Thu, 10 Mar 2016 12:56:11 +0100,
steve  a écrit :

> Salut Bernard,
> 
> 
> Le 10-03-2016, à 12:49:14 +0100, Bernard Schoenacker a écrit :
> 
> >bonjour,
> >
> >j'ai un fichier tableur xml que je n'arrive pas à ouvrir pour le
> >convertir en csv quels sont les outils disponibles ?  
> 
> Serait-il possible de voir avec Beautiful Soup ?
> 
> http://www.crummy.com/software/BeautifulSoup/
> 
> 

bonjour,

il ne s'agit pas de fichier html ou xhtml ...

mais de fichier issu d'un logiciel de généalogie qui génère un p** de
fichier xml tableur ...

slt
bernard



Re: fichier tableur xml

2016-03-10 Par sujet steve

Salut Bernard,


Le 10-03-2016, à 12:49:14 +0100, Bernard Schoenacker a écrit :


bonjour,

j'ai un fichier tableur xml que je n'arrive pas à ouvrir pour le
convertir en csv quels sont les outils disponibles ?


Serait-il possible de voir avec Beautiful Soup ?

http://www.crummy.com/software/BeautifulSoup/