Programmierhandbuch Fragebogengenerator


Dieses Dokument enthält Hinweise zum Aufbau, der Funktionsweise und den Zusammenhängen zwischen den verschiedenen Dateien des Fragebogengenerators. Es wird vorausgesetzt, dass dem Leser die Funktionsweise des XML2HTML-Tools vertraut ist.

Zunächst gibt es einige allgemeine Erläuterungen zum Konzept.

Es folgt dann im zweiten Abschnitt eine Auflistung der die Fragebögen beschreibenden Parameter und im dritten Abschnitt eine Beschreibung des Aufbaus der Datenkank.

Im Anschluss werden im vierten Abschnitt die Dateien beschrieben, die vom Browser aus aufgerufen werden, und schließlich im fünften Abschnitt die in diesen Dateien verwendeten styles. Es wird dabei nicht im Detail auf jedes einzelne Tag und deren Attribute eingegangen. Vielmehr steht die Darstellung, wofür die jeweilige Datei verwendet wird, im Mittelpunkt.

Zu jeder Datei gibt es eine Kurzreferenz mit den folgenden Angaben:

Styles:Welche Styles werden von dieser Datei eingebunden?
HTML-Code:Steht in der Datei endgültiger HTML-Code, der also nicht mehr ersetzt wird? Ja/Nein
DB-Zugriff:Werden in der Datei Datenbankfunktionen genutzt? Ja/Nein

1. allgemeine Erläuterungen

Um einen Fragebogen zusammenbauen zu können, müssen natürlich zunächst dessen Bestandteile extrahiert werden. Der vorliegende Fragebogengenerator unterscheidet Textelemente, Trennelemente und natürlich Fragen, wobei letztere noch weiter unterteilt werden. Da die Kenntnis der verschiedenen Elemente nicht nur für den Programmierer sondern auch für den Anwender wichtig ist, sei an dieser Stelle nur auf das Benutzerhandbuch verwiesen, wo die Elemente ausführlich beschrieben werden.

Jedes dieser Elemente wird nun durch spezifische, eindeutig benannte Parameter beschrieben. Namen und Werte dieser Parameter werden zusammen in der Datenbank abgespeichert, die Namen ausserdem auch als Namen der Eingabefelder in den Eingabemasken verwendet. Dies ermöglicht eine einfache Speicherung der Daten. Durch die eindeutige Benennung der Parameter kann von jedem dieser Parameter auf die Art des zugehörigen Elementes geschlossen werden, der Typ muss also nicht noch extra abgespeichert werden.


2. Liste der Fragebogenparameter

Bei den folgenden Attributen handelt es sich nur um jene, die einen Fragebogen bzw. dessen Elemente näher beschreiben. Es handelt sich dabei nicht um eine Aufzählung aller Attribute sämtlicher verwendeter Tags. Alle diese Attribute werden auch in der Datenbank abgespeichert, sind also die gültigen Werte für das Feld _Attributes_ in der Tabelle _formdata_.

