Freitag Nachmittag, mein Gehirn schaltet sich ab, oder so..
Aber um nochmal festzuhalten
Ich erstelle mit ODFPY aus einem vorhanden oo-file ein neues und schreibe dort Informationen rein.
Diese Informationen sind teilweise HTML und müssen (mit der vorhanden Formatierung, Einrückungen etc)
umgewandelt werden, um diese mit ODFPY in das File mit Formatierungen abzuspeichern.
Es ist möglich die Umwandlung diese Umwandlung mit lxml bzw. ElementTree zu machen?
D.h. ich kann nach meiner idealistischen Auffwassung vorne html reinstecken und bekomme hinten xml raus?
Externe Formatierungsangaben sind hierfür nicht notwendig?
Ansonsten sollte ich fast über einen anderen WEg generell nachdenken, um aus python einen odf report zu generieren?
schönes Wochenende
Generating a report: Python to ODT (OOO) or doc
Hallo zusammen,
entschuldigt das ich euch schon wieder in Beschlag nehme.
Themenstellung: (x)html -> odt
Ich Versuche jetzt mittels lxml, was hier ja empfohlen wird, einen html-String mittels eines xslt in ein odt zu transformieren.
Allerdings wird quasi nicht ein einziger Tag erkannt.
Als XSLT verwende ich http://gitorious.org/xhtml2odt/xhtml2odt/
Aufruf in Python ist dann relativ unspektakulär
Allerdings bekomme ich dank debug-funktion angezeigt, das kein Tag erkannt wurde.
Input
Output:
Kennt evtl jemand von euch das Verfahren und könnt mir einen Wink mit dem Zaunpfahl geben, was ich hier falsch mache?
Vielen Dank für eure Hilfe.
Grüße
entschuldigt das ich euch schon wieder in Beschlag nehme.
Themenstellung: (x)html -> odt
Ich Versuche jetzt mittels lxml, was hier ja empfohlen wird, einen html-String mittels eines xslt in ein odt zu transformieren.
Allerdings wird quasi nicht ein einziger Tag erkannt.
Als XSLT verwende ich http://gitorious.org/xhtml2odt/xhtml2odt/
Aufruf in Python ist dann relativ unspektakulär
Code: Alles auswählen
xslt_doc = etree.parse("xhtml2odt.xsl")
transform = etree.XSLT(xslt_doc)
xhtml = etree.fromstring(xhtml) # must be valid xml
odt = transform(xhtml,debug="1")
return str(odt).replace('<?xml version="1.0" encoding="utf-8"?>','')
Input
Code: Alles auswählen
"<html><head><title></title></head><body><p><strong>headline</strong></p><p> \
text text text</p><ul><li>punkt 1</li> <li>punkt 2</li> <li> punkt 3</li></ul></body></html>"
Code: Alles auswählen
<!--Unknown tag : htmlheadline text text textpunkt 1 punkt 2 punkt 3--> <html> <!--Unknown tag : head--> <head> <!--Unknown tag : title--> <title/> </head> <!--Unknown tag : bodyheadline text text textpunkt 1 punkt 2 punkt 3--> <body> <!--Unknown tag : pheadline--> <p> <!--Unknown tag : strongheadline--> <strong>headline</strong> </p> <!--Unknown tag : p text text text--> <p> text text text</p> <!--Unknown tag : ulpunkt 1 punkt 2 punkt 3--> <ul><!--Unknown tag : lipunkt 1--><li>punkt 1</li> <!--Unknown tag : lipunkt 2--><li>punkt 2</li> <!--Unknown tag : li punkt 3--><li> punkt 3</li></ul> </body> </html>
Vielen Dank für eure Hilfe.
Grüße
Nach dem ich wohl ein paarmal meinen Kopf gegen die Wand geschlagen habe ist mir dann doch noch
der "dumme" Fehler aufgefallen.
Es kann ausschließlich xhtml zu odt gewandelt werden und nicht html zu odt. xHTML unterscheidet sich zu html "natürlich" darin, das eine Angabe wie xmlns=\"http://www.w3.org/1999/xhtml\" erfolgen muss.
Dann klappt das schon gleich viel besser.
Geht es nur noch darum odfpy klar zu machen , dass der übergebene xhtml String nicht als String sondern eben
als xml in content.xml eingefügt werden soll. Die Api ist zwar nicht gut, aber ich bin mir sicher das auch sowas möglich sein sollte. Ich geb euch bescheid, falls ich es gefunden habe.
Grüße
der "dumme" Fehler aufgefallen.
Es kann ausschließlich xhtml zu odt gewandelt werden und nicht html zu odt. xHTML unterscheidet sich zu html "natürlich" darin, das eine Angabe wie xmlns=\"http://www.w3.org/1999/xhtml\" erfolgen muss.
Dann klappt das schon gleich viel besser.
Geht es nur noch darum odfpy klar zu machen , dass der übergebene xhtml String nicht als String sondern eben
als xml in content.xml eingefügt werden soll. Die Api ist zwar nicht gut, aber ich bin mir sicher das auch sowas möglich sein sollte. Ich geb euch bescheid, falls ich es gefunden habe.
Grüße