Booklet-XML

Tipp

Grundlagenwissen zum Aufbau einer XML ist hier zu finden.

flowchart LR
  A[Basis-Pakete für Player] --> B[Player]
  B --> C[Units]
  C --> D[Booklets]
  D --> E[Testtakers]
  style D fill:#a0e3f3

Grundstruktur

Das Beispiel zeigt eine minimale Version einer Booklet-XML.

booklet1.xml
<?xml version="1.0"?>
<Booklet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
1         xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/iqb-berlin/testcenter/14.14.0/definitions/vo_Booklet.xsd">
2  <Metadata>
    <Id>booklet1</Id>
    <Label>Testheft 1</Label>
  </Metadata>
  <Units>
3    <Unit id="M1_JK05" label="Schriftliche Verfahren Plus 1" labelshort="1"/>
    <Unit id="M2_AK18" label="Längen - 15cm" labelshort="2"/>
    <Unit id="M2_IP23" label="Messbecher_3/4 Liter" labelshort="3"/>
  </Units>
</Booklet>
1
Verweis auf XML-Schema: Ein XML-Schema ist eine maschinenlesbare Liste aller möglichen Syntax-Elemente einer XML-Datei. Viele Text-Editoren benutzen die Angabe xsi:noNamespaceSchemaLocation zur Validierung, und auch das IQB-Testcenter prüft darüber, ob die Syntax korrekt ist. Bitte nutzen Sie die jeweils aktuelle Version.
2
Metadaten: Die ID und das Label sind zwingend zu deklarieren. Die ID wird referenziert in den Testtaker-XML und das Label wird der Testperson angezeigt nach dem Login, wenn mehrere Testhefte zur Auswahl stehen. Es kann noch ein Description-Element hinzugefügt werden.
3
Units: Die Liste der Units, die präsentiert werden sollen. Die id verweist auf eine im Arbeitsbereich vorhandene Unit. Das label wird ggf. als Überschrift verwendet. Das labelshort wird z. B. in der Navigationsleiste verwendet als Beschriftung für einen Button.

Booklet-Einstellungen

Um die Erscheinung und das Verhalten des Booklets zu beeinflussen, gibt es eine Vielzahl von Parametern in <BookletConfig>. Sie werden in einem dafür reservierten Abschnitt der Booklet-XML deklariert.

booklet2.xml
<?xml version="1.0"?>
<Booklet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/iqb-berlin/testcenter/14.14.0/definitions/vo_Booklet.xsd">
  <Metadata>
    <Id>booklet1</Id>
    <Label>Testheft 1</Label>
  </Metadata>
1  <BookletConfig>
2    <Config key="pagingMode">buttons</Config>
    <Config key="page_navibuttons">OFF</Config>
    <Config key="controller_design">2018</Config>
  </BookletConfig>
  <Units>
    <Unit id="M1_JK05" label="Schriftliche Verfahren Plus 1" labelshort="1"/>
    <Unit id="M2_AK18" label="Längen - 15cm" labelshort="2"/>
    <Unit id="M2_IP23" label="Messbecher_3/4 Liter" labelshort="3"/>
  </Units>
</Booklet>
1
Das BookletConfig-Element muss unmittelbar nach den Metadaten platziert werden.
2
Jeder Konfigurationseintrag besteht aus einem key und dem inneren Teil des Elementes, dem Wert (value)

Die vollständige Liste der Booklet-Einstellungen finden Sie hier. Diese Liste ist nicht Bestandteil dieser Dokumentation, um nicht Irritationen durch mangelnde Aktualität zu riskieren. Die Liste wird automatisch erzeugt und ist verlässlich Teil der Programmierung.

Strukturierung über Blöcke

Die Units in Blöcke (engl. testlets) aufzuteilen, dient zunächst der Übersicht und auch ggf. der Navigation. Außerdem gibt es in vielen Testdesigns Blöcke entsprechend einer Testdomäne, d. h. es entspricht der Tradition.

Im Testcenter können für Units in Blöcken bestimmte Restriktionen gesetzt werden, die sehr wichtig aus Sicht der Testadministration sind. Das folgende Beispiel enthält alle drei derzeit möglichen Restriktionen:

booklet3.xml
<?xml version="1.0"?>
<Booklet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/iqb-berlin/testcenter/14.14.0/definitions/vo_Booklet.xsd">
  <Metadata>
    <Id>booklet1</Id>
    <Label>Testheft 1</Label>
  </Metadata>
  <Units>
    <Unit id="Welcome" label="Willkommen zum Test" labelshort="-"/>
1    <Testlet id="Testlet1" label="Aufgaben">
2      <Restrictions>
3        <CodeToEnter code="BUS">
          Bitte warte, bis dir ein Freigabewort gesagt wird.
        </CodeToEnter>
4        <TimeMax minutes="10" />
5        <DenyNavigationOnIncomplete presentation="ALWAYS" response="ALWAYS" />
      </Restrictions>
      <Unit id="M1_JK05" label="Schriftliche Verfahren Plus 1" labelshort="1"/>
      <Unit id="M2_AK18" label="Längen - 15cm" labelshort="2"/>
      <Unit id="M2_IP23" label="Messbecher_3/4 Liter" labelshort="3"/>
    </Testlet>
    <Unit id="Goodbye" label="Danke für Deine Teilnahme" labelshort="-"/>
  </Units>
