Bonjour à tous,
Je dois récupérer certaines chaînes de caractère d'un document OpenOffice, celles sur lesquelles est appliqué un style particulier de paragraphe : pour cela, j'ai rédigé un petit programme qui va chercher dans le document XML produit par Open Office tous les nœuds XML correspondant à ces chaînes de caractères formatées de façon spécifique, nœuds qui se distinguent normalement par un attribut style-name spécifique.
Là où commence ma perplexité, c'est que même quand les styles sont correctement appliqués à l'intérieur du traitement de texte, l'information se perd en route très fréquemment dans le document content.xml, qui pourtant est le produit direct du traitement de texte : et je me retrouve avec de nombreux nœuds XML où l'attribut correspondant au style ne figure pas, alors même qu'il semble très correctement appliqué dans le traitement de texte.
En fait il y a une solution : pour obtenir que le style apparaisse dans le XML, je suis contraint à l'opération absurde qui consiste à appliquer à nouveau les styles de paragraphe sur le document OpenOffice pour obtenir leur apparition dans le XML -quand bien même ils ont déjà été appliqués par la personne qui me donne les documents, et sont reconnus par le traitement de texte ! Si je dois faire ça sur tous les documents qui me parviennent, où le formatage est justement censé permettre une récupération rapide des données, je n'ai pas fini de m'amuser...
L'un d'entre vous a t-il déjà eu cette expérience désagréable ? Quelle solution ?...
En vous remerciant pour toute aide éventuelle
[Résolu] Disparition de styles dans le contenu XML
Modérateur : Vilains modOOs
-
Silenzio
- Fraîchement OOthentifié
- Messages : 4
- Inscription : 29 juil. 2013 14:24
[Résolu] Disparition de styles dans le contenu XML
Dernière modification par lawrence le 31 juil. 2013 11:03, modifié 2 fois.
Raison : Ajout de la coche verte
Raison : Ajout de la coche verte
OpenOffice 3.4 sous Windows 7 Pro
-
alhazred
- ManitOOu

- Messages : 3028
- Inscription : 30 avr. 2011 23:08
- Localisation : Casablanca (Maroc)
Re: Disparition de styles dans le contenu XML
Bonjour,
Tout cela est bien abstrait : tu ferais mieux de joindre un exemple d'odt qui te pose ce problème.
Tu parles de styles de paragraphe. Apparaissent-ils dans la fenêtre du styliste ? (menu format Styles et formatages) ou bien ne s'agit-il que d'une mise en forme directe ?
Dans les deux cas, une recherche directe dans l'odt me semble envisageable et surtout bien plus simple (quitte éventuellement à l'automatiser par macro).
Tout cela est bien abstrait : tu ferais mieux de joindre un exemple d'odt qui te pose ce problème.
Tu parles de styles de paragraphe. Apparaissent-ils dans la fenêtre du styliste ? (menu format Styles et formatages) ou bien ne s'agit-il que d'une mise en forme directe ?
Dans les deux cas, une recherche directe dans l'odt me semble envisageable et surtout bien plus simple (quitte éventuellement à l'automatiser par macro).
À bientôt
LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.
Et la sauvegarde incrémentée, c'est sympa !
LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.
Et la sauvegarde incrémentée, c'est sympa !
-
Silenzio
- Fraîchement OOthentifié
- Messages : 4
- Inscription : 29 juil. 2013 14:24
Re: Disparition de styles dans le contenu XML
Bonjour,
En effet, les styles apparaissent bien dans la fenêtre du styliste.
Je souscris totalement à l'idée qu'une question devrait s'appuyer sur un exemple d'.odt, je vais essayer de vous poster en un avec cette erreur, mais je peux déjà essayer d'être plus explicite.
Soit un style de Paragraphe appelé "N", appliqué dans le traitement de texte sur la phrase suivante : "Ceci est un exemple". Il apparaît dans la fenêtre du styliste. Dans le fichier content.xml, que l'on obtient en décompressant le fichier .odt, et qui n'est logiquement qu'une autre représentation du même contenu, le résultat normal serait de trouver quelque chose comme cela :
<text:p text:style-name="N"> Ceci est un exemple </text:p>.
Hé bien mon problème est qu'une fois sur deux, bien que l'application du style de paragraphe soit attesté dans la fenêtre du styliste, l'information du type de style appliqué au paragraphe n'est pas répercuté dans le document XML, et je me trouve avec
<text:p>Ceci est un exemple</text:p>
Je ne crois pas qu'une macro me permette de faire tout ce que je veux, car en fait il ne s'agit pas seulement d'extraire quelques chaînes de caractères, mais de convertir l'ensemble du texte dans un format .xml, et l'ensemble du document est stylé pour chaque style de paragraphe corresponde à une balise dans cette grammaire.
Cordialement,
En effet, les styles apparaissent bien dans la fenêtre du styliste.
Je souscris totalement à l'idée qu'une question devrait s'appuyer sur un exemple d'.odt, je vais essayer de vous poster en un avec cette erreur, mais je peux déjà essayer d'être plus explicite.
Soit un style de Paragraphe appelé "N", appliqué dans le traitement de texte sur la phrase suivante : "Ceci est un exemple". Il apparaît dans la fenêtre du styliste. Dans le fichier content.xml, que l'on obtient en décompressant le fichier .odt, et qui n'est logiquement qu'une autre représentation du même contenu, le résultat normal serait de trouver quelque chose comme cela :
<text:p text:style-name="N"> Ceci est un exemple </text:p>.
Hé bien mon problème est qu'une fois sur deux, bien que l'application du style de paragraphe soit attesté dans la fenêtre du styliste, l'information du type de style appliqué au paragraphe n'est pas répercuté dans le document XML, et je me trouve avec
<text:p>Ceci est un exemple</text:p>
Je ne crois pas qu'une macro me permette de faire tout ce que je veux, car en fait il ne s'agit pas seulement d'extraire quelques chaînes de caractères, mais de convertir l'ensemble du texte dans un format .xml, et l'ensemble du document est stylé pour chaque style de paragraphe corresponde à une balise dans cette grammaire.
Cordialement,
OpenOffice 3.4 sous Windows 7 Pro
-
alhazred
- ManitOOu