Attributnamemögliche WerteElement(e)Bedeutung
FORMIDintegerFragebogen allgemeinEindeutige Ziffernfolge, generiert aus Datum und Uhrzeit, zur Identifikation der Fragebögen
ORDERNOintegeralleReihenfolgenposition der Elemente innerhalb des Fragebogens
FrmTitletextFragebogen allgemeinTitel/Überschrift
FrmDescriptiontextFragebogen allgemeinBeschreibung
FrmCreatedOndatumFragebogen allgemeinDatum der Erstellung
FrmCreatedBytextFragebogen allgemeinName des Erstellers
FrmLastUpdateddatumFragebogen allgemeinDatum der letzten Änderung
FrmShowTitlebooleanFragebogen allgemeinAnzeige der Überschrift im Fragebogen?
FrmBgColorfarbwertFragebogen allgemeinHintergrundfarbe
FrmFgColorfarbwertFragebogen allgemeinVordergrundfarbe
TxtTexttextTextelementText eines Textelementes
TxtAlignmentleft, center, rightTextelementAusrichtung des Textes
TxtSize[-5..+5]TextelementGröße des Textes
TxtColorfarbwertTextelementFarbe des Textes
TxtLinkTargetintegerTextelementNummer der Frage, auf die das Textelement verweisen soll
SepTypehr, space, imgTrennelementTyp des Elementes
SepDatainteger, urlTrennelementNähere Angaben zum Ausgewählten Typ
QstNumberintegerFragenNummer einer Frage
QstShowNumberbooleanFragenAnzeige der Fragenummer im Fragebogen?
QstTexttextFragenText einer Frage
QstAlignmentleft, center, rightFragenAusrichtung des Fragetextes
QstAnswerAlignmentaaal, aaar, baar (*)FragenAusrichtung der Antwort
InpTxtLengthintegerTextfrageLänge des Feldes
InpTxtWidthintegerTextfrageBreite des Feldes
InpTxtHeightintegerTextfrageHöhe des Feldes
InpSelTyperadio, kombi, lists, check, listmAuswahlfragenTyp des Auswahlelementes
InpSelOptionValuestextAuswahlfragenWerte und Bezeichnungen der Optionen
InpSelDefaultintegerAuswahlfragenVorausgewählter Wert
InpSelAlignTextbehind, before, aboveAuswahlfragenAnordnung der Optionsbezeichnungen
InpSelAlignOptionshorizontal, verticalAuswahlfragenAnordnung der Optionen
InpSelBlockValuestextBlockfrageUnterfragen
InpSelSubQstAlignmentleft, center, rightBlockfrageAnordnung der Unterfragen

3. Aufbau der Datenbank

Es werden vom Fragebogengenerator die folgenden Tabellem verwendet:

formdata - für die Fragebogendaten selbst:

FeldnameWertebereichBeschreibung
FORMIDVarchar(20)eindeutige Identifikation zur Unterscheidung der Fragebögen
ORDERNOIntegerReihenfolgeposition des Elementes im Fragebogen
ATTRIBUTEVarchar(50)Name des zum Element gehörigen Attributes
VALUETextWert des bezeichneten Attributes

results - für die Ergebnisse der Befragungen:

FeldnameWertebereichBeschreibung
FORMIDVarchar(20)eindeutige Identifikation zur Unterscheidung der Fragebögen
SESSSIONIDvarchar(20)eindeutige Identifikation zur (anonymen) )Unterscheidung der antwortenden Personen
QUESTIONNOVarchar(9)Nummer der Frage im angegebenen Fragebogen
ANSWERtextAusgewählte bzw. eingegebene Antwort

resultlog - für die Zeiten der Ergebniseintragungen:

FeldnameWertebereichBeschreibung
SESSSIONIDVarchar(30)Eintragsidentifikation
REMOTEHOSTVarchar(30)Addresse des Clientrechners

4. aufrufbare XML-Dateien

Der Aufruf des Fragebogengenerators geschieht über die Datei index.html. Dieses ist die einzige Datei, die (ohne Argumente) direkt aufgerufen werden kann. Die Datei element.html wird nur vom Fragebogengenerator aufgerufen und hat ohne die von diesem übergebenen Parameter keine Funktion. Die Datei form.html schließlich sorgt für die Ausgabe des Fragebogens. Das Abspeichern der von einem ausgefüllten Fragebogen gesendeten Daten übernimmt die Datei ergebnis.html.
Im folgenden ist der Inhalt der drei Dateien noch näher beschrieben.


index.html

Diese Datei liefert die allgemeinen Seiten des Fragebogengenerators. Neben der Startseite mit allgemeinen Hinweisen ist dies die Verwaltung der Fragebögen, d.h. die Auswahl der bestehenden Fragebögen mit der Möglichkeit diese zu öffnen oder zu löschen und neue zu erstellen.

Hierzu werden zwei Menüs definiert - ein einfaches, das nur eine Schaltfläche bietet, mit der der Anwender zur Verwaltung kommt und ein umfangreicheres, das die Schaltflächen zum Erstellen, Öffnen, Löschen etc. zur Verfügung stellt.

Zu diesen beiden Menüs werden zwei Inhalte definiert. Zum einen ein Bereich mit allgemeinen Hinweisen und zum anderen ein Bereich mit der Liste zur Auswahl bereits existierender Fragenbögen.

