Booklet-XML
Grundlagenwissen zum Aufbau einer XML ist hier zu finden.
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">
2Metadata>
<Id>booklet1</Id>
<Label>Testheft 1</Label>
<Metadata>
</Units>
<3Unit 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. Daslabel
wird ggf. als Überschrift verwendet. Daslabelshort
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>
</1BookletConfig>
<2Config 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="-"/>
<1Testlet id="Testlet1" label="Aufgaben">
<2Restrictions>
<3CodeToEnter code="BUS">
<
Bitte warte, bis dir ein Freigabewort gesagt wird.CodeToEnter>
</4TimeMax minutes="10" />
<5DenyNavigationOnIncomplete 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. Daslabel
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 (Wertconfirm
; Standardverhalten) oder ein Verlassen generell nicht erlaubt wird (Wertforbidden
). - 5
-
Mit der Restriktion DenyNavigationOnIncomplete wird das Verlassen einer Unit verhindert, wenn die Präsentation (Attribut
presentation
) und/oder die Antworten (Attributresponse
) unvollständig sind. Die möglichen Werte sindOFF
-Keine Beschränkung,ON
-Vorwärtsgehen wird verhindert undALWAYS
-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 habenOFF
als Standard).
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"/>
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.
Adaptives Testen
In der Booklet-XML findet die Konfiguration für das adaptive Testen statt. Hier wird festgelegt unter welchen Bedingungen bestimmte Testhefte und Aufgaben angezeigt werden. Wie die Konfiguration vorzunehmen ist, ist dem Kapitel: Adaptives Testen zu entnehmen.
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.
1CustomTexts>
<2CustomText key="login_testEndButtonText">
<3
Test beendenCustomText>
</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.
Textersetzungen die bereits in der Testtaker-XML definiert wurden, werden von den Textersetzungen in der Booklet-XML überschrieben.