- Messages : 3028
- Inscription : 30 avr. 2011 23:08
- Localisation : Casablanca (Maroc)
Re: Disparition de styles dans le contenu XML
Bonjour,
Lorsque j'ai parlé de macro, je pensais essentiellement à
Lorsque j'ai parlé de macro, je pensais essentiellement à
Je te conseille en fait de joindre deux fichiers (tous les deux odt, si possible, plutôt que xml) : celui qui présente le problème et celui (corrigé) obtenu après ton intervention.Silenzio a écrit :l'opération absurde qui consiste à appliquer à nouveau les styles de paragraphe sur le document OpenOffice
À bientôt
LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.
Et la sauvegarde incrémentée, c'est sympa !
LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.
Et la sauvegarde incrémentée, c'est sympa !
-
Silenzio
- Fraîchement OOthentifié
- Messages : 4
- Inscription : 29 juil. 2013 14:24
Re: Disparition de styles dans le contenu XML
D'accord ! Je joins deux exemples, extraits des documents sur lesquels je travaille, mais où j'ai simplement changé le texte. Le style qui n'apparaît pas au final dans le contenu .xml est ici intitulé NoteTopic, et ne concerne que le mot "Additions". Bien que les deux fichiers apparaissent strictement identiques - en tout cas à moi -, le .odt que j'ai corrigé, en appliquant tout simplement le style une fois de plus, produit un xml où l'information dont j'ai besoin figure, contrairement au premier...
S'il ne s'agissait que d'appliquer à nouveau le style que quelques fois sur quelques pages, ce ne serait pas un problème, mais les vrais documents sur lesquels je travaille sont assez lourds, et avec à chaque fois des centaines de styles dont j'ai besoin qu'ils figurent dans le xml.
S'il ne s'agissait que d'appliquer à nouveau le style que quelques fois sur quelques pages, ce ne serait pas un problème, mais les vrais documents sur lesquels je travaille sont assez lourds, et avec à chaque fois des centaines de styles dont j'ai besoin qu'ils figurent dans le xml.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
OpenOffice 3.4 sous Windows 7 Pro
-
alhazred
- ManitOOu