</Booklet>
1
Die id ist für interne Zwecke notwendig und muss einmalig im Booklet vorkommen. Das label kann z. B. auf einer erweiterten Navigationsseite angezeigt werden.
2
Das Restrictions-Element muss stets das erste innerhalb eines Blockes sein. Die Elemente darin sind optional, müssen aber – sofern vorhanden – in genau dieser Reihenfolge vorkommen: CodeToEnter –> TimeMax –> DenyNavigationOnIncomplete.
3
Die Restriktion CodeToEnter legt fest, dass eine Dialogbox gezeigt wird beim Versuch, den Block zu betreten. Erst nach Eingabe des Codes, der im Attribute code übergeben wird, kann man den Block betreten. Groß- und Kleinschreibung spielt keine Rolle. Der Text innerhalb des Elementes wird in der Dialogbox als Aufforderung angezeigt. Diese Restriktion dient der Synchronisation des Testablaufes innerhalb einer Testgruppe (Klasse), um Gelegenheit für weitere Ansagen zu haben.
4
TimeMax: Nach Ablauf der angegeben Zeit wird in die erste Unit nach dem Block navigiert. Die Testperson kann das nicht verhindern. Es gibt für den Versuch des vorzeitigen Verlassens des Blockes ein optionales Attribut leave, das festlegt, ob eine Warnung ausgegeben wird (Wert confirm; Standardverhalten) oder ein Verlassen generell nicht erlaubt wird (Wert forbidden).
5
Mit der Restriktion DenyNavigationOnIncomplete wird das Verlassen einer Unit verhindert, wenn die Präsentation (Attribut presentation) und/oder die Antworten (Attribut response) unvollständig sind. Die möglichen Werte sind OFF-Keine Beschränkung, ON-Vorwärtsgehen wird verhindert und ALWAYS-Vor- und Rückwärtsgehen wird verhindert. Damit überschreibt man für diesen Block eine ggf. als Booklet-Konfiguration gesetzte Regel (force_presentation_complete bzw. force_response_complete; beide haben OFF als Standard).
Tipp

Sehen Sie stets alleinstehende Units jeweils vor und nach einem Block mit Restriktionen vor. Das können einfache Ankündigungen sein. Dadurch verhindern Sie, dass die Restriktionen von Blöcken sich gegenseitig behindern und die Testperson weder vor- noch zurückgehen kann.

Blöcke können geschachtelt sein, d. h. Blöcke können wieder Blöcke enthalten usw. Damit können Sie Restriktionen feingranular setzen. Gehen Sie damit vorsichtig um, da Restriktionen sich auch gegenseitig behindern können.

Unit-Alias

Es mag Units geben, die mehrfach von der Testperson beantwortet werden sollen. Dazu gehören z. B. Fragen zur Einstellung zum Test, da diese sich über den Verlauf des Tests ändern könnte. Auch Feedback-Items, die Kommentare der Testperson an die Macher des Tests abfragen, gehören dazu. Es ist dann kein Versehen, sondern gehört zum Testgegenstand dazu.

Prinzipiell ist das ein Problem, denn die Antworten werden stets der Unit zugeordnet. Diese Zuordnung ist gefährdet, wenn eine Unit mehrfach vorkommt. Daher erzeugt das Testcenter in diesem Fall automatisch einen Alias: An die Unit-Definition wird ein numerischer Suffix angehängt, und die Zuordnung erfolgt korrekt. In den Antwortdaten finden sich dann beide Vorkommen der Unit mit unterschiedlichen Unit-Bezeichnungen.

Dieses automatische Verhalten kann man steuern, indem im Unit-Element das Attribut alias gesetzt wird:

  <Unit id="Motivation42" alias="Motivation42_Start"
        label="Eine Frage zum Start" labelshort="1"/>
  ...
  <Unit id="Motivation42" alias="Motivation42_End"
        label="Eine Frage zum Ende" labelshort="18"/>
Vorsicht

Wenn eine Unit mehrfach vorkommt, aber in verschiedenen Booklets, kann das Testcenter diese mögliche Kollision der Antwortdaten nicht feststellen. Führen Sie also bei der Verarbeitung der Antwortdaten stets die Booklet-Id mit, um darüber die Eindeutigkeit zu gewährleisten.

Angepasste Texte: CustomTexts

Einige Texte, die im Zusammenhang eines Tests oder einer Befragung als Titel, Eingabeaufforderung oder Warnung usw. gezeigt werden, können – spezifisch für dieses Booklet – geändert werden.

1  <CustomTexts>
2    <CustomText key="login_testEndButtonText">
3       Test beenden
    </CustomText>
  </CustomTexts>
1
Das CustomTexts-Element muss direkt hinter dem Metadaten-Element eingefügt werden.
2
Über das Attribut key referenziert man einen bestimmten Eintrag aus der Liste (s. u.).
3
Im Inhalt des CustomText-Elementes wird der neue zu verwendende Text platziert.

Beispiele:

  • Ansprache der Testperson ändern: “Du” oder “Sie”?
  • Bezeichnung der Studie ändern: Ist es eine “Evaluation” oder eine “Lernausgangslage”?

Eine vollständige Liste mit den verfügbaren CustomTexts finden Sie hier. Achten Sie auf den Präfix des Keys: Damit wird der Verwendungszusammenhang angezeigt.

Zurück nach oben