# Copyright 2003-2006 Chris Huebsch # Zusammen mit Jakob Voss # Unterstuetzt von Marcel Karras # Version 2.3b vom 12.06.2006 0. Das Tutorial: http://chu.in-chemnitz.de/programmieren/xslt/tutorial/ erlaeutert Datails. 1. Erzeugen eines Fragebogens als XML (Vorlage question1.xml) Root-Objekt ist questionaire @title: Titel der Umfrage @baseurl: URL des Umfragedokumentes @submiturl: URL des Scriptes zum Speichern der Eingaben @db_host: MySql-Datenbanksserver @db_name: Datenbankname im MySql @db_user: Nutzer für MySql @db_pass: Kennwort für MySql und evtl. MD5-Geheimnis @db_table: Tabellenname im MySql @restrict: (optional) Erschwert durch ID-Vergabe das mehrmalige Ausfüllen von Fragebögen. Mögliche Werte: url, inline @css-stylesheet: URL zu einem CSS-File (siehe format.css) Alle diese Parameter können auch per Kommandozeile übergeben werden und überschreiben dann die Werte im XML. Normale HTML-Elemente (p, b, i, font, img, div, br, hr, h1-h5) werden durchgereicht (auch ausserhalb von Fragen) Fragen: Jede Frage hat ein Kind namens (mit HTML-Markup) Optional sind 0 bis n Antworten (je nach Typ) selectquestion (Auswahlen) @type=or: Mehrere Antworten koennen ausgewaehlt werden (Checkbox) @type=xor: Eine Antwort kann ausgewaehlt werden (Radiobox) @type=dropdown: Eine Antwort kann ausgewaehlt werden (html-option) Beim Typ xor und dropdown kann der in die Datenbank einzutragende Wert auch manuell festgelegt werden. Dazu gibt man das Attribut value bei /jedem/ atext an. Es müssen ganze Zahlen verwendet werden. Beim Typ xor kann pro Zeile maximal ein angegeben werden. rangequestion (Bereichsauswahl) zwischen @left und @right werden @count Radiobuttons erzeugt txtquestion (Einzeilie Eingabefelder) Es koennen mehrere mit einem eingebetteten angegeben werden. Ansonsten wird automatisch erzeugt (-> bei mehreren evtl. Matrixfrage verwenden) txtareaquestion (Mehrzeilige Eingabe) @rows und @cols optional matrixquestion (Matrixfrage) @type (text, or, dropdown, xorr, xorc, mixed) Wahl des Inhaltstyps text: Pro Matrixfeld eine Texteingabe or: Jedes Matrixfeld kann unabhaengig der anderen aktiviert werden dropdown: Matrixfeld enthaelt eine Auswahlliste xorr: Aus jeder Matrixzeile kann nur ein Feld aktiviert werden xorc: Aus jeder Matrixspalte kann nur ein Feld aktiviert werden mixed: Pro Spalte ein eigener Typ. Festlegen im atext als type-Attribut verwendbare Typen: or, xor, text Jeder Typ hat je ein Unterelement namens bzw. dropdown zusätzlich noch diese Elemente enthalten wiederum beliebig viele -Elemente für Zeilen- / Spaltenüberschriften bzw. die Inhalte der dropdown-Felder Nummerierung der Felder: text, or, dropdown: zeilenweise nummeriert (f__) xorr: zeilenweise (f_) von oben nach unten xorc: spaltenweise (f_) von links nach rechts Beim Typ dropdown kann der in die Datenbank einzutragende Wert manuell vergeben werden. Jedes atext-Element der fields-Liste ist dazu mit einem value-Attribut zu versehen. Analoges gilt für die Typen xorc und xorr. Bei xorc sind die value-Attribute bei den atext-Elementen der columns-Liste anzugeben Bei xorr bei den atext-Elementen der rows-Liste.
-Knoten können Fragen gruppieren und werden mit Hilfe von CSS und Java-Script(!!!) einzeln aufgedeckt. ACTUNG: Kompatibilität beachten! -Knoten ist Optional und kann @value als Aufschrift enthalten Text bei erfolgreicher Eingabe Text wird ausgegeben, wenn ID ungültig ist Text wird ausgegeben, wenn ID bereits verwendet wurde 2. Generieren der Dokumente/Scripte a) Eingabeformular erzeugen (Muss bei @restrict=url als PHP erzeugt werden, sonst html) xsltproc tohtml.xsl fb.xml > $basurl b) Speicherscript erzeugen (als PHP) xsltproc tophp.xsl fb.xml > $submiturl c) Datenbankanlegescript erzeugen xsltproc tosql.xsl fb.xml > fb.sql d) Datenbankscript in mysql importieren mysql -h $db_host < fb.sql e) optional Auswertescript erzeugen xsltproc tostat.xsl fb.xml > fb_stat.php f) optional Auswertescript für csv erzeugen xsltproc tocsv.xsl fb.xml > fb_stat_csv.php g) optional HTML-Ansicht mit Fragennummern erzeugen xsltproc -stringparam with-ids yes tohtml.xsl fb.xml > fb_html_id.html h) optional ID-Listen-Script erzeugen xsltproc toids.xsl > fb_id.php 3. Scripte Onlinestellen/Aktivieren a) Eingabeformular und Speicherscript auf php-tauglichen Webserver b) optional Auswertescript c) optional ID-Listen generieren und verschicken/ausdrucken (Browser, Drucker, Schere)