The QTI 2.x / QTI 3.0 dialect difference, in three pure functions.
QTI 3.0 (1EdTech, 2022) renamed every 2.x element to a qti- prefixed
kebab-case form (choiceInteraction became qti-choice-interaction)
and every multi-word attribute to kebab-case (responseIdentifier became
response-identifier); attribute VALUES such as directedPair and the
semantics of the mappable subset did not change. So the import and export
code keeps speaking 2.x names internally, and only the edges translate:
canonicalName on the way in, elementName /
attributeName on the way out.
The QTI 2.x / QTI 3.0 dialect difference, in three pure functions.
QTI 3.0 (1EdTech, 2022) renamed every 2.x element to a
qti-prefixed kebab-case form (choiceInteractionbecameqti-choice-interaction) and every multi-word attribute to kebab-case (responseIdentifierbecameresponse-identifier); attribute VALUES such asdirectedPairand the semantics of the mappable subset did not change. So the import and export code keeps speaking 2.x names internally, and only the edges translate:canonicalNameon the way in,elementName/attributeNameon the way out.