Aus Menü und Inhalt wird dann jeweils ein <layout> Tag gebildet. Näheres hierzu bei der Beschreibung des layout.style.

Ausserdem wird in dieser Datei das Neuerstellen, Kopieren und Löschen von Fragebögen durchgeführt. Die Steuerung erfolgt dabei mit Hilfe der in der folgenden Tabelle aufgeführten Parameter:

NameWerteBeschreibung
Action[delete | display | describe | copy | link | ""]gibt an, welche Aktion vor Anzeige der Seite ausgeführt werden soll
FORMIDStringIdentifikationsnummer des aktuell ausgewählten Fragebogens
CopyIDStringIdentifikationsnummer des neuen Fragebogens, wenn ein Fragebogen kopiert wird (Action = "copy")
LinkStringLink zu einem Fragebogen

Styles:basics.style, databasesetup.style, layout.style
HTML-Code:Ja
DB-Zugriff:Ja

element.html

Diese Datei ist für die Darstellung der verschiedenen Eingabemasken verantwortlich. Auch hier wird - wie in index.html - das Menü definiert und aus diesem und dem Inhalt ein <layout> Tag (siehe layout.style) gebildet. Der Inhalt besteht hier in jedem Fall aus dem Tag <getelements>, dass in output.style definiert ist.

Neben der Ausgabe sind hier die Datenbankzugriffe zum Speichern, Löschen und Kopieren der Elemente implementiert. Die Parameter zur Steuerung sind der folgenden Tabelle zu entnehmen:

NameWerteBeschreibung
Action[display | new | save | ordercount | delete | copy]gibt an, welche Aktion vor Anzeige der Seite ausgeführt werden soll
FORMIDStringIdentifikationsnummer des aktuell bearbeiteten Fragebogens
ORDERNOZahlNummer des Fragebogenelements, das aktuell angezeigt bzw. bearbeitet wird
OrderMaxZahlNummer des letzten Fragebogenelementes + 1
NewElem[qsttxt | qstmul | qstblk | sep | txt | frm]wird angegeben, wenn ein neues Element in den Fragebogen eingefügt werden soll; anhand des Wertes ist erkennbar, welches Element neu eingefügt werden soll
Statusinsertedwurde ein Element neu eingefügt und noch nicht gespeichert, so wird dieser Parameter überliefert
CopyNoZahlwird angegeben, wenn ein Element kopiert wird; gibt die Position im Fragebogen an, an die kopiert werden soll

Styles:basics.style, databasesetup.style, layout.style, input.style, output.style
HTML-Code:Ja
DB-Zugriff:Ja

form.html

Diese Datei gibt einen fertigen, in der Datenbank existierenden Fragebogen aus. Sie wird vom Fragebogengenerator für die Vorschau verwendet, kann aber ebenso direkt per Link aufgerufen werden. Hierzu muss lediglich die ID eines Fragebogens übergeben werden. Ein korrekter Link zu einem Fragebogen lässt sich mit dem Tool erzeugen.

Styles:output.style
HTML-Code:Ja
DB-Zugriff:Nein

ergebnis.html

Diese Datei veranlasst durch Einbindung des Makros resultinput.style die Abspeicherung der Ergebnisse aus einem ausgefüllten Fragebogen in der Datenbank und liefert eine kurze Seite mit einer Danksagung für das Ausfüllen des Fragebogens an den Browser zurück.

Styles:resultinput.style
HTML-Code:Ja
DB-Zugriff:Nein

5. style-Dateien (Makros)

Hier folgt nun eine Liste der verwendeten style-Dateien, jeweils mit kurzer Beschreibung, was das style macht. Die Liste ist alphabetisch nach Dateinamen geordnet. Es dürfte jedoch sinnvoller sein, beim Lesen von dieser Reihenfolge abzuweichen und sich die styles in der Reihenfolge ihrer Einbindung im Ersetzungsprozess anzuschauen. Begonnen werden sollte dann mit einem der oben bereits erwähnten Makros.


basics.style

Hier werden nur einige wenige, in mehreren anderen styles verwendete Tags definiert. Im eigentlichen Darstellungsprozess spielt diese Datei nur eine untergeordnete Rolle.

