Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 24/12/2010, à 03:51

nico8491

parser xml > html en bash

Bonjour à tous,

je débute dans l'utilisation du Bash et donc des scripts.
Je cherche à faire un script qui remplacerait les balises d'un code XML provenant d'un fichier Open Office "dézippé" en balises HTML.

Bien sûr j'ai déjà fais quelques recherches et j'ai compris que je ne pouvais pas me passer des commandes sed et awk. Quant à leur utilisation elle me semble bien complexe ...

Je sais programmer en C, C++, à mon niveau certes, vous pouvez donc employer des termes techniques, je serais capable de comprendre je pense.

Merci à tous !!!

Hors ligne

#2 Le 24/12/2010, à 07:29

chopinhauer

Re : parser xml > html en bash

Pour une transformation entre XML et HTML regardez plutôt le langage XSL. Dans une Ubuntu standard vous allez pouvoir utiliser l'outil xsltproc pour appliquer vos feuilles de style XSLT.


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#3 Le 03/01/2011, à 00:11

nico8491

Re : parser xml > html en bash

Effectivement, ce langage à l'air plus indiqué pour ce style de "programme". Merci chopinhauer, je ne le connaissais pas !

Mais (et oui je suis chiant ^^), je tiens à le faire en bash ... en cherchant et en voyant la structure du fichier content.xml après décompression du .odt, je sais que je dois insérer des saut de lignes après chaque balise fermante :

boucle tant que le fichier n'est pas terminé,

si on rencontre une balise fermante alors
insérer après balise "LINE FEED" (=13 en code ASCII)

fin de la condition

fin de la boucle

Ensuite, j'aimerais pouvoir remplacer les balises XML par les balises équivalentes en HTML. J'avoue ne pas avoir fais plus de recherches pendant les fêtes. ^^

boucle tant que le fichier n'est pas terminé

si la chaine de caractère de la balise ouvrante est identique à une balise ouvrante XML pouvant exister dans un .odt alors
remplacer la chaine par la balise ouvrante HTML correspondante          (cette condition est à faire pour chaque balise existante en XML pour un .odt)
fin de la condition

si la chaine de caractère de la balise fermante est identique à une balise fermantes XML pouvant exister dans un .odt alors
remplacer la chaine par la balise fermante HTML correspondante
fin de la condition

fin de la boucle

Merci pour vos aides ! Et bonne année à tous !!!! smile

Hors ligne

#4 Le 03/01/2011, à 08:59

sputnick

Re : parser xml > html en bash

C'est comme si tu réparait ton scooter, que tu demande quel outil faut utiliser pour le réparer, et que quand on te donne le bon tu dit "merci, mais je préfère le faire au marteau et au burrin" :þ


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#5 Le 03/01/2011, à 12:22

nico8491

Re : parser xml > html en bash

la métaphore est sympa ^^
Mais c'est plutôt le genre j'ai un marteau et un burin ... comment je fais pour réparer mon scooter avec ? wink

Hors ligne

#6 Le 03/01/2011, à 16:23

chopinhauer

Re : parser xml > html en bash

nico8491 a écrit :

Mais (et oui je suis chiant ^^), je tiens à le faire en bash ...

Qu'est-ce que t'entend par bash ? AWK, sed et les coreutils ?

Oui, bien sur, tu peux utiliser ces outils, mais ils sont plus adaptés à des fichiers au format texte. Pour du XML ils ne sont pas si efficaces, car le même contenu XML peut être écrit de mille manières différentes (par exemple les espaces sont souvent ignorés). Donc quitte à écrire des longues lignes de code AWK/sed juste pour cela, vaut mieux utiliser un outil comme xsltproc qui est fait pour cela.

Niveau compatibilité multi-plateforme, c'est vrai que sed et awk sont plus répandus que xsltproc (le standard POSIX les demande), mais ce dernier est quand même très courant.

PS : si tu veux juste indenter joliment ton XML tu peux te servir de xmllint.

PPS : Tu peux aussi regarder des stylesheet pour conversion de ODT vers XHTML déjà faites. Par exemple sx2ml.

Dernière modification par chopinhauer (Le 03/01/2011, à 16:37)


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#7 Le 04/01/2011, à 15:36

nico8491

Re : parser xml > html en bash

bien j'ai trouvé la commande que je demander, c'était: sed -i -e 's#<....>\(.*\)#<.....>#'g' tout simplement smile

