Hallo zusammen,
ich muss des öfteren Textdokumente erzeugen ... da es dabei immer nach dem gleichen Schema abläuft (Vorlage kopieren und Kopie verändern) habe ich mir aus der Vorlage eine HTML-Datei gebaut:
- Eine Datei mit DIV in mehrere Abschnitte unterteilt
- Es wird immer nur ein Abschnitt angezeigt (Dank CSS-Eigenschaft "display")
- Zwischen den Abschnitten kann über ein Menü beliebig gewechselt werden
- Jeder Abschnitt enthält Eingabefelder für einen Teil der Vorlage
- Der letzte Abschnitt ist eine Zusammenfassung, die mit Copy & Paste in eine Textdatei wandert
Nicht zu vergessen, das einige der Felder optional sind und das bei Pflichtfeldern eine Eingabe erfolgen muss.
Mir vereinfacht das die Arbeit ...
Dummerweise sind einige Kollegen auch auf den Geschmack gekommen und ich muss damit rechnen, das noch andere Textvorlagen darauf warten, in ein HTML-Formular umgewandelt zu werden.
Aber alles von Hand schreiben ? Umständlich ... Und dauert zu lange ...
Daher meine Frage:
Gibt es Möglichkeiten, sich die ganze Prozedur zu vereinfachen ?
Erzeugen von HTML-Formularen
Falls ich die Frage richtig verstanden habe und falls sie lautet, ob man aus den Vorlagen automatisch das HTML dafür erstellen kann: Das kommt auf die Vorlagen an.
Wenn's nicht automatisch geht, kann man sicher die Vorlage mit Objekten beschreiben aus denen man dann HTML erzeugen kann. Irgendwo in das ganze passt vielleicht auch ein Template-System.
Falls sich eine Vorlage und die "Metadaten" übersichtlich in JSON beschreiben lassen, kann man vielleicht sogar die ganze Formularerzeugung in eine JavaScript-Anwendung verschieben.
Wenn's nicht automatisch geht, kann man sicher die Vorlage mit Objekten beschreiben aus denen man dann HTML erzeugen kann. Irgendwo in das ganze passt vielleicht auch ein Template-System.
Falls sich eine Vorlage und die "Metadaten" übersichtlich in JSON beschreiben lassen, kann man vielleicht sogar die ganze Formularerzeugung in eine JavaScript-Anwendung verschieben.
BlackJack hat geschrieben:Falls ich die Frage richtig verstanden habe und falls sie lautet, ob man aus den Vorlagen automatisch das HTML dafür erstellen kann: Das kommt auf die Vorlagen an.
Die Idee klingt gut ... wenn es auch eher darauf hinauslaufen würde, das man die Vorlage erst nach JSON umschreiben müsste ...BlackJack hat geschrieben:Falls sich eine Vorlage und die "Metadaten" übersichtlich in JSON beschreiben lassen, kann man vielleicht sogar die ganze Formularerzeugung in eine JavaScript-Anwendung verschieben.
Objekte und Template-System würde mir aber fürs erste vollkommen reichen ...BlackJack hat geschrieben:Wenn's nicht automatisch geht, kann man sicher die Vorlage mit Objekten beschreiben aus denen man dann HTML erzeugen kann. Irgendwo in das ganze passt vielleicht auch ein Template-System.
Dann könnte man auch solche Sachen wie "nur Zahlen erlaubt", "nur aktiv/sichtbar, wenn Checkbox einen Hacken hat" und "Feldinhalt mit Zeichenkette verknüpfen und als Vorgabe in anderen Feldern verwendet" ...
- Michael Schneider
- User
- Beiträge: 569
- Registriert: Samstag 8. April 2006, 12:31
- Wohnort: Brandenburg
Hallo Midan,
ich weiß um die Vorteile von HTML, aber trotzdem: wenn man schon ein Programm schreibt, um eine HTML-Vorlage zu erzeugen, warum dann nicht gleich in Python bleiben? Mit Tkinter Bordmitteln hast Du mindestens die Freiheit der HTML-Controls und kannst den Programmfluss, Lesen/Schreiben von Daten, etc. genau steuern.
Vielleicht bin ich als Python-Fan auch einfach nur voreingenommen.
Grüße,
Michael
ich weiß um die Vorteile von HTML, aber trotzdem: wenn man schon ein Programm schreibt, um eine HTML-Vorlage zu erzeugen, warum dann nicht gleich in Python bleiben? Mit Tkinter Bordmitteln hast Du mindestens die Freiheit der HTML-Controls und kannst den Programmfluss, Lesen/Schreiben von Daten, etc. genau steuern.
Vielleicht bin ich als Python-Fan auch einfach nur voreingenommen.
Grüße,
Michael
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Diese Lösung würde mir auch am Besten gefallen ... das Problem bei der Sache ist nur, das die Rechner, bei denen diese Formulare am Meisten benötigt werden alles Testrechner sind. Und bei denen gilt eine einfache Regel: Installation zusätzlicher Software verbotenMichael Schneider hat geschrieben:Hallo Midan,
ich weiß um die Vorteile von HTML, aber trotzdem: wenn man schon ein Programm schreibt, um eine HTML-Vorlage zu erzeugen, warum dann nicht gleich in Python bleiben? Mit Tkinter Bordmitteln hast Du mindestens die Freiheit der HTML-Controls und kannst den Programmfluss, Lesen/Schreiben von Daten, etc. genau steuern.
Vielleicht bin ich als Python-Fan auch einfach nur voreingenommen.
Grüße,
Michael
(Die Kisten werden im Durchschnitt ein mal die Woche neu installiert. Und das dazu verwendet Image ist vorgegeben ...)
Ich bin schon froh, wenn wir den Windows-eigenen Texteditor und den Internet Explorer zusätzlich verwenden dürfen ...
Ich hab das Wochende mit Suchen verbracht und nichts brauchbares dabei gefunden ...
Entweder es fehlte was wichtiges oder die Template Engine war nicht wirklich für den Offline-Betrieb geeignet ...
(Kann natürlich auch sein, das ich was übersehen habe.)
Widgets wären nicht schlecht ... leider ist auch da nichts passendes dabei ...
Entweder sind es mehrere Dateien oder die HTML-Datei mit dem Formular würde grösser als 200KB werden ... ein wenig zu viel, wie ich finde ...
Sieht so aus, als müsste ich mir selber was schreiben:
Ausgehend von einem Template (oder auch mehrere) und einer Definitions-Datei, in der alle Abschnitte und Eingabefelder stehen, müsste daraus eine einzelne HTML-Datei generiert werden.
Überprüfung der Eingaben inklusive ...
Wird bestimmt lustig ...
Hat jemand konstruktive Ideen ?
Entweder es fehlte was wichtiges oder die Template Engine war nicht wirklich für den Offline-Betrieb geeignet ...
(Kann natürlich auch sein, das ich was übersehen habe.)
Widgets wären nicht schlecht ... leider ist auch da nichts passendes dabei ...
Entweder sind es mehrere Dateien oder die HTML-Datei mit dem Formular würde grösser als 200KB werden ... ein wenig zu viel, wie ich finde ...
Sieht so aus, als müsste ich mir selber was schreiben:
Ausgehend von einem Template (oder auch mehrere) und einer Definitions-Datei, in der alle Abschnitte und Eingabefelder stehen, müsste daraus eine einzelne HTML-Datei generiert werden.
Überprüfung der Eingaben inklusive ...
Wird bestimmt lustig ...
Hat jemand konstruktive Ideen ?
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo midan23!midan23 hat geschrieben:Hat jemand konstruktive Ideen ?
Ich weiß es nicht. Aber vielleicht kannst du dir mit Cheetah etwas zusammenbasteln. Meine Erfahrung damit: http://gelb.bcom.at/trac/misc/wiki/Tuto ... it-cheetah
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Danke an alle, die bisher geholfen haben ...
@gerold:
Cheetah hab ich mir kurz angeschaut ... aber ich denke, das ich vorerst besser dran bin, wenn ich bei einem System bleibe, das ich bereits kenne (Kid)
Ein erstes "Entwurfs-Template" habe ich schon fertig (Sind auch nur über 200 Zeilen...).
Damit kann ich mein erstes Formular bereits komplett nachbauen ...
Jetzt sollte ich mir langsam Gedanken machen, wie die Eingabe aussehen sollte (sprich: die Anzahl und Namen der einzelnen Abschnitte; welche Eingabe-Elemente in welcher Reihenfolge in jedem Abschnitt enthalten ist ...)
Mir würde da eine Python-ähnliche Syntax vorschweben ...
@gerold:
Cheetah hab ich mir kurz angeschaut ... aber ich denke, das ich vorerst besser dran bin, wenn ich bei einem System bleibe, das ich bereits kenne (Kid)
Ein erstes "Entwurfs-Template" habe ich schon fertig (Sind auch nur über 200 Zeilen...).
Damit kann ich mein erstes Formular bereits komplett nachbauen ...
Jetzt sollte ich mir langsam Gedanken machen, wie die Eingabe aussehen sollte (sprich: die Anzahl und Namen der einzelnen Abschnitte; welche Eingabe-Elemente in welcher Reihenfolge in jedem Abschnitt enthalten ist ...)
Mir würde da eine Python-ähnliche Syntax vorschweben ...
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
Steig lieber auf Genshi um. Kid ist totmidan23 hat geschrieben:Cheetah hab ich mir kurz angeschaut ... aber ich denke, das ich vorerst besser dran bin, wenn ich bei einem System bleibe, das ich bereits kenne (Kid)
TUFKAB – the user formerly known as blackbird
Ob Kid tot ist oder nicht ist nicht so wichtig ...
Wichtig ist eher, das Genshi über Features verfügt, die ich bei Kid vermisse ...
Also wechsle ich zu Genshi ... und schon ist eine Frage da:
Mit Kid arbeite ich bisher so:
1) Editor: Template ändern
2) Kommandozeile: Mit einem selbst geschriebenen Script aus dem Template eine HTML-Datei machen
3) Browser: neues Template testen
Es gäbe zwar die Möglichkeit den zweiten Schritt mittels einfachen Webserver überflüssig zu machen ... aber leider gibt es dabei ein Problem:
Da die Templates bei Kid normale Python-Module sind, werden sie ohne Python-Neustart nicht neu geladen ...
Da Genshi aus den Templates keine Python-Module macht, gibt es dieses Problem nicht.
Aber: Wenn im Template Fehler enthalten sind, wo landen die Fehlermeldungen von Genshi ?
1) Im Browser -> Ich würde mir einen Schritt sparen
2) Im Kommandozeilen-Fenster -> Ich müsste auf die Webserver-Lösung verzichten
Wichtig ist eher, das Genshi über Features verfügt, die ich bei Kid vermisse ...
Also wechsle ich zu Genshi ... und schon ist eine Frage da:
Mit Kid arbeite ich bisher so:
1) Editor: Template ändern
2) Kommandozeile: Mit einem selbst geschriebenen Script aus dem Template eine HTML-Datei machen
3) Browser: neues Template testen
Es gäbe zwar die Möglichkeit den zweiten Schritt mittels einfachen Webserver überflüssig zu machen ... aber leider gibt es dabei ein Problem:
Da die Templates bei Kid normale Python-Module sind, werden sie ohne Python-Neustart nicht neu geladen ...
Da Genshi aus den Templates keine Python-Module macht, gibt es dieses Problem nicht.
Aber: Wenn im Template Fehler enthalten sind, wo landen die Fehlermeldungen von Genshi ?
1) Im Browser -> Ich würde mir einen Schritt sparen
2) Im Kommandozeilen-Fenster -> Ich müsste auf die Webserver-Lösung verzichten
- veers
- User
- Beiträge: 1219
- Registriert: Mittwoch 28. Februar 2007, 20:01
- Wohnort: Zürich (CH)
- Kontaktdaten:
Wieso?midan23 hat geschrieben:2) Im Kommandozeilen-Fenster -> Ich müsste auf die Webserver-Lösung verzichten
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Wenn ich keine Fehlermeldung im Browser sehe, sondern im Kommandozeilen-Fenster, würde es so aussehen:veers hat geschrieben:Wieso?midan23 hat geschrieben:2) Im Kommandozeilen-Fenster -> Ich müsste auf die Webserver-Lösung verzichten
1) Editor: Template ändern
2) Browser: Template neu laden
3) Kommandozeilen-Fenster: nach Fehler schauen
4) Browser: Template testen
Es wäre umständlicher ...
Und noch mehr Fragen:
Warum werden Zeichenfolgen wie "ü" und " " nicht einfach übernommen, sondern durch komische Zeichen ersetzt?
Das Template ist eine UTF-8 codierte Unicode-Datei.
Als AUsgabe möchte ich ebenfalls eine UTF-8 codierte Unicode-Datei haben.
Wie mach ich das mit Genshi ?
(Unter uns: Mit Kid ging das einfach ...)
Warum werden Zeichenfolgen wie "ü" und " " nicht einfach übernommen, sondern durch komische Zeichen ersetzt?
Das Template ist eine UTF-8 codierte Unicode-Datei.
Als AUsgabe möchte ich ebenfalls eine UTF-8 codierte Unicode-Datei haben.
Wie mach ich das mit Genshi ?
(Unter uns: Mit Kid ging das einfach ...)
Was sind "komische" Zeichen? Kann es sein, dass es einfach UTF-8 für die entsprechenden Entities ist? Warum 'ü' und ' ' verwenden, wenn diese Zeichen in UTF-8 kodierbar sind?
Wahrscheinlich "überleben" die Entities gar nicht, weil sie beim Parsen durch die entsprechenden Zeichen ersetzt werden.
Edit:
Wahrscheinlich "überleben" die Entities gar nicht, weil sie beim Parsen durch die entsprechenden Zeichen ersetzt werden.
Edit:
Code: Alles auswählen
In [306]: genshi.HTML('ü').render()
Out[306]: '\xc3\xbc'
In [307]: print genshi.HTML('ü').render().decode('utf-8')
ü
Ich mal selber nachgeschaut ...
1) Laut meinem Editor ist die HTML-Datei eine UTF-8 codierte Unicode-Datei
2) Wenn ich es dem Browser sage, zeigt er mir auch alles korrekt an
Warum ich dem Browser erst sagen muss, das es eine UTF-8 codierung ist, kann ich mir auch denken ...
Ich vermute mal, ihm fehlt so etwas
Kid hat diese Zeile von selbst hinzugefügt, darum ist mir das bisher nicht aufgefallen ...
1) Laut meinem Editor ist die HTML-Datei eine UTF-8 codierte Unicode-Datei
2) Wenn ich es dem Browser sage, zeigt er mir auch alles korrekt an
Warum ich dem Browser erst sagen muss, das es eine UTF-8 codierung ist, kann ich mir auch denken ...
Ich vermute mal, ihm fehlt so etwas
Code: Alles auswählen
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
Kann man das vermeiden ? (Ich würde mein " " gerne behalten ...)BlackJack hat geschrieben:Wahrscheinlich "überleben" die Entities gar nicht, weil sie beim Parsen durch die entsprechenden Zeichen ersetzt werden.
Keine Ahnung ob sich das vermeiden lässt. Das ersetzen würde ich von einem XML-Template schon erwarten weil es nach dem Parsen keine XML-Entities mehr gibt. Die werden beim Parsen ersetzt.
Ich würde eher erwarten, das sich das irgendwo einstellen lässt ...
Ich weiss zwar nicht genau, ob " " eine XML-Entiät ist, aber es ist auf jeden Fall eine HTML-Entität ...
Ich weiss zwar nicht genau, ob " " eine XML-Entiät ist, aber es ist auf jeden Fall eine HTML-Entität ...
Und auf zum nächsten Problem:
Wie bringe ich Genshi dazu, XML-Entitäten aus dieser JavaScript-Zeile durch && zu ersetzen ?
&& kann ich ja nicht ins Template schreiben ...
Wie bringe ich Genshi dazu, XML-Entitäten aus dieser JavaScript-Zeile
Code: Alles auswählen
var sec_stat = (e.length != 0) ? e[0].checked && status : status;
&& kann ich ja nicht ins Template schreiben ...
Das JavaScript sollte da überhaupt nicht drin sein, sondern in einer eigenen Datei - dann gibt es das Problem nicht.
Ich bin mir gerade nicht sicher, ob es eine Genshi-Funktion gibt, die Output ins Template einfügt, ohne diesen zu maskieren und stattdessen als gültiges XML anzunehmen. Alternativ könnte eine CDATA-Maskierung des JavaScript-Stücks helfen (die man ja mittlerweile ohnehin bei Inline-JavaScript anstatt nur HTML-Kommentaren zu verwenden scheint).
Ich bin mir gerade nicht sicher, ob es eine Genshi-Funktion gibt, die Output ins Template einfügt, ohne diesen zu maskieren und stattdessen als gültiges XML anzunehmen. Alternativ könnte eine CDATA-Maskierung des JavaScript-Stücks helfen (die man ja mittlerweile ohnehin bei Inline-JavaScript anstatt nur HTML-Kommentaren zu verwenden scheint).
Dummerweise muss in der HTML-Datei, die am Schluss entstehen soll, auch ein Teil JavaScript rein ...
Aber da ich das Haupt-Template ohnehin in mehrere Dateien aufgeteilt habe, darunter auch eine für den JavaScript-Teil, gibt es eine Lösung:
Aber da ich das Haupt-Template ohnehin in mehrere Dateien aufgeteilt habe, darunter auch eine für den JavaScript-Teil, gibt es eine Lösung:
- JavaScript-Teil in ein Text-Template umwandeln
- Dieses JavaScript-Template separat einlesen und behandeln
- Das Ergebnis als Variable in das XHTML-Template einfügen