Styles: 
HTML-Code:Nein
DB-Zugriff:Nein

databasesetup.style

Dieses style sorgt für die für die Einbindung der Datenbankschnittstelle. Hier werden auch die Datenbankparameter wie Datenbankname, Benutzername etc. festgelegt.

Styles:dbcutil.style
HTML-Code:Nein
DB-Zugriff:Nein

dbcutil.style

Definition einiger Tags zur Vereinfachung von Datenbankzugriffen. Erstellung erfolgte bereits durch den Autor der XML2HTML-Datenbankschnittstelle.

Styles: 
HTML-Code:Nein
DB-Zugriff:Nein

formoutput1.style

Dieses style wird zur Ausgabe des Fragebogens verwendet.
Das Makro sorgt für eine weitere Detailierung der in output.style erzeugten Tags. Es wird insbesondere durch getrennte Tags genauer zwischen verschiedenen Frage- bzw. Antworttypen unterschieden. Auf diese Weise entsteht ein strukturiertes, gut lesbares XML-Dokument, das einen kompletten Fragebogen darstellt.

Styles:formoutput2.style
HTML-Code:Nein
DB-Zugriff:Nein

formoutput2.style

In diesem style ist festgelegt, wie ein Fragebogen im Format eines durch formoutput1.style generierten XML-Dokumentes bzw. dessen Elemente in HTML aussehen sollen. Soll das Aussehen der fertigen Fragebögen geändert werden, so kann das also in diesem style geschehen.

Styles: 
HTML-Code:Ja
DB-Zugriff:Nein

input.style

Dieses style übernimmt das Einschreiben der Parameter eines beliebigen Fragebogenelementes in die Datenbank.

Styles: 
HTML-Code:Nein
DB-Zugriff:Ja

layout.style

In diesem style wird das Tag <layout> definiert. Es stellt den allgemeinen Seitenaufbau zur Verfügung. Dieser besteht aus einem Menübereich und einem Inhaltsbereich. Was jeweils als Menü und als Inhalt in der Seite dargestellt werden soll, wird über die Attribute menu und content übergeben.

Styles: 
HTML-Code:Ja
DB-Zugriff:Nein

maskoutput.style

Mit diesem style werden die verschiedenen Eingabemasken erzeugt, jenachdem, ob es sich bei dem aus der Datenbank ausgelesenen Element um Fragebogendaten, eine Frage, einen Text oder eine Trennung handelt. Im Falle einer Frage wird noch weiter unterschieden in Fragen mit Textantwort, einer Auswahlantwort oder mehreren Auswahlantworten.

Styles:standardanswers.style
HTML-Code:Ja
DB-Zugriff:Nein

output.style

Dieses style definiert das Tag <getelements> und ist damit Ausgangspunkt für jegliche Ausgaben von Datenbankinhalten. Es wird sowohl in form.html als auch in element.html verwendet.

Zunächst werden aus den Datenbankinhalten allgemeine Tags gebildet. Diese allgemeinen Tags werden in einem weiteren Schritt dann in unterschiedliche Tags ausgetauscht, jenachdem ob es sich bei dem Element um allgemeine Fragebogendaten, eine Frage, ein Trennelement oder ein Textelement handelt.

Die weitere Ersetzung dieser Tags erfolgt dann entweder durch maskoutput.style, wenn eine Eingabemaske für das entsprechende Element erzeugt werden soll, oder durch formoutput1.style, wenn der gesamte Fragebogen ausgegeben werden soll.

Styles:databasesetup.style, basics.style, entweder formoutput1.style oder maskoutput.style
HTML-Code:Nein
DB-Zugriff:Ja

resultinput.style

Liest die übergebenen CGI-Argumente aus und speichert sie in der Tabelle results in der Datenbank.

Styles: 
HTML-Code:Nein
DB-Zugriff:Ja

standardanswers.style

Beinhaltet die standardisierten Skalen für Auswahlantworten.

Styles: 
HTML-Code:Nein
DB-Zugriff:Nein

last modified: $Date: 2000/09/18 16:39:25 $