- Messages : 3028
- Inscription : 30 avr. 2011 23:08
- Localisation : Casablanca (Maroc)
Re: Disparition de styles dans le contenu XML
Dans le xml original, les styles sont renommés dans la partie <office:automatic-styles> ... </office:automatic-styles> : NoteTopic devient P3 dans la suite.
Au plus simple (tu avais presque la solution) :
Si tu souhaites des informations sur cette macro, ou des améliorations (par ex. application à plusieurs styles), ouvre un nouveau sujet dans la section Macros et API (avec la balise [Writer] au début du titre, et indique les liens entre les deux sujets.
Au plus simple (tu avais presque la solution) :
- Fais une recherche dans l'odt :
- menu Édition > Rechercher & remplacer
- bouton Plus d'options, coche Rechercher des styles
- indique le style recherché (NoteTopic), puis bouton Tout rechercher
- Enfin applique le style NoteTopic à la sélection (double clic dans le Styliste.
Code : Tout sélectionner
Sub ResetStyles
Dim document As Object
Dim dispatcher As Object
document = ThisComponent.currentController.frame
dispatcher = CreateUnoService("com.sun.star.frame.DispatchHelper")
'Rechercher tous les paragraphes de style NoteTopic
Dim args1(18) As New com.sun.star.beans.PropertyValue
args1(0).Name = "SearchItem.StyleFamily"
args1(0).Value = 2
args1(1).Name = "SearchItem.CellType"
args1(1).Value = 0
args1(2).Name = "SearchItem.RowDirection"
args1(2).Value = true
args1(3).Name = "SearchItem.AllTables"
args1(3).Value = false
args1(4).Name = "SearchItem.Backward"
args1(4).Value = false
args1(5).Name = "SearchItem.Pattern"
args1(5).Value = true
args1(6).Name = "SearchItem.Content"
args1(6).Value = false
args1(7).Name = "SearchItem.AsianOptions"
args1(7).Value = false
args1(8).Name = "SearchItem.AlgorithmType"
args1(8).Value = 0
args1(9).Name = "SearchItem.SearchFlags"
args1(9).Value = 65536
args1(10).Name = "SearchItem.SearchString"
args1(10).Value = "NoteTopic"
args1(11).Name = "SearchItem.ReplaceString"
args1(11).Value = "Alinéa négatif"
args1(12).Name = "SearchItem.Locale"
args1(12).Value = 255
args1(13).Name = "SearchItem.ChangedChars"
args1(13).Value = 2
args1(14).Name = "SearchItem.DeletedChars"
args1(14).Value = 2
args1(15).Name = "SearchItem.InsertedChars"
args1(15).Value = 2
args1(16).Name = "SearchItem.TransliterateFlags"
args1(16).Value = 1280
args1(17).Name = "SearchItem.Command"
args1(17).Value = 1
args1(18).Name = "Quiet"
args1(18).Value = true
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
'Appliquer le style NoteTopic
Dim args2(1) As New com.sun.star.beans.PropertyValue
args2(0).Name = "Template"
args2(0).Value = "NoteTopic"
args2(1).Name = "Family"
args2(1).Value = 2
dispatcher.executeDispatch(document, ".uno:StyleApply", "", 0, args2())
End SubÀ bientôt
LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.
Et la sauvegarde incrémentée, c'est sympa !
LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.
Et la sauvegarde incrémentée, c'est sympa !
-
Silenzio
- Fraîchement OOthentifié
- Messages : 4
- Inscription : 29 juil. 2013 14:24
Re: Disparition de styles dans le contenu XML
En effet, je m'aperçois que tu m'avais donné tous les éléments dès ton premier message, si je ne m'en suis pas rendu compte c'est que j'ignorais qu'il existait la possibilité de faire une recherche par style dans l'onglet recherche...
Ce qui facilite bien des choses !
Merci beaucoup d'avoir pris le temps d'éclairer ma lanterne, et également d'avoir écrit cette macro ! Je n'y connais rien du tout en macro Oo, alors je vais prendre le temps d'étudier un peu avant de poser des questions, mais je n'hésiterai pas à revenir vers vous, car cette première expérience sur ce forum m'a été aussi utile qu'agréable.
Je mets le sujet en [Résolu].
Bien cordialement.
Merci beaucoup d'avoir pris le temps d'éclairer ma lanterne, et également d'avoir écrit cette macro ! Je n'y connais rien du tout en macro Oo, alors je vais prendre le temps d'étudier un peu avant de poser des questions, mais je n'hésiterai pas à revenir vers vous, car cette première expérience sur ce forum m'a été aussi utile qu'agréable.
Je mets le sujet en [Résolu].
Bien cordialement.
OpenOffice 3.4 sous Windows 7 Pro