cependant, le fichier XML étant sur 2 lignes, cette commande ne marche que sur la première car il n'y a qu'une balise, sur la deuxième ligne elle supprime ce qui se trouve après la balise que je transforme ....

alors une nouvelle question maintenant :

comment je fais pour insérer un retour à la ligne après chaque caractère '>' ? (à faire avant toute transformation bien sûr)

Merci à tous !

Hors ligne

#8 Le 04/01/2011, à 16:18

sputnick

Re : parser xml > html en bash

http://this-one.kicks-ass.net/marteau.png


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#9 Le 04/01/2011, à 16:44

nico8491

Re : parser xml > html en bash

Je veux apprendre comment on utilise la commande sed, c'est tout ! J'ai trouvé cette application pratique là comme j'aurais pu en trouver d'autres ... Le fait est que c'est ça que je veux faire.
La commande que je demande est simple pour quelqu'un qui sait utiliser le bash. Si tu ne connais pas suffisamment ce langage de script pour répondre à ma question arrête de publier dans cette page (sputnick), Car jusqu'à maintenant tu n'as rien dis d'intéressant ni pour moi ni pour d'autres contrairement à chopinhauer ...
Merci de ta compréhension !

Hors ligne

#10 Le 04/01/2011, à 18:01

AnsuzPeorth

Re : parser xml > html en bash

Bjr,
Déjà, si tu veux de l'aide, il serait pas mal de donner un exemple (ficher entrée, sortie souhaitée).
Par contre ta commande sed ne ressemble à rien, au lieu de copier sans comprendre, va faire un tour sur le site 'comment ca marche', le tutoriel sed est très bien fait.

Si tu ne connais pas suffisamment ce langage de script pour répondre à ma question arrête de publier dans cette page (sputnick)

Si tu avais fait une recherche sur sputnick, tu aurais remarqué que c'est une grosse quiche en bash .... Mais c'est en perl qui est le plus mauvais roll
Bon, je sors ...=>[]


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#11 Le 04/01/2011, à 18:10

nico8491

Re : parser xml > html en bash

merci pour ta réponse AnsuzPeorth !

Hors ligne

#12 Le 04/01/2011, à 18:26

nico8491

Re : parser xml > html en bash

Effectivement, je comprend mieux. ^^

Ça marche très bien maintenant !

Merci beaucoup de m'avoir indiqué le site Comment Ça Marche, je ne savais pas qu'ils avaient des docs complètes (et surtout bien faites).

MERCI !!!

Hors ligne

#13 Le 04/01/2011, à 19:48

chopinhauer

Re : parser xml > html en bash

Si le but était d'apprendre sed t'as mal formulé ta question au début du sujet. C'est un peu la différence entre "je veux installer un serveur Web" et "je veux un serveur Web en bash".

Ce qu'on essaie de t'expliquer avec sputnick est que t'auras beaucoup du mal à traiter XML correctement avec sed. Ce n'est pas impossible, mais c'est comme aller sur un vélo sans main et j'ai l'impression que à ce moment le problème est aller à vélo.

Ton script probablement ne détectera pas les balises du genre :

</balise
>
<img alt="&lt;Image>"/>

et il te faudra relire (lire ?) le standard XML pour ne pas être à la merci des différents parseurs XML.

D'un autre côté XSLT manipule sans problèmes XML et tu n'auras pas à te soucier des détails du format.


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#14 Le 04/01/2011, à 22:29

sputnick

Re : parser xml > html en bash

+1 chopinhauer


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#15 Le 05/01/2011, à 00:57

Totor

Re : parser xml > html en bash

je me sais tétu mais qd même à ce point... 'faut le faire ! lol
les messieurs te disent que tu utilises un crussiforme alors qu'un tournevis ( à tête plate) est le plus adapté ! hmm

edit : et puis sed, c'est pas du bash roll

Dernière modification par Totor (Le 05/01/2011, à 09:33)


-- Lucid Lynx --

Hors ligne

#16 Le 05/01/2011, à 18:49

nico8491

Re : parser xml > html en bash

Je sais que j'ai été têtu big_smile
Cela dis, ça a payé ! J'ai réussi à faire ce que je voulais ! wink

Je remercie encore chopinhauer de m'avoir indiqué la page SED de Comment Ça marche. J'ai trouvé tout ce qu'il me fallait dessus.

Puis (et ça reste un avis personnel) j'aime réussir à faire ce que je vais avec les outils pas forcément adapté et je trouve ça intéressant ! Ça permet de comprendre comment fonctionnent l'informatique. C'était mon petit défi !!! ^^

Hors ligne