next up previous contents index
Nächste Seite: Datenstruktur und Dokumententyp-Definition QuestionaryAnswer Aufwärts: Datenstrukturen Questionary und QuestionaryAnswer Vorherige Seite: Datenstrukturen Questionary und QuestionaryAnswer   Inhalt   Index


Datenstruktur und Dokumententyp-Definition Questionary

Im Abschnitt 2.1 wurde die Dokumententyp-Definition von Fragebogen vorgestellt. Die Verarbeitung von Fragebögen basiert auf der Eins-Zu-Eins-Abbildung eines in XML spezifizierten Fragebogens in die entsprechende Datenstruktur. Wie dies realisiert ist, zeigen die beiden unteren Beispiele.

Ein Fragebogen ist laut der Dokumententyp-Definition wie folgt aufgebaut:

<!ELEMENT Questionary
  (Password?, QuestionaryHead?, QuestionaryTitle, Chapter+)>

Die korrespondierende Datenstruktur hat die folgende Form:

data Questionary =
  Questionary Password QuestionaryHead QuestionaryTitle [Chapter]

Während Password und QuestionaryHead aus weiteren Unterstrukuren (mehrere fallabhängige Konstruktoren) bestehen, wird QuestionaryTitle entsprechend der Vorgabe durch die Dokumententyp-Definition auf eine auf String aufbauende Datenstruktur abgebildet.

Diese schrittweise Abbildung der XML-Spezifikation auf die Datenstruktur Questionary setzt sich in die tiefe der Strukturen fort. Die Korrespondez von Chapter hat die folgenden Form.

<!ELEMENT Chapter (ChapterTitle?, Paragraph*, QuestionSegment+)>
data Chapter = Chapter ChapterTitle [Paragraph] [QuestionSegment]

Ähnlich wie im oberen Beispiel wird ChapterTitle auf eine verfeinerte Datenstruktur abgebildet. Paragraph* und QuestionSegment+ werden auf Listen von entsprechenden Elementen abgebildet. Hier wird allerdings nicht die Korrektheit der Konstrukte * und + überprüft.

Ein weiteres Beispiel ist der Aufbau von möglichen Antworten:

Die Dokumententyp-Definition spezifiziert dies folgendermaßen:

<!ELEMENT Answer (Textfield | Textarea | GroupAnswer+)>

<!ELEMENT GroupAnswer ((StaticText | Textfield), GroupElement+)>
<!ATTLIST GroupAnswer Method (BUTTON | SINGLELIST | MULTILIST | CHECKBOX)
                             #REQUIRED
                      ID CDATA #REQUIRED
                      ColumnNumber CDATA #IMPLIED>

<!ELEMENT GroupElement (#PCDATA)>
<!ATTLIST GroupElement Value CDATA #REQUIRED
                       Selected (YES | NO) #IMPLIED>

Die Umsetzung in die Datenstruktur sieht wie folgt aus:

data QAnswer = QTextfield Content ID Width
             | QTextarea  Content ID Width Height
             | QGroupAnswer [QGroup]

data QGroup = QGroup QGroupField Method ID Column [QGroupElement]

data QGroupField = QGroupStaticText PCData
                 | QGroupTextfield Content ID Width
data Method   = QButton | QSingleList | QMultiList | QCheckbox

data QGroupElement = QGroupElement Content Value Selected

ID und Column werden durch die vorgegebenen Datentypen String bzw. Int realisiert.

Der vollständige Aufbau der Dokumententyp-Definition und der Datenstruktur Questionary sind im Abschnitt 2.1 bzw. im Modul Questionary.curry zu finden


next up previous contents index
Nächste Seite: Datenstruktur und Dokumententyp-Definition QuestionaryAnswer Aufwärts: Datenstrukturen Questionary und QuestionaryAnswer Vorherige Seite: Datenstrukturen Questionary und QuestionaryAnswer   Inhalt   Index
Barbara Bennemann 2004-10-22