Merge branch 'feature/demodaten_anpassung' into develop

This commit is contained in:
Lorenz Padberg 2022-08-25 11:30:18 +02:00
commit 78ec4569ad
283 changed files with 26488 additions and 18 deletions

View File

@ -52,10 +52,11 @@ const block = computed(() => {
width="100%"
height="100%"
scrolling="no"
src="/media/web_based_trainings/rise_cmi5_test_export/scormcontent/index.html"
:src="block.value.url"
/>
</div>
<div v-else class="mx-auto max-w-5xl px-4 lg:px-8 py-4">
<p>{{ block.value.description }}</p>
@ -84,12 +85,12 @@ const block = computed(() => {
<style lang="scss" scoped>
$header-height: 77px;
$footer-height: 57px;
$header-height: 77px;
$footer-height: 57px;
$content-height: $header-height + $footer-height;
$content-height: $header-height + $footer-height;
.h-screen {
height: calc(100vh - $content-height);
}
.h-screen {
height: calc(100vh - $content-height);
}
</style>

View File

@ -0,0 +1,20 @@
# Generated by Django 3.2.13 on 2022-08-24 14:47
from django.db import migrations
import wagtail.blocks
import wagtail.fields
class Migration(migrations.Migration):
dependencies = [
('learnpath', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='learningcontent',
name='contents',
field=wagtail.fields.StreamField([('video', wagtail.blocks.StructBlock([('description', wagtail.blocks.TextBlock()), ('url', wagtail.blocks.URLBlock())])), ('web_based_training', wagtail.blocks.StructBlock([('description', wagtail.blocks.TextBlock()), ('url', wagtail.blocks.URLBlock())])), ('podcast', wagtail.blocks.StructBlock([('description', wagtail.blocks.TextBlock()), ('url', wagtail.blocks.URLBlock())])), ('competence', wagtail.blocks.StructBlock([('description', wagtail.blocks.TextBlock())])), ('exercise', wagtail.blocks.StructBlock([('description', wagtail.blocks.TextBlock()), ('url', wagtail.blocks.URLBlock())])), ('document', wagtail.blocks.StructBlock([('description', wagtail.blocks.TextBlock())])), ('knowledge', wagtail.blocks.StructBlock([('description', wagtail.blocks.TextBlock())]))], use_json_field=None),
),
]

View File

@ -35,6 +35,8 @@ class CompetenceBlock(blocks.StructBlock):
class ExerciseBlock(blocks.StructBlock):
description = blocks.TextBlock()
url = blocks.URLBlock()
class Meta:
icon = 'media'
@ -47,6 +49,7 @@ class DocumentBlock(blocks.StructBlock):
icon = 'media'
class KnowledgeBlock(blocks.StructBlock):
description = blocks.TextBlock()

View File

@ -9,7 +9,8 @@ from vbv_lernwelt.learnpath.models import LearningPath, Topic, Circle, LearningS
LearningUnitQuestion
from vbv_lernwelt.learnpath.tests.learning_path_factories import LearningPathFactory, TopicFactory, CircleFactory, \
LearningSequenceFactory, LearningContentFactory, VideoBlockFactory, PodcastBlockFactory, CompetenceBlockFactory, \
ExerciseBlockFactory, DocumentBlockFactory, LearningUnitFactory, LearningUnitQuestionFactory
ExerciseBlockFactory, DocumentBlockFactory, LearningUnitFactory, LearningUnitQuestionFactory, \
WebBasedTrainingBlockFactory
def create_circle(title, learning_path):
@ -78,17 +79,44 @@ def create_circle_children(circle, title):
url='https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/325190984&color=%23ff5500&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&show_teaser=true&visual=true',
))]
)
if circle.title == 'Einstieg':
LearningContentFactory(
title='Einstieg ins Gespräch',
parent=circle,
minutes=15,
contents=[('video', VideoBlockFactory(
url='https://onedrive.live.com/embed?cid=26E4A934B79DCE5E&resid=26E4A934B79DCE5E%2153350&authkey=AId6i7z_X8l2fHw',
description='In dieser Circle zeigt dir ein Fachexperte anhand von Kundensituationen, wie du erfolgreich'
'den Kundenbedarf ermitteln, analysieren, priorisieren und anschliessend zusammenfassen kannst.'
))]
)
if circle.title == 'Analyse':
LearningContentFactory(
title='Kundenanalyse',
parent=circle,
minutes=15,
contents=[('video', VideoBlockFactory(
url= "https://onedrive.live.com/embed?cid=26E4A934B79DCE5E&resid=26E4A934B79DCE5E%2153352&authkey=ABAdnARrD5VsIG8",
description=''
))]
)
LearningContentFactory(
title='Kundenbedürfnisse erkennen',
parent=circle,
minutes=30,
contents=[('competence', CompetenceBlockFactory())]
)
LearningContentFactory(
title='Was braucht eine Familie?',
parent=circle,
minutes=60,
contents=[('exercise', ExerciseBlockFactory())]
contents=[('exercise', ExerciseBlockFactory(url='/media/web_based_trainings/story-01-a-01-patrizia-marco-sichern-sich-ab-einstieg/scormcontent/index.html'
))]
)
LearningSequenceFactory(title='Anwenden', parent=circle, icon='it-icon-ls-apply')
@ -155,7 +183,7 @@ def create_circle_children(circle, title):
title='Motorfahrzeug kaufen',
parent=circle,
minutes=120,
contents=[('exercise', ExerciseBlockFactory())]
contents=[('exercise', ExerciseBlockFactory(url='/media/web_based_trainings/training-04-a-01-rafael-fasel-wechselt-sein-auto-einstieg/scormcontent/index.html'))]
)
lu = LearningUnitFactory(title='Pensionierung', parent=circle)
@ -203,7 +231,8 @@ def create_circle_children(circle, title):
title='Sorgenfrei reisen',
parent=circle,
minutes=120,
contents=[('exercise', ExerciseBlockFactory())]
contents=[('exercise', ExerciseBlockFactory(
url='/media/web_based_trainings/story-06-a-01-emma-und-ayla-campen-durch-amerika-einstieg/scormcontent/index.html'))]
)
lu = LearningUnitFactory(title='Haushalt', parent=circle)
@ -310,7 +339,6 @@ def create_default_learning_path(user=None, skip_locales=True):
site.port = 8000
site.save()
# create_default_competences()
lp = LearningPathFactory(title="Versicherungsvermittler/in", parent=site.root_page)
@ -351,7 +379,6 @@ damit erfolgreich mit deinem Lernpfad starten kannst.
contents=[('document', CompetenceBlockFactory())]
)
TopicFactory(title="Gewinnen von Kunden", parent=lp)
circle_gewinnen = CircleFactory(
@ -366,10 +393,14 @@ bestehenden Kontakte geschickt für das Anwerben von
Neukundinnen und -kunden.""",
goals=[
('goal', '... Bestehende Kunden so zu beraten, dass sie von diesen weiterempfohlen werden'),
('goal', '... Geeignete Personen wie z.B. Garagisten, Architekten, Treuhänder auf die Vermittlung / Zusammenarbeit anzusprechen'),
('goal', '... Verschiedene Datenquellen wie Internet, Telefonbuch, Handelszeitung, Baugesuche etc. Gezielt für die Gewinnung von Neukunden zu benützen'),
('goal', '... Ein beliebiges Gespräch resp. Einen bestehenden Kontakt in die Richtung «Versicherung» zu lenken'),
('goal', '... Das Thema Risiko und Sicherheit in einem Gespräch gezielt und auf die Situation des jeweiligen Gesprächspartners bezogen einfliessen zu lassen'),
('goal',
'... Geeignete Personen wie z.B. Garagisten, Architekten, Treuhänder auf die Vermittlung / Zusammenarbeit anzusprechen'),
('goal',
'... Verschiedene Datenquellen wie Internet, Telefonbuch, Handelszeitung, Baugesuche etc. Gezielt für die Gewinnung von Neukunden zu benützen'),
('goal',
'... Ein beliebiges Gespräch resp. Einen bestehenden Kontakt in die Richtung «Versicherung» zu lenken'),
('goal',
'... Das Thema Risiko und Sicherheit in einem Gespräch gezielt und auf die Situation des jeweiligen Gesprächspartners bezogen einfliessen zu lassen'),
('goal', '... Im täglichen Kontakt potenzielle Kundinnen und Kunden zu erkennen'),
],
)
@ -398,7 +429,6 @@ Neukundinnen und -kunden.""",
circle_analyse = create_circle('Prüfungs- vorbereitung', lp)
create_circle_children(circle_analyse, 'Prüfungs- vorbereitung')
# locales
if not skip_locales:
locale_de = Locale.objects.get(language_code='de-CH')

View File

@ -89,6 +89,7 @@ class CompetenceBlockFactory(wagtail_factories.StructBlockFactory):
class ExerciseBlockFactory(wagtail_factories.StructBlockFactory):
description = "Beispiel Aufgabe"
url= "/media/web_based_trainings/rise_cmi5_test_export/scormcontent/index.html"
class Meta:
model = ExerciseBlock

View File

@ -0,0 +1,258 @@
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema id="ScormEnginePackageProperties" targetNamespace="http://www.scorm.com/xsd/ScormEnginePackageProperties"
elementFormDefault="qualified" xmlns="http://www.scorm.com/xsd/ScormEnginePackageProperties"
xmlns:mstns="http://www.scorm.com/xsd/ScormEnginePackageProperties" xmlns:xs="http://www.w3.org/2001/XMLSchema"
attributeFormDefault="qualified">
<xs:element name="ScormEnginePackageProperties">
<xs:complexType>
<xs:all>
<xs:element name="controls" type="controlsSpec" minOccurs="0" maxOccurs="1" />
<xs:element name="appearance" type="appearanceSpec" minOccurs="0" maxOccurs="1" />
<!-- allow for mis-spelling of 'appearance' that's acceptable in our parsing code -->
<xs:element name="appearence" type="appearanceSpec" minOccurs="0" maxOccurs="1" />
<xs:element name="behavior" type="behaviorSpec" minOccurs="0" maxOccurs="1" />
<xs:element name="rsop" type="rsopSpec" minOccurs="0" maxOccurs="1" />
<xs:element name="heuristics" type="heuristicSpec" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
</xs:element>
<xs:complexType name="controlsSpec">
<xs:all>
<xs:element name="showFinishButton" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="showCloseItem" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="showHelp" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="showProgressBar" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="useMeasureProgressBar" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="showCourseStructure" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="courseStructureStartsOpen" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="showNavBar" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="showTitleBar" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="enableFlowNav" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="enableChoiceNav" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="statusDisplay" type="statusDisplayType" minOccurs="0" maxOccurs="1" />
<xs:element name="forceDisableRootChoice" type="yesNoType" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:complexType name="appearanceSpec">
<xs:all>
<xs:element name="displayStage" type="displayStageSpec" minOccurs="0" maxOccurs="1" />
<xs:element name="courseStructureWidth" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:complexType name="behaviorSpec">
<xs:all>
<xs:element name="launch" type="launchSpec" minOccurs="0" maxOccurs="1" />
<xs:element name="exitActions" type="exitActionsSpec" minOccurs="0" maxOccurs="1" />
<xs:element name="communications" type="communicationsSpec" minOccurs="0" maxOccurs="1" />
<xs:element name="debug" type="debugSpec" minOccurs="0" maxOccurs="1" />
<xs:element name="history" type="captureHistorySpec" minOccurs="0" maxOccurs="1" />
<xs:element name="disableRightClick" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="preventWindowResize" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="scoreRollupMode" type="scoreRollupType" minOccurs="0" maxOccurs="1" />
<xs:element name="numberOfScoringObjects" type="xs:int" minOccurs="0" maxOccurs="1" />
<xs:element name="statusRollupMode" type="statusRollupType" minOccurs="0" maxOccurs="1" />
<xs:element name="thresholdScoreForCompletion" type="xs:decimal" minOccurs="0" maxOccurs="1" />
<xs:element name="applyRollupStatusToSuccess" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="firstScoIsPretest" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="finishCausesImmediateCommit" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="invalidMenuItemAction" type="invalidMenuItemActionType" minOccurs="0" maxOccurs="1" />
<xs:element name="alwaysFlowToFirstSco" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="logoutCausesPlayerExit" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="resetRtTiming" type="resetRunTimeDataTimingType" minOccurs="0" maxOccurs="1" />
<xs:element name="lookaheadSequencerMode" type="lookaheadSequencerModeType" minOccurs="0" maxOccurs="1" />
<xs:element name="scoreOverridesStatus" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="allowCompleteStatusChange" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="scaleRawScore" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="useQuickLookaheadSequencer" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="rollupRuntimeAtScoUnload" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="forceObjectiveCompletionSetByContent" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="invokeRollupAtSuspendAll" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="completionStatOfFailedSuccessStat" type="completionStatusType" minOccurs="0" maxOccurs="1" />
<xs:element name="satisfiedCausesCompletion" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="makeStudentPrefsGlobalToCourse" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="returnToLmsAction" type="returnToLmsActionType" minOccurs="0" maxOccurs="1" />
<xs:element name="rollupEmptySetToUnknown" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="validateInteractionTypes" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="suspendDataMaxLength" type="xs:int" minOccurs="0" maxOccurs="1" />
<xs:element name="timeLimit" type="xs:int" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:complexType name="rsopSpec">
<xs:all>
<xs:element name="offlineSynchMode" type="offlineSynchModeType" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:complexType name="heuristicSpec">
<xs:all>
<xs:element name="isCompletionTracked" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="isSatisfactionTracked" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="isScoreTracked" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="isIncompleteScoreMeaningful" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="isIncompleteSatisfactionMeaningful" type="yesNoType" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:complexType name="debugSpec">
<xs:all>
<xs:element name="controlAudit" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="controlDetailed" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="runtimeAudit" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="runtimeDetailed" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="sequencingAudit" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="sequencingDetailed" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="sequencingSimple" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="lookaheadAudit" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="lookaheadDetailed" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="includeTimestamps" type="yesNoType" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:complexType name="captureHistorySpec">
<xs:all>
<xs:element name="captureHistory" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="captureHistoryDetailed" type="yesNoType" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:complexType name="communicationsSpec">
<xs:all>
<xs:element name="maxFailedSubmissions" type="xs:int" minOccurs="0" maxOccurs="1" />
<xs:element name="commitFrequency" type="xs:int" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:complexType name="exitActionsSpec">
<xs:all>
<xs:element name="intermediateSco" type="scoExitActionSpec" minOccurs="0" maxOccurs="1" />
<xs:element name="finalSco" type="scoExitActionSpec" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:complexType name="scoExitActionSpec">
<xs:all>
<xs:element name="satisfied" type="exitTypesSpec" minOccurs="0" maxOccurs="1" />
<xs:element name="notSatisfied" type="exitTypesSpec" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:complexType name="exitTypesSpec">
<xs:all>
<xs:element name="normal" type="exitActionType" minOccurs="0" maxOccurs="1" />
<xs:element name="suspend" type="exitActionType" minOccurs="0" maxOccurs="1" />
<xs:element name="timeout" type="exitActionType" minOccurs="0" maxOccurs="1" />
<xs:element name="logout" type="exitActionType" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:complexType name="launchSpec">
<xs:all>
<xs:element name="sco" type="launchType" minOccurs="0" maxOccurs="1" />
<xs:element name="player" type="launchType" minOccurs="0" maxOccurs="1" />
<xs:element name="wrapScoWindowWithApi" type="yesNoType" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:complexType name="displayStageSpec">
<xs:all>
<xs:element name="required" type="stageSpec" minOccurs="0" maxOccurs="1" />
<xs:element name="desired" type="stageSpec" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:complexType name="stageSpec">
<xs:all>
<xs:element name="width" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1" />
<xs:element name="height" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1" />
<xs:element name="fullscreen" type="yesNoType" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:simpleType name="yesNoType">
<xs:restriction base="xs:string">
<xs:enumeration value="yes" />
<xs:enumeration value="no" />
<xs:enumeration value="true" />
<xs:enumeration value="false" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="launchType">
<xs:restriction base="xs:string">
<xs:enumeration value="frameset" />
<xs:enumeration value="new window" />
<xs:enumeration value="new window,after click" />
<xs:enumeration value="new window without browser toolbar" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="exitActionType">
<xs:restriction base="xs:string">
<xs:enumeration value="exit,no confirmation" />
<xs:enumeration value="exit,confirmation" />
<xs:enumeration value="continue" />
<xs:enumeration value="message page" />
<xs:enumeration value="do nothing" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="scoreRollupType">
<xs:restriction base="xs:string">
<xs:enumeration value="score provided by course" />
<xs:enumeration value="average score of all units" />
<xs:enumeration value="average score of all units with scores" />
<xs:enumeration value="fixed average" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="statusRollupType">
<xs:restriction base="xs:string">
<xs:enumeration value="status provided by course" />
<xs:enumeration value="complete when all units complete" />
<xs:enumeration value="complete when all units satisfactorily complete" />
<xs:enumeration value="complete when threshold score is met" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="statusDisplayType">
<xs:restriction base="xs:string">
<xs:enumeration value="success only" />
<xs:enumeration value="completion only" />
<xs:enumeration value="separate" />
<xs:enumeration value="combined" />
<xs:enumeration value="none" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="invalidMenuItemActionType">
<xs:restriction base="xs:string">
<xs:enumeration value="show" />
<xs:enumeration value="hide" />
<xs:enumeration value="disable" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="resetRunTimeDataTimingType">
<xs:restriction base="xs:string">
<xs:enumeration value="never" />
<xs:enumeration value="when exit is not suspend" />
<xs:enumeration value="on each new sequencing attempt" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="lookaheadSequencerModeType">
<xs:restriction base="xs:string">
<xs:enumeration value="enabled" />
<xs:enumeration value="disabled" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="offlineSynchModeType">
<xs:restriction base="xs:string">
<xs:enumeration value="most recent" />
<xs:enumeration value="simple" />
<xs:enumeration value="most complete" />
<xs:enumeration value="most satisfied" />
<xs:enumeration value="most done" />
<xs:enumeration value="best done " />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="completionStatusType">
<xs:restriction base="xs:string">
<xs:enumeration value="completed" />
<xs:enumeration value="incomplete" />
<xs:enumeration value="browsed" />
<xs:enumeration value="not attempted" />
<xs:enumeration value="unknown" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="returnToLmsActionType">
<xs:restriction base="xs:string">
<xs:enumeration value="legacy" />
<xs:enumeration value="suspend_all" />
<xs:enumeration value="exit_all" />
<xs:enumeration value="selectable" />
</xs:restriction>
</xs:simpleType>
</xs:schema>

View File

@ -0,0 +1,110 @@
<?xml version="1.0"?>
<!-- filename=adlcp_rootv1p2.xsd -->
<!-- Conforms to w3c http://www.w3.org/TR/xmlschema-1/ 2000-10-24-->
<xsd:schema xmlns="http://www.adlnet.org/xsd/adlcp_rootv1p2"
targetNamespace="http://www.adlnet.org/xsd/adlcp_rootv1p2"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:imscp="http://www.imsproject.org/xsd/imscp_rootv1p1p2"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="unqualified"
version="ADL Version 1.2">
<xsd:import namespace="http://www.imsproject.org/xsd/imscp_rootv1p1p2"
schemaLocation="imscp_rootv1p1p2.xsd"/>
<xsd:element name="location" type="locationType"/>
<xsd:element name="prerequisites" type="prerequisitesType"/>
<xsd:element name="maxtimeallowed" type="maxtimeallowedType"/>
<xsd:element name="timelimitaction" type="timelimitactionType"/>
<xsd:element name="datafromlms" type="datafromlmsType"/>
<xsd:element name="masteryscore" type="masteryscoreType"/>
<xsd:element name="schema" type="newSchemaType"/>
<xsd:simpleType name="newSchemaType">
<xsd:restriction base="imscp:schemaType">
<xsd:enumeration value="ADL SCORM"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="schemaversion" type="newSchemaversionType"/>
<xsd:simpleType name="newSchemaversionType">
<xsd:restriction base="imscp:schemaversionType">
<xsd:enumeration value="1.2"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:attribute name="scormtype">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="asset"/>
<xsd:enumeration value="sco"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:simpleType name="locationType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="2000"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="prerequisitesType">
<xsd:simpleContent>
<xsd:extension base="prerequisiteStringType">
<xsd:attributeGroup ref="attr.prerequisitetype"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:attributeGroup name="attr.prerequisitetype">
<xsd:attribute name="type" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="aicc_script"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:simpleType name="maxtimeallowedType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="13"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="timelimitactionType">
<xsd:restriction base="stringType">
<xsd:enumeration value="exit,no message"/>
<xsd:enumeration value="exit,message"/>
<xsd:enumeration value="continue,no message"/>
<xsd:enumeration value="continue,message"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="datafromlmsType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="255"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="masteryscoreType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="200"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="stringType">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:simpleType name="prerequisiteStringType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="200"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!-- filename=ims_xml.xsd --><xsd:schema xmlns="http://www.w3.org/XML/1998/namespace" targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <!-- 2001-02-22 edited by Thomas Wason IMS Global Learning Consortium, Inc. --> <xsd:annotation> <xsd:documentation>In namespace-aware XML processors, the &quot;xml&quot; prefix is bound to the namespace name http://www.w3.org/XML/1998/namespace.</xsd:documentation> <xsd:documentation>Do not reference this file in XML instances</xsd:documentation> <xsd:documentation>Schawn Thropp: Changed the uriReference type to string type</xsd:documentation> </xsd:annotation> <xsd:attribute name="lang" type="xsd:language"> <xsd:annotation> <xsd:documentation>Refers to universal XML 1.0 lang attribute</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="base" type="xsd:string"> <xsd:annotation> <xsd:documentation>Refers to XML Base: http://www.w3.org/TR/xmlbase</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="link" type="xsd:string"/></xsd:schema>

View File

@ -0,0 +1,345 @@
<?xml version="1.0"?>
<!-- edited with XML Spy v3.5 (http://www.xmlspy.com) by Thomas Wason (private) -->
<!-- filename=ims_cp_rootv1p1p2.xsd -->
<!-- Copyright (2) 2001 IMS Global Learning Consortium, Inc. -->
<!-- edited by Thomas Wason -->
<!-- Conforms to w3c http://www.w3.org/TR/xmlschema-1/ 2000-10-24-->
<xsd:schema xmlns="http://www.imsproject.org/xsd/imscp_rootv1p1p2"
targetNamespace="http://www.imsproject.org/xsd/imscp_rootv1p1p2"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="unqualified" version="IMS CP 1.1.2">
<!-- ******************** -->
<!-- ** Change History ** -->
<!-- ******************** -->
<xsd:annotation>
<xsd:documentation xml:lang="en">DRAFT XSD for IMS Content Packaging version 1.1 DRAFT</xsd:documentation>
<xsd:documentation> Copyright (c) 2001 IMS GLC, Inc. </xsd:documentation>
<xsd:documentation>2000-04-21, Adjustments by T.D. Wason from CP 1.0.</xsd:documentation>
<xsd:documentation>2001-02-22, T.D.Wason: Modify for 2000-10-24 XML-Schema version. Modified to support extension.</xsd:documentation>
<xsd:documentation>2001-03-12, T.D.Wason: Change filename, target and meta-data namespaces and meta-data fielname. Add meta-data to itemType, fileType and organizationType.</xsd:documentation>
<xsd:documentation>Do not define namespaces for xml in XML instances generated from this xsd.</xsd:documentation>
<xsd:documentation>Imports IMS meta-data xsd, lower case element names. </xsd:documentation>
<xsd:documentation>This XSD provides a reference to the IMS meta-data root element as imsmd:record</xsd:documentation>
<xsd:documentation>If the IMS meta-data is to be used in the XML instance then the instance must define an IMS meta-data prefix with a namespace. The meta-data targetNamespace should be used. </xsd:documentation>
<xsd:documentation>2001-03-20, Thor Anderson: Remove manifestref, change resourceref back to identifierref, change manifest back to contained by manifest. --Tom Wason: manifest may contain _none_ or more manifests.</xsd:documentation>
<xsd:documentation>2001-04-13 Tom Wason: corrected attirbute name structure. Was misnamed type. </xsd:documentation>
<xsd:documentation>2001-05-14 Schawn Thropp: Made all complexType extensible with the group.any</xsd:documentation>
<xsd:documentation>Added the anyAttribute to all complexTypes. Changed the href attribute on the fileType and resourceType to xsd:string</xsd:documentation>
<xsd:documentation>Changed the maxLength of the href, identifierref, parameters, structure attributes to match the Information model.</xsd:documentation>
<xsd:documentation>2001-07-25 Schawn Thropp: Changed the namespace for the Schema of Schemas to the 5/2/2001 W3C XML Schema</xsd:documentation>
<xsd:documentation>Recommendation. attributeGroup attr.imsmd deleted, was not used anywhere. Any attribute declarations that have</xsd:documentation>
<xsd:documentation>use = "default" changed to use="optional" - attr.structure.req.</xsd:documentation>
<xsd:documentation>Any attribute declarations that have value="somevalue" changed to default="somevalue",</xsd:documentation>
<xsd:documentation>attr.structure.req (hierarchical). Removed references to IMS MD Version 1.1.</xsd:documentation>
<xsd:documentation>Modified attribute group "attr.resourcetype.req" to change use from optional</xsd:documentation>
<xsd:documentation>to required to match the information model. As a result the default value also needed to be removed</xsd:documentation>
<xsd:documentation>Name change for XSD. Changed to match version of CP Spec </xsd:documentation>
</xsd:annotation>
<xsd:annotation>
<xsd:documentation>Inclusions and Imports</xsd:documentation>
</xsd:annotation>
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="ims_xml.xsd"/>
<xsd:annotation>
<xsd:documentation>Attribute Declarations</xsd:documentation>
</xsd:annotation>
<!-- **************************** -->
<!-- ** Attribute Declarations ** -->
<!-- **************************** -->
<xsd:attributeGroup name="attr.base">
<xsd:attribute ref="xml:base" use="optional"/>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.default">
<xsd:attribute name="default" type="xsd:IDREF" use="optional"/>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.href">
<xsd:attribute name="href" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:anyURI">
<xsd:maxLength value="2000"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.href.req">
<xsd:attribute name="href" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:anyURI">
<xsd:maxLength value="2000"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.identifier.req">
<xsd:attribute name="identifier" type="xsd:ID" use="required"/>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.identifier">
<xsd:attribute name="identifier" type="xsd:ID" use="optional"/>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.isvisible">
<xsd:attribute name="isvisible" type="xsd:boolean" use="optional"/>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.parameters">
<xsd:attribute name="parameters" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="1000"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.identifierref">
<xsd:attribute name="identifierref" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="2000"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.identifierref.req">
<xsd:attribute name="identifierref" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="2000"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.resourcetype.req">
<xsd:attribute name="type" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="1000"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.structure.req">
<xsd:attribute name="structure" use="optional" default="hierarchical">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="200"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.version">
<xsd:attribute name="version" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="20"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:annotation>
<xsd:documentation>element groups</xsd:documentation>
</xsd:annotation>
<xsd:group name="grp.any">
<xsd:annotation>
<xsd:documentation>Any namespaced element from any namespace may be included within an &quot;any&quot; element. The namespace for the imported element must be defined in the instance, and the schema must be imported. </xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:group>
<!-- ************************** -->
<!-- ** Element Declarations ** -->
<!-- ************************** -->
<xsd:element name="dependency" type="dependencyType"/>
<xsd:element name="file" type="fileType"/>
<xsd:element name="item" type="itemType"/>
<xsd:element name="manifest" type="manifestType"/>
<xsd:element name="metadata" type="metadataType"/>
<xsd:element name="organization" type="organizationType"/>
<xsd:element name="organizations" type="organizationsType"/>
<xsd:element name="resource" type="resourceType"/>
<xsd:element name="resources" type="resourcesType"/>
<xsd:element name="schema" type="schemaType"/>
<xsd:element name="schemaversion" type="schemaversionType"/>
<xsd:element name="title" type="titleType"/>
<!-- ******************* -->
<!-- ** Complex Types ** -->
<!-- ******************* -->
<!-- **************** -->
<!-- ** dependency ** -->
<!-- **************** -->
<xsd:complexType name="dependencyType">
<xsd:sequence>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.identifierref.req"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- ********** -->
<!-- ** file ** -->
<!-- ********** -->
<xsd:complexType name="fileType">
<xsd:sequence>
<xsd:element ref="metadata" minOccurs="0"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.href.req"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- ********** -->
<!-- ** item ** -->
<!-- ********** -->
<xsd:complexType name="itemType">
<xsd:sequence>
<xsd:element ref="title" minOccurs="0"/>
<xsd:element ref="item" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="metadata" minOccurs="0"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.identifier.req"/>
<xsd:attributeGroup ref="attr.identifierref"/>
<xsd:attributeGroup ref="attr.isvisible"/>
<xsd:attributeGroup ref="attr.parameters"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- ************** -->
<!-- ** manifest ** -->
<!-- ************** -->
<xsd:complexType name="manifestType">
<xsd:sequence>
<xsd:element ref="metadata" minOccurs="0"/>
<xsd:element ref="organizations"/>
<xsd:element ref="resources"/>
<xsd:element ref="manifest" minOccurs="0" maxOccurs="unbounded"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.identifier.req"/>
<xsd:attributeGroup ref="attr.version"/>
<xsd:attribute ref="xml:base"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- ************** -->
<!-- ** metadata ** -->
<!-- ************** -->
<xsd:complexType name="metadataType">
<xsd:sequence>
<xsd:element ref="schema" minOccurs="0"/>
<xsd:element ref="schemaversion" minOccurs="0"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
</xsd:complexType>
<!-- ******************* -->
<!-- ** organizations ** -->
<!-- ******************* -->
<xsd:complexType name="organizationsType">
<xsd:sequence>
<xsd:element ref="organization" minOccurs="0" maxOccurs="unbounded"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.default"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- ****************** -->
<!-- ** organization ** -->
<!-- ****************** -->
<xsd:complexType name="organizationType">
<xsd:sequence>
<xsd:element ref="title" minOccurs="0"/>
<xsd:element ref="item" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="metadata" minOccurs="0"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.identifier.req"/>
<xsd:attributeGroup ref="attr.structure.req"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- *************** -->
<!-- ** resources ** -->
<!-- *************** -->
<xsd:complexType name="resourcesType">
<xsd:sequence>
<xsd:element ref="resource" minOccurs="0" maxOccurs="unbounded"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.base"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- ************** -->
<!-- ** resource ** -->
<!-- ************** -->
<xsd:complexType name="resourceType">
<xsd:sequence>
<xsd:element ref="metadata" minOccurs="0"/>
<xsd:element ref="file" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="dependency" minOccurs="0" maxOccurs="unbounded"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.identifier.req"/>
<xsd:attributeGroup ref="attr.resourcetype.req"/>
<xsd:attributeGroup ref="attr.base"/>
<xsd:attributeGroup ref="attr.href"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- ****************** -->
<!-- ** Simple Types ** -->
<!-- ****************** -->
<!-- ************ -->
<!-- ** schema ** -->
<!-- ************ -->
<xsd:simpleType name="schemaType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="100"/>
</xsd:restriction>
</xsd:simpleType>
<!-- ******************* -->
<!-- ** schemaversion ** -->
<!-- ******************* -->
<xsd:simpleType name="schemaversionType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="20"/>
</xsd:restriction>
</xsd:simpleType>
<!-- *********** -->
<!-- ** title ** -->
<!-- *********** -->
<xsd:simpleType name="titleType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="200"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>

View File

@ -0,0 +1,122 @@
<?xml version="1.0" ?>
<manifest identifier="C06o9xgrrmRE3mr6dQd9A0Jh2zvhdvFQbLcyU3IQ" version="1"
xmlns="http://www.imsproject.org/xsd/imscp_rootv1p1p2"
xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_rootv1p2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.imsproject.org/xsd/imscp_rootv1p1p2 imscp_rootv1p1p2.xsd
http://www.imsglobal.org/xsd/imsmd_rootv1p2p1 imsmd_rootv1p2p1.xsd
http://www.adlnet.org/xsd/adlcp_rootv1p2 adlcp_rootv1p2.xsd">
<metadata>
<schema>ADL SCORM</schema>
<schemaversion>1.2</schemaversion>
<adlcp:location>metadata.xml</adlcp:location>
</metadata>
<organizations default="articulate_rise">
<organization identifier="articulate_rise">
<title>Story 01a - 01_Patrizia &amp; Marco sichern sich ab - Einstieg</title>
<item identifier="i1" identifierref="r1" isvisible="true">
<title>Story 01a - 01_Patrizia &amp; Marco sichern sich ab - Einstieg</title>
<adlcp:datafromlms>eyJjcHYiOiJiTGN5VTNJUSJ9</adlcp:datafromlms>
</item>
</organization>
</organizations>
<resources>
<resource identifier="r1" type="webcontent" adlcp:scormtype="sco" href="scormdriver/indexAPI.html">
<!-- SCORMDRIVER STUFF -->
<file href="scormdriver/indexAPI.html" />
<file href="scormdriver/preloadIntegrity.js" />
<file href="scormdriver/driverOptions.js" />
<file href="scormdriver/AICCComm.html" />
<file href="scormdriver/auto-scripts/AutoBookmark.js" />
<file href="scormdriver/auto-scripts/AutoCompleteSCO.js" />
<file href="scormdriver/auto-scripts/CourseExit.js" />
<file href="scormdriver/blank.html" />
<file href="scormdriver/goodbye.html" />
<file href="scormdriver/scormdriver.js" />
<file href="scormdriver/browsersniff.js" />
<!-- RUNTIME COMMON STUFF -->
<file href="scormcontent/index.html" />
<file href="scormcontent/lib/main.bundle.js"/>
<file href="scormcontent/lib/fonts/icomoon.ttf"/>
<file href="scormcontent/lib/fonts/icomoon.woff"/>
<file href="scormcontent/lib/icomoon.css"/>
<file href="scormcontent/lib/main.bundle.css"/>
<file href="scormcontent/lib/player-0.0.11.min.js"/>
<file href="scormcontent/lib/lzwcompress.js"/>
<!-- RUNTIME CONTENT STUFF -->
<file href="scormcontent/lib/fonts/EjI2H2bOUhWXi31P-BuenosAires-RegularItalic.woff" />
<file href="scormcontent/lib/fonts/urcm4TQicFIAp0yG-BuenosAires-Bold.woff" />
<file href="scormcontent/lib/fonts/c8JUHx2ntHwOSJWS-BuenosAires-Regular.woff" />
<file href="scormcontent/lib/fonts/Lato-Black.woff" />
<file href="scormcontent/lib/fonts/Lato-Italic.woff" />
<file href="scormcontent/lib/fonts/Lato-Bold.woff" />
<file href="scormcontent/lib/fonts/Lato-Regular.woff" />
<file href="scormcontent/lib/fonts/Lato-Light.woff" />
<file href="scormcontent/assets/Q0iPvRY32PZGME-2_small_1642496678.png" />
<file href="scormcontent/assets/HprNitfNFoYA-Yd5_small_1645825112.png" />
<file href="scormcontent/assets/fB1Xe2o8yQtR7jXA_e3KUJ4wINPFtieCt.png" />
<file href="scormcontent/assets/VFc0huBEe2x9bQpX_aigDXQ-THq6dYtWn.jpg" />
<file href="scormcontent/assets/nK8qF84TeHsbZuLu_mTxdt1tasL27jgac.jpg" />
<file href="scormcontent/assets/6r-rqmdfCKW0ABQi_mountains.jpg" />
<file href="scormcontent/assets/EiQsFcTyXkRZk8vG_zmbMmISgJFjul336.jpg" />
<file href="scormcontent/assets/XntQW25vKXNT3Cyy_qy6xuyq_OAJj3UaD.jpg" />
<file href="scormcontent/assets/5h1Cvqi-iIC_MNdh_0zFlvPpFzFbuwLT4.jpg" />
<file href="scormcontent/assets/AnaqkIPHKAPL6q8s_gx88IT3BkFSKgLnC.jpg" />
<file href="scormcontent/assets/ycgcjJIeqKcTyHWg_RJFpDs3Gp3UVdI6I.png" />
<file href="scormcontent/assets/6ok_P0cioSPM0kc2_quote_background.jpg" />
<file href="scormcontent/assets/K5VotY-fY34bfu0Q_LLGq198v4iqxpF0G.jpg" />
<file href="scormcontent/assets/u1JmaaA9PDhS2tBp_QVNksDI87K1msviE.jpg" />
<file href="scormcontent/assets/w1l9tXF0jfwigpJz_XhOSbsLTDZTtxwrw.jpg" />
<file href="scormcontent/assets/x7MgIxqsiPH1xEW4_j1YONghTV4MOkTTY.jpg" />
<file href="scormcontent/assets/A-LhpVBiLTRrqxh4_-c62Q9cWJCygM7U_.jpg" />
<file href="scormcontent/assets/i0hmBccaT6sKVi7P_40zWT7bOYgqjPdYF.jpg" />
<file href="scormcontent/assets/lDeBOiXGrwmi5_Tt_9bs4uwd_u30IjSDT.jpg" />
<file href="scormcontent/assets/X-AOBAAXnGoJyK8n_VkTk4jlS9QxJbwDK.jpg" />
<file href="scormcontent/assets/n2fbf_2Z_K5tIR_l_LWSgXoRNoDSsj7PG.jpg" />
<file href="scormcontent/assets/X0BMtTtxLs7hTtGP_XSymmQzDmeK_kkXW.jpg" />
<file href="scormcontent/assets/ATMDEUbL2CRAStgW_r3B03spQDULZ8OBN.jpg" />
<file href="scormcontent/assets/lvYO0tMDMXz1u3Bb__n46i1NbVdz8TIgJ.jpg" />
<file href="scormcontent/assets/dYTkSAU3nEkisXq4_EpOXy6rot_0cwjs4.jpg" />
<file href="scormcontent/assets/M3nGqWaeOXxHwYT4_SAQSvbAAgJIrFNqI.jpg" />
<file href="scormcontent/assets/bVTxwq6UxMXlgsky_vi5czzNE0w8us-RT.jpg" />
<file href="scormcontent/assets/vsa5-tm6BZKkepT-_YQH4L3KRjHCD4Z0V.jpg" />
<file href="scormcontent/assets/kfihCS5f6FcEaE3o_TICr3AaMtjRh4T_T-d_VO_Checkliste%20Gespr%C3%A4chsvorbereitung.pdf" />
<file href="scormcontent/assets/l8QzOn4CB2Enn6ye_bukFu-fM45lVObbN.jpg" />
<file href="scormcontent/assets/qD_qKw_1E-oq9zsP_HofcXy0chb5OTxwk.jpg" />
<file href="scormcontent/assets/DW-jwJ3kSgsPykfp_ILvybMpN_tMgCgvc.jpg" />
<file href="scormcontent/assets/IXfKqi_4HYw5ynks_Zz-UzLNGs7XEozzD.jpg" />
<file href="scormcontent/assets/JeMcIiTYvgc8lrYx_w5EKCgkvgFaHAeAe.jpg" />
<file href="scormcontent/assets/XVembl43525EWVum_59A_e9vtSkpSd-Cm-d_VO_Hilfsmittel.zip" />
<file href="scormcontent/assets/BEUlQ_X3yqyHXk2c_n_14obupLKJJgj6z.jpg" />
<file href="scormcontent/assets/WmkBatu2Bzynl7gx_9jWW5HFFAtgCXP0s.jpg" />
<file href="scormcontent/assets/aRLSKZIS-MKXtgFS_2cLyS4qgVnginXGB.jpg" />
<file href="scormcontent/assets/Us8D6grVqTYhk6oD_Rq_7RnCSVm2LOTQu.jpg" />
<file href="scormcontent/assets/EO0jYsoQqC6is8EA_b25O4IklWJOIv9Se.jpg" />
<file href="scormcontent/assets/Xdg-JvWPbraNAiFu_XtUCj0xgLfLvEqTw-d_VO_Bestaetigungsmail_Ersttermin.pdf" />
<file href="scormcontent/assets/Ei9lEpOc3r8s7bDA_jgp4gh6BHCTEXSjj.jpg" />
<file href="scormcontent/assets/MsCiIWEt-lDoARFd_oRl-vHYDoe_lxAol.jpg" />
<file href="scormcontent/assets/bzPmXLBaizFRvcNr_6Fpk9mN2zIjNHc4k.gif" />
<file href="scormcontent/assets/oMkvPSHY3XpQChrJ_transcoded-QCeQvat2oxgzuPcF-201_D_20072022_Final-00001.png" />
<file href="scormcontent/assets/d37ELkG0s9rYT1E1_transcoded-QCeQvat2oxgzuPcF-201_D_20072022_Final.mp4" />
<file href="scormcontent/assets/7AZoBSX-CjXZQEg7_5PtH_ReahqB2DEE7.jpg" />
<file href="scormcontent/assets/h4USO6HgOScg3QvQ_uQ9Yk6MNJOzMgkfv.jpg" />
<file href="scormcontent/assets/bc5vMhLxvJ-c8pWA_NwMtzJ0di9ZDZiVn.jpg" />
<file href="scormcontent/assets/m4qzq6_AkrhFoyrJ_48cLqSs7Kd37VsJv.jpg" />
<file href="scormcontent/assets/4NvwZQny3dNY-nxQ_Hf8HljJU838aRNcQ.jpg" />
<file href="scormcontent/assets/pVnE6gAqYyQXBqEv_rzN_jtVJzjQ1-kH3.jpg" />
<file href="scormcontent/assets/VTzoKDptmOF4zD4o_EagCzwLAtc11EOMz.jpg" />
<file href="scormcontent/assets/fUggw1bDyzrWuuEg_7lTAMEaiOFxkd90T.jpg" />
<file href="scormcontent/assets/DUgMWnT7SF3ouTEB_f-0jsOP4JRgLPx_1.jpg" />
<file href="scormcontent/assets/oeYOnXVrIpyMGTcB_FoPU0Osj6wpPtbAS.jpg" />
<file href="scormcontent/assets/GG0TZSQ4ktLNuStl_18_architecture.jpg" />
<file href="scormcontent/assets/Wp0Io-zQDmgadYmR_example-header-image.jpg" />
</resource>
</resources>
</manifest>

View File

@ -0,0 +1,573 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited by Thomas Wason -->
<xsd:schema targetNamespace="http://www.imsglobal.org/xsd/imsmd_rootv1p2p1"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.imsglobal.org/xsd/imsmd_rootv1p2p1"
elementFormDefault="qualified"
version="1.2:1.1 IMS:MD1.2">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="ims_xml.xsd"/>
<!-- ******************** -->
<!-- ** Change History ** -->
<!-- ******************** -->
<xsd:annotation>
<xsd:documentation>2001-04-26 T.D.Wason. IMS meta-data 1.2 XML-Schema. </xsd:documentation>
<xsd:documentation>2001-06-07 S.E.Thropp. Changed the multiplicity on all elements to match the </xsd:documentation>
<xsd:documentation>Final 1.2 Binding Specification. </xsd:documentation>
<xsd:documentation>Changed all elements that use the langstringType to a multiplicy of 1 or more </xsd:documentation>
<xsd:documentation>Changed centity in the contribute element to have a multiplicity of 0 or more. </xsd:documentation>
<xsd:documentation>Changed the requirement element to have a multiplicity of 0 or more. </xsd:documentation>
<xsd:documentation> 2001-07-25 Schawn Thropp. Updates to bring the XSD up to speed with the W3C </xsd:documentation>
<xsd:documentation> XML Schema Recommendation. The following changes were made: Change the </xsd:documentation>
<xsd:documentation> namespace to reference the 5/2/2001 W3C XML Schema Recommendation,the base </xsd:documentation>
<xsd:documentation> type for the durtimeType, simpleType, was changed from timeDuration to duration. </xsd:documentation>
<xsd:documentation> Any attribute declarations that have use="default" had to change to use="optional" </xsd:documentation>
<xsd:documentation> - attr.type. Any attribute declarations that have value ="somevalue" had to change </xsd:documentation>
<xsd:documentation> to default = "somevalue" - attr.type (URI) </xsd:documentation>
<xsd:documentation> 2001-09-04 Schawn Thropp </xsd:documentation>
<xsd:documentation> Changed the targetNamespace and namespace of schema to reflect version change </xsd:documentation>
</xsd:annotation>
<!-- *************************** -->
<!-- ** Attribute Declaration ** -->
<!-- *************************** -->
<xsd:attributeGroup name="attr.type">
<xsd:attribute name="type" use="optional" default="URI">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="URI"/>
<xsd:enumeration value="TEXT"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:group name="grp.any">
<xsd:annotation>
<xsd:documentation>Any namespaced element from any namespace may be used for an &quot;any&quot; element. The namespace for the imported element must be defined in the instance, and the schema must be imported. </xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:any namespace="##any" processContents="strict" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:group>
<!-- ************************* -->
<!-- ** Element Declaration ** -->
<!-- ************************* -->
<xsd:element name="aggregationlevel" type="aggregationlevelType"/>
<xsd:element name="annotation" type="annotationType"/>
<xsd:element name="catalogentry" type="catalogentryType"/>
<xsd:element name="catalog" type="catalogType"/>
<xsd:element name="centity" type="centityType"/>
<xsd:element name="classification" type="classificationType"/>
<xsd:element name="context" type="contextType"/>
<xsd:element name="contribute" type="contributeType"/>
<xsd:element name="copyrightandotherrestrictions" type="copyrightandotherrestrictionsType"/>
<xsd:element name="cost" type="costType"/>
<xsd:element name="coverage" type="coverageType"/>
<xsd:element name="date" type="dateType"/>
<xsd:element name="datetime" type="datetimeType"/>
<xsd:element name="description" type="descriptionType"/>
<xsd:element name="difficulty" type="difficultyType"/>
<xsd:element name="educational" type="educationalType"/>
<xsd:element name="entry" type="entryType"/>
<xsd:element name="format" type="formatType"/>
<xsd:element name="general" type="generalType"/>
<xsd:element name="identifier" type="xsd:string"/>
<xsd:element name="intendedenduserrole" type="intendedenduserroleType"/>
<xsd:element name="interactivitylevel" type="interactivitylevelType"/>
<xsd:element name="interactivitytype" type="interactivitytypeType"/>
<xsd:element name="keyword" type="keywordType"/>
<xsd:element name="kind" type="kindType"/>
<xsd:element name="langstring" type="langstringType"/>
<xsd:element name="language" type="xsd:string"/>
<xsd:element name="learningresourcetype" type="learningresourcetypeType"/>
<xsd:element name="lifecycle" type="lifecycleType"/>
<xsd:element name="location" type="locationType"/>
<xsd:element name="lom" type="lomType"/>
<xsd:element name="maximumversion" type="minimumversionType"/>
<xsd:element name="metadatascheme" type="metadataschemeType"/>
<xsd:element name="metametadata" type="metametadataType"/>
<xsd:element name="minimumversion" type="maximumversionType"/>
<xsd:element name="name" type="nameType"/>
<xsd:element name="purpose" type="purposeType"/>
<xsd:element name="relation" type="relationType"/>
<xsd:element name="requirement" type="requirementType"/>
<xsd:element name="resource" type="resourceType"/>
<xsd:element name="rights" type="rightsType"/>
<xsd:element name="role" type="roleType"/>
<xsd:element name="semanticdensity" type="semanticdensityType"/>
<xsd:element name="size" type="sizeType"/>
<xsd:element name="source" type="sourceType"/>
<xsd:element name="status" type="statusType"/>
<xsd:element name="structure" type="structureType"/>
<xsd:element name="taxon" type="taxonType"/>
<xsd:element name="taxonpath" type="taxonpathType"/>
<xsd:element name="technical" type="technicalType"/>
<xsd:element name="title" type="titleType"/>
<xsd:element name="type" type="typeType"/>
<xsd:element name="typicalagerange" type="typicalagerangeType"/>
<xsd:element name="typicallearningtime" type="typicallearningtimeType"/>
<xsd:element name="value" type="valueType"/>
<xsd:element name="person" type="personType"/>
<xsd:element name="vcard" type="xsd:string"/>
<xsd:element name="version" type="versionType"/>
<xsd:element name="installationremarks" type="installationremarksType"/>
<xsd:element name="otherplatformrequirements" type="otherplatformrequirementsType"/>
<xsd:element name="duration" type="durationType"/>
<xsd:element name="id" type="idType"/>
<!-- ******************* -->
<!-- ** Complex Types ** -->
<!-- ******************* -->
<xsd:complexType name="aggregationlevelType">
<xsd:sequence>
<xsd:element ref="source"/>
<xsd:element ref="value"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="annotationType" mixed="true">
<xsd:sequence>
<xsd:element ref="person" minOccurs="0"/>
<xsd:element ref="date" minOccurs="0"/>
<xsd:element ref="description" minOccurs="0"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="catalogentryType" mixed="true">
<xsd:sequence>
<xsd:element ref="catalog"/>
<xsd:element ref="entry"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="centityType">
<xsd:sequence>
<xsd:element ref="vcard"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="classificationType" mixed="true">
<xsd:sequence>
<xsd:element ref="purpose" minOccurs="0"/>
<xsd:element ref="taxonpath" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="description" minOccurs="0"/>
<xsd:element ref="keyword" minOccurs="0" maxOccurs="unbounded"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="contextType">
<xsd:sequence>
<xsd:element ref="source"/>
<xsd:element ref="value"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="contributeType" mixed="true">
<xsd:sequence>
<xsd:element ref="role"/>
<xsd:element ref="centity" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="date" minOccurs="0"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="copyrightandotherrestrictionsType">
<xsd:sequence>
<xsd:element ref="source"/>
<xsd:element ref="value"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="costType">
<xsd:sequence>
<xsd:element ref="source"/>
<xsd:element ref="value"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="coverageType">
<xsd:sequence>
<xsd:element ref="langstring" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="dateType">
<xsd:sequence>
<xsd:element ref="datetime" minOccurs="0"/>
<xsd:element ref="description" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="descriptionType">
<xsd:sequence>
<xsd:element ref="langstring" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="difficultyType">
<xsd:sequence>
<xsd:element ref="source"/>
<xsd:element ref="value"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="durationType">
<xsd:sequence>
<xsd:element ref="datetime" minOccurs="0"/>
<xsd:element ref="description" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="educationalType" mixed="true">
<xsd:sequence>
<xsd:element ref="interactivitytype" minOccurs="0"/>
<xsd:element ref="learningresourcetype" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="interactivitylevel" minOccurs="0"/>
<xsd:element ref="semanticdensity" minOccurs="0"/>
<xsd:element ref="intendedenduserrole" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="context" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="typicalagerange" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="difficulty" minOccurs="0"/>
<xsd:element ref="typicallearningtime" minOccurs="0"/>
<xsd:element ref="description" minOccurs="0"/>
<xsd:element ref="language" minOccurs="0" maxOccurs="unbounded"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="entryType">
<xsd:sequence>
<xsd:element ref="langstring" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="generalType" mixed="true">
<xsd:sequence>
<xsd:element ref="identifier" minOccurs="0"/>
<xsd:element ref="title" minOccurs="0"/>
<xsd:element ref="catalogentry" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="language" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="description" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="keyword" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="coverage" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="structure" minOccurs="0"/>
<xsd:element ref="aggregationlevel" minOccurs="0"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="installationremarksType">
<xsd:sequence>
<xsd:element ref="langstring" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="intendedenduserroleType">
<xsd:sequence>
<xsd:element ref="source"/>
<xsd:element ref="value"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="interactivitylevelType">
<xsd:sequence>
<xsd:element ref="source"/>
<xsd:element ref="value"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="interactivitytypeType">
<xsd:sequence>
<xsd:element ref="source"/>
<xsd:element ref="value"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="keywordType">
<xsd:sequence>
<xsd:element ref="langstring" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="kindType">
<xsd:sequence>
<xsd:element ref="source"/>
<xsd:element ref="value"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="langstringType">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute ref="xml:lang"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="learningresourcetypeType">
<xsd:sequence>
<xsd:element ref="source"/>
<xsd:element ref="value"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="lifecycleType" mixed="true">
<xsd:sequence>
<xsd:element ref="version" minOccurs="0"/>
<xsd:element ref="status" minOccurs="0"/>
<xsd:element ref="contribute" minOccurs="0" maxOccurs="unbounded"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="locationType">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attributeGroup ref="attr.type"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="lomType">
<xsd:sequence>
<xsd:element ref="general" minOccurs="0"/>
<xsd:element ref="lifecycle" minOccurs="0"/>
<xsd:element ref="metametadata" minOccurs="0"/>
<xsd:element ref="technical" minOccurs="0"/>
<xsd:element ref="educational" minOccurs="0"/>
<xsd:element ref="rights" minOccurs="0"/>
<xsd:element ref="relation" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="annotation" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="classification" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="metametadataType" mixed="true">
<xsd:sequence>
<xsd:element ref="identifier" minOccurs="0"/>
<xsd:element ref="catalogentry" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="contribute" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="metadatascheme" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="language" minOccurs="0"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="nameType">
<xsd:sequence>
<xsd:element ref="source"/>
<xsd:element ref="value"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="otherplatformrequirementsType">
<xsd:sequence>
<xsd:element ref="langstring" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="personType">
<xsd:sequence>
<xsd:element ref="vcard"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="purposeType">
<xsd:sequence>
<xsd:element ref="source"/>
<xsd:element ref="value"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="relationType" mixed="true">
<xsd:sequence>
<xsd:element ref="kind" minOccurs="0"/>
<xsd:element ref="resource" minOccurs="0"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="requirementType" mixed="true">
<xsd:sequence>
<xsd:element ref="type" minOccurs="0"/>
<xsd:element ref="name" minOccurs="0"/>
<xsd:element ref="minimumversion" minOccurs="0"/>
<xsd:element ref="maximumversion" minOccurs="0"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="resourceType" mixed="true">
<xsd:sequence>
<xsd:element ref="identifier" minOccurs="0"/>
<xsd:element ref="description" minOccurs="0"/>
<xsd:element ref="catalogentry" minOccurs="0" maxOccurs="unbounded"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="rightsType" mixed="true">
<xsd:sequence>
<xsd:element ref="cost" minOccurs="0"/>
<xsd:element ref="copyrightandotherrestrictions" minOccurs="0"/>
<xsd:element ref="description" minOccurs="0"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="roleType">
<xsd:sequence>
<xsd:element ref="source"/>
<xsd:element ref="value"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="semanticdensityType">
<xsd:sequence>
<xsd:element ref="source"/>
<xsd:element ref="value"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="sourceType">
<xsd:sequence>
<xsd:element ref="langstring"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="statusType">
<xsd:sequence>
<xsd:element ref="source"/>
<xsd:element ref="value"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="stringType">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute ref="xml:lang"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="structureType">
<xsd:sequence>
<xsd:element ref="source"/>
<xsd:element ref="value"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="taxonpathType">
<xsd:sequence>
<xsd:element ref="source" minOccurs="0"/>
<xsd:element ref="taxon" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="taxonType">
<xsd:sequence>
<xsd:element ref="id" minOccurs="0"/>
<xsd:element ref="entry" minOccurs="0"/>
<xsd:element ref="taxon" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="technicalType" mixed="true">
<xsd:sequence>
<xsd:element ref="format" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="size" minOccurs="0"/>
<xsd:element ref="location" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="requirement" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="installationremarks" minOccurs="0"/>
<xsd:element ref="otherplatformrequirements" minOccurs="0"/>
<xsd:element ref="duration" minOccurs="0"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="titleType">
<xsd:sequence>
<xsd:element ref="langstring" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="typeType">
<xsd:sequence>
<xsd:element ref="source"/>
<xsd:element ref="value"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="typicalagerangeType">
<xsd:sequence>
<xsd:element ref="langstring" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="typicallearningtimeType">
<xsd:sequence>
<xsd:element ref="datetime" minOccurs="0"/>
<xsd:element ref="description" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="valueType">
<xsd:sequence>
<xsd:element ref="langstring"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="versionType">
<xsd:sequence>
<xsd:element ref="langstring" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<!-- ****************** -->
<!-- ** Simple Types ** -->
<!-- ****************** -->
<xsd:simpleType name="formatType">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:simpleType name="sizeType">
<xsd:restriction base="xsd:int"/>
</xsd:simpleType>
<xsd:simpleType name="datetimeType">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:simpleType name="idType">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:simpleType name="metadataschemeType">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:simpleType name="catalogType">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:simpleType name="minimumversionType">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:simpleType name="maximumversionType">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
</xsd:schema>

View File

@ -0,0 +1,112 @@
<?xml version="1.0"?>
<lom xmlns="http://www.imsglobal.org/xsd/imsmd_rootv1p2p1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:pkgprop="http://www.scorm.com/xsd/ScormEnginePackageProperties"
xsi:schemaLocation="http://www.imsglobal.org/xsd/imsmd_rootv1p2p1 imsmd_rootv1p2p1.xsd
http://www.scorm.com/xsd/ScormEnginePackageProperties ScormEnginePackageProperties.xsd">
<general>
<title>
<langstring></langstring>
</title>
<catalogentry>
<catalog>Catalog</catalog>
<entry>
<langstring>1</langstring>
</entry>
</catalogentry>
<!-- If you know the locale, enter it here, if not, leave this as en-->
<language>en</language>
<!-- Manifest->Course.Description. If that doesn't exist, replace with Project Information-> Description. If that is empty, just leave "Description"-->
<description>
<langstring>Description</langstring>
</description>
<!-- SCORM 1.2 requires some keywords. You could just leave it as is, or substitute the title-->
<keyword>
<langstring>Training</langstring>
</keyword>
</general>
<lifecycle>
<version>
<langstring>1</langstring>
</version>
<status>
<source>
<langstring xml:lang="x-none">LOMv1.0</langstring>
</source>
<value>
<langstring xml:lang="x-none">Final</langstring>
</value>
</status>
</lifecycle>
<metametadata>
<metadatascheme>ADL SCORM 1.2</metadatascheme>
</metametadata>
<technical>
<format>text/html</format>
<format>application/x-javascript</format>
<format>application/x-shockwave-flash</format>
<format>text/css</format>
<location>indexAPI.html</location>
<!-- replace with your launch page-->
<pkgprop:ScormEnginePackageProperties xmlns="http://www.scorm.com/ScormEnginePackageProperties">
<appearance>
<displayStage>
<!-- Replace with target width and height of movie. (From Project Information -> Resolution -->
<desired>
<width>750</width>
<height>550</height>
<fullscreen>no</fullscreen>
</desired>
<required>
<width>0</width>
<height>0</height>
<fullscreen>no</fullscreen>
</required>
</displayStage>
</appearance>
<behavior>
<alwaysFlowToFirstSco>yes</alwaysFlowToFirstSco>
<scoreOverridesStatus>no</scoreOverridesStatus>
<validateInteractionTypes>yes</validateInteractionTypes>
</behavior>
</pkgprop:ScormEnginePackageProperties>
</technical>
<rights>
<cost>
<source>
<langstring xml:lang="x-none">LOMv1.0</langstring>
</source>
<value>
<langstring xml:lang="x-none">yes</langstring>
</value>
</cost>
<copyrightandotherrestrictions>
<source>
<langstring xml:lang="x-none">LOMv1.0</langstring>
</source>
<value>
<langstring xml:lang="x-none">yes</langstring>
</value>
</copyrightandotherrestrictions>
</rights>
<classification>
<purpose>
<source>
<langstring xml:lang="x-none">LOMv1.0</langstring>
</source>
<value>
<langstring xml:lang="x-none">Educational Objective</langstring>
</value>
</purpose>
<!--same as description above-->
<description>
<langstring>Description</langstring>
</description>
<!--same as keywords above-->
<keyword>
<langstring>Training</langstring>
</keyword>
</classification>
</lom>

View File

@ -0,0 +1,455 @@
@font-face {
font-family: 'icomoon';
src: url('fonts/icomoon.ttf') format('truetype'),
url('fonts/icomoon.woff') format('woff');
font-weight: normal;
font-style: normal;
}
[class^="icon-"], [class*=" icon-"] {
/* use !important to prevent issues with browser extensions that change fonts */
font-family: 'icomoon' !important;
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-edit-author-name:before {
content: "\e976";
}
.icon-lock:before {
content: "\e977";
}
.icon-checkmark-valid:before {
content: "\e95d";
}
.icon-close-media-panel:before {
content: "\e95e";
}
.icon-trash4:before {
content: "\e95f";
}
.icon-x-invalid-url:before {
content: "\e960";
}
.icon-attach2:before {
content: "\e961";
}
.icon-bold:before {
content: "\e962";
}
.icon-fontcolor:before {
content: "\e963";
}
.icon-fontsize:before {
content: "\e964";
}
.icon-italic:before {
content: "\e965";
}
.icon-link:before {
content: "\e966";
}
.icon-orderedlist:before {
content: "\e967";
}
.icon-quote:before {
content: "\e968";
}
.icon-unorderedlist:before {
content: "\e969";
}
.icon-feedback:before {
content: "\e910";
}
.icon-review:before {
content: "\e911";
}
.icon-customizable:before {
content: "\e908";
}
.icon-design:before {
content: "\e909";
}
.icon-interactions:before {
content: "\e90a";
}
.icon-questions:before {
content: "\e90b";
}
.icon-scenarios2:before {
content: "\e90c";
}
.icon-slides:before {
content: "\e90d";
}
.icon-desktop:before {
content: "\e902";
}
.icon-expressions:before {
content: "\e903";
}
.icon-poses:before {
content: "\e904";
}
.icon-retina:before {
content: "\e905";
}
.icon-scenarios:before {
content: "\e906";
}
.icon-transparency:before {
content: "\e907";
}
.icon-Master-01:before {
content: "\e934";
}
.icon-Master-02:before {
content: "\e93a";
}
.icon-Master-03:before {
content: "\e939";
}
.icon-Master-04:before {
content: "\e936";
}
.icon-Master-05:before {
content: "\e93b";
}
.icon-Master-06:before {
content: "\e935";
}
.icon-Master-07:before {
content: "\e937";
}
.icon-Master-08:before {
content: "\e938";
}
.icon-Master-09:before {
content: "\e922";
}
.icon-Master-10:before {
content: "\e926";
}
.icon-Master-11:before {
content: "\e924";
}
.icon-Master-12:before {
content: "\e928";
}
.icon-Master-13:before {
content: "\e923";
}
.icon-Master-14:before {
content: "\e925";
}
.icon-Master-15:before {
content: "\e929";
}
.icon-Master-16:before {
content: "\e927";
}
.icon-Master-17:before {
content: "\e92b";
}
.icon-Master-18:before {
content: "\e92c";
}
.icon-Master-19:before {
content: "\e92d";
}
.icon-Master-20:before {
content: "\e92e";
}
.icon-Master-21:before {
content: "\e92f";
}
.icon-Master-22:before {
content: "\e930";
}
.icon-Master-23:before {
content: "\e931";
}
.icon-Master-24:before {
content: "\e932";
}
.icon-Master-25:before {
content: "\e933";
}
.icon-Master-26:before {
content: "\e92a";
}
.icon-check-circle:before {
content: "\e803";
}
.icon-trash:before {
content: "\e804";
}
.icon-rotation:before {
content: "\e91a";
}
.icon-vector:before {
content: "\e91b";
}
.icon-mute:before {
content: "\e90e";
}
.icon-volume:before {
content: "\e90f";
}
.icon-logo:before {
content: "\e805";
}
.icon-share:before {
content: "\e801";
}
.icon-sorting:before {
content: "\e91c";
}
.icon-more:before {
content: "\e91d";
}
.icon-copy:before {
content: "\e951";
}
.icon-clock:before {
content: "\e915";
}
.icon-quotes-left:before {
content: "\e918";
}
.icon-list-numbered:before {
content: "\e916";
}
.icon-list2:before {
content: "\e917";
}
.icon-plus:before {
content: "\e60a";
}
.icon-info:before {
content: "\e974";
}
.icon-cross:before {
content: "\e913";
}
.icon-checkmark:before {
content: "\e975";
}
.icon-arrow-up2:before {
content: "\e959";
}
.icon-arrow-down2:before {
content: "\e95a";
}
.icon-sort-alpha-asc:before {
content: "\e912";
}
.icon-rtf:before {
content: "\e94b";
}
.icon-doc:before {
content: "\e94a";
}
.icon-pdf:before {
content: "\e94c";
}
.icon-ppt:before {
content: "\e94d";
}
.icon-file:before {
content: "\e94e";
}
.icon-xls:before {
content: "\e94f";
}
.icon-zip:before {
content: "\e950";
}
.icon-file-alt:before {
content: "\e944";
}
.icon-doc-alt:before {
content: "\e943";
}
.icon-pdf-alt:before {
content: "\e945";
}
.icon-ppt-alt:before {
content: "\e946";
}
.icon-rtf-alt:before {
content: "\e947";
}
.icon-xls-alt:before {
content: "\e948";
}
.icon-zip-alt:before {
content: "\e949";
}
.icon-attach:before {
content: "\e942";
}
.icon-reload:before {
content: "\e941";
}
.icon-trash2:before {
content: "\e60d";
}
.icon-arrow-left:before {
content: "\e608";
}
.icon-arrow-right:before {
content: "\e609";
}
.icon-check-alt:before {
content: "\e606";
}
.icon-password-view:before {
content: "\e972";
}
.icon-password-hide:before {
content: "\e973";
}
.icon-view-grid:before {
content: "\e96c";
}
.icon-grid-view:before {
content: "\e96c";
}
.icon-view-list:before {
content: "\e96d";
}
.icon-list-view:before {
content: "\e96d";
}
.icon-blocks:before {
content: "\e95b";
}
.icon-list3:before {
content: "\e95c";
}
.icon-export:before {
content: "\e958";
}
.icon-screencast:before {
content: "\e957";
}
.icon-cursor:before {
content: "\e956";
}
.icon-documents:before {
content: "\e952";
}
.icon-duplicate:before {
content: "\e952";
}
.icon-trash3:before {
content: "\e953";
}
.icon-Article:before {
content: "\e93c";
}
.icon-Interaction:before {
content: "\e93d";
}
.icon-Quiz:before {
content: "\e93e";
}
.icon-Video:before {
content: "\e93f";
}
.icon-trashcan:before {
content: "\e921";
}
.icon-marker_style:before {
content: "\e920";
}
.icon-photo:before {
content: "\e91f";
}
.icon-microphone:before {
content: "\e91e";
}
.icon-plus2:before {
content: "\e800";
}
.icon-processing:before {
content: "\e607";
}
.icon-menu:before {
content: "\e602";
}
.icon-headset:before {
content: "\e603";
}
.icon-list:before {
content: "\e604";
}
.icon-video:before {
content: "\e605";
}
.icon-mail:before {
content: "\e954";
}
.icon-remove:before {
content: "\e955";
}
.icon-up-level-2:before {
content: "\e96e";
}
.icon-up-level-list-2:before {
content: "\e96f";
}
.icon-plus-circle:before {
content: "\e802";
}
.icon-up-level:before {
content: "\e970";
}
.icon-up-level-list:before {
content: "\e971";
}
.icon-eye:before {
content: "\e96b";
}
.icon-tick:before {
content: "\e900";
}
.icon-check:before {
content: "\e901";
}
.icon-link-alt:before {
content: "\e919";
}
.icon-chevron-down:before {
content: "\e60b";
}
.icon-chevron-up:before {
content: "\e60c";
}
.icon-chevron-left:before {
content: "\e600";
}
.icon-chevron:before {
content: "\e601";
}
.icon-chevron-right:before {
content: "\e601";
}
.icon-close-small:before {
content: "\e940";
}
.icon-pie-chart:before {
content: "\e914";
}
.icon-alert:before {
content: "\e96a";
}

View File

@ -0,0 +1,263 @@
/*
* lzwCompress.js
*
* Copyright (c) 2012-2016 floydpink
* Licensed under the MIT license.
*
* The MIT License (MIT)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
'use strict';
(function () {
var root = this;
var lzwCompress = (function (Array, JSON, undefined) {
var _self = {},
_lzwLoggingEnabled = false,
_lzwLog = function (message) {
try {
console.log('lzwCompress: ' +
(new Date()).toISOString() + ' : ' + (typeof(message) === 'object' ? JSON.stringify(message) : message));
} catch (e) {
}
};
// KeyOptimize
// http://stackoverflow.com/questions/4433402/replace-keys-json-in-javascript
(function (self, Array, JSON) {
var _keys = [],
comparer = function (key) {
return function (e) {
return e === key;
};
},
inArray = function (array,comparer) {
for (var i = 0; i < array.length; i++) {
if (comparer(array[i])) {
return true;
}
}
return false;
},
pushNew = function (array,element, comparer) {
if (!inArray(array,comparer)) {
array.push(element);
}
},
_extractKeys = function (obj) {
if (typeof obj === 'object') {
for (var key in obj) {
if (!Array.isArray(obj)) {
pushNew(_keys,key, comparer(key));
}
_extractKeys(obj[key]);
}
}
},
_encode = function (obj) {
if (typeof obj !== 'object') {
return obj;
}
for (var prop in obj) {
if (!Array.isArray(obj)) {
if (obj.hasOwnProperty(prop)) {
obj[_keys.indexOf(prop)] = _encode(obj[prop]);
delete obj[prop];
}
} else {
obj[prop] = _encode(obj[prop]);
}
}
return obj;
},
_decode = function (obj) {
if (typeof obj !== 'object') {
return obj;
}
for (var prop in obj) {
if (!Array.isArray(obj)) {
if (obj.hasOwnProperty(prop) && _keys[prop]) {
obj[_keys[prop]] = _decode(obj[prop]);
delete obj[prop];
}
} else {
obj[prop] = _decode(obj[prop]);
}
}
return obj;
},
compress = function (json) {
_keys = [];
var jsonObj = JSON.parse(json);
_extractKeys(jsonObj);
_lzwLoggingEnabled && _lzwLog('keys length : ' + _keys.length);
_lzwLoggingEnabled && _lzwLog('keys : ' + _keys);
return JSON.stringify({ __k : _keys, __v : _encode(jsonObj) });
},
decompress = function (minifiedJson) {
var obj = minifiedJson;
if (typeof(obj) !== 'object') {
return minifiedJson;
}
if (!obj.hasOwnProperty('__k')) {
return JSON.stringify(obj);
}
_keys = obj.__k;
return _decode(obj.__v);
};
self.KeyOptimize = {
pack : compress,
unpack : decompress
};
}(_self, Array, JSON));
// LZWCompress
// http://stackoverflow.com/a/2252533/218882
// http://rosettacode.org/wiki/LZW_compression#JavaScript
(function (self, Array) {
var compress = function (uncompressed) {
if (typeof(uncompressed) !== 'string') {
return uncompressed;
}
var i,
dictionary = {},
c,
wc,
w = '',
result = [],
dictSize = 256;
for (i = 0; i < 256; i += 1) {
dictionary[String.fromCharCode(i)] = i;
}
for (i = 0; i < uncompressed.length; i += 1) {
c = uncompressed.charAt(i);
wc = w + c;
if (dictionary[wc]) {
w = wc;
} else {
if (dictionary[w] === undefined) {
return uncompressed;
}
result.push(dictionary[w]);
dictionary[wc] = dictSize++;
w = String(c);
}
}
if (w !== '') {
result.push(dictionary[w]);
}
return result;
},
decompress = function (compressed) {
if (!Array.isArray(compressed)) {
return compressed;
}
var i,
dictionary = [],
w,
result,
k,
entry = '',
dictSize = 256;
for (i = 0; i < 256; i += 1) {
dictionary[i] = String.fromCharCode(i);
}
w = String.fromCharCode(compressed[0]);
result = w;
for (i = 1; i < compressed.length; i += 1) {
k = compressed[i];
if (dictionary[k]) {
entry = dictionary[k];
} else {
if (k === dictSize) {
entry = w + w.charAt(0);
} else {
return null;
}
}
result += entry;
dictionary[dictSize++] = w + entry.charAt(0);
w = entry;
}
return result;
};
self.LZWCompress = {
pack : compress,
unpack : decompress
};
}(_self, Array));
var _compress = function (obj) {
_lzwLoggingEnabled && _lzwLog('original (uncompressed) : ' + obj);
if (!obj || obj === true || obj instanceof Date) {
return obj;
}
var result = obj;
if (typeof obj === 'object') {
result = _self.KeyOptimize.pack(JSON.stringify(obj));
_lzwLoggingEnabled && _lzwLog('key optimized: ' + result);
}
var packedObj = _self.LZWCompress.pack(result);
_lzwLoggingEnabled && _lzwLog('packed (compressed) : ' + packedObj);
return packedObj;
},
_decompress = function (compressedObj) {
_lzwLoggingEnabled && _lzwLog('original (compressed) : ' + compressedObj);
if (!compressedObj || compressedObj === true || compressedObj instanceof Date) {
return compressedObj;
}
var probableJSON, result = _self.LZWCompress.unpack(compressedObj);
try {
probableJSON = JSON.parse(result);
} catch (e) {
_lzwLoggingEnabled && _lzwLog('unpacked (uncompressed) : ' + result);
return result;
}
if (typeof probableJSON === 'object') {
result = _self.KeyOptimize.unpack(probableJSON);
}
_lzwLoggingEnabled && _lzwLog('unpacked (uncompressed) : ' + result);
return result;
},
_enableLogging = function (enable) {
_lzwLoggingEnabled = enable;
};
return {
pack : _compress,
unpack : _decompress,
enableLogging : _enableLogging
};
})(Array, JSON);
if (typeof module !== 'undefined' && module.exports) {
module.exports = lzwCompress;
}
else {
root.lzwCompress = lzwCompress;
}
}).call(this);

View File

@ -0,0 +1,889 @@
<html>
<!--/* Copyright © 2003-2013 Rustici Software, LLC All Rights Reserved. www.scorm.com */-->
<head>
<script language="JavaScript1.2">
function WriteToDebug(str){
window.parent.WriteToDebug("AICCComm - " + str);
}
function DisplayError(strMessage){
window.parent.DisplayError(strMessage);
}
</script>
<!----------------------------------------------------------------------->
<!--Try to create an XMLHTTP object for IE5+ browsers and NS7+ / Mozilla 1.0+ browsers-->
<!----------------------------------------------------------------------->
<script language="JavaScript" src="browsersniff.js"></script>
<script language="JavaScript">
var objXMLHTTP = null;
var canUseTryCatch = false;
//determine if we can use try/catch statements in the IE browser family
if (is_ie5up){
canUseTryCatch = true;
}
</script>
<script language="VBScript">
on error resume next
WriteToDebug("Trying to create MSXML2.XMLHTTP in VBScript")
Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
if err.number <> 0 then
'XMLHTTP object could not be created, might be old version of IE
WriteToDebug("Could not create object, error number=" & err.number & ", source=" & err.Source & ", desc=" & err.Description)
set objXMLHTTP = null
end if
</script>
<script language="JavaScript1.5">
//determine if we can use try/catch statemes in non-IE browsers - anything that runs JavaScript 1.5 (includes all FireFox)
canUseTryCatch = true;
//JS 1.5 is available in the current Gecko browsers that support the XMLHTTPRequest object,
//use it for it's exception catching abilities to avoid errors in earlier browser versions
//XMLHTTP object is unreliable in NS 6 but works in 7 and above, so we explicitly exclude NS6
//Netscape 7 is essentailly Mozilla 1, so Mozilla browsers make it into this conditional
WriteToDebug("Trying to create XMLHttpRequest in JavaScript1.5");
if (is_nav6up && !is_nav6){
WriteToDebug("Entered browser conditional");
try{
WriteToDebug("Creating object");
objXMLHTTP = new XMLHttpRequest();
}
catch (e){
//XMLHTTP object could not be created
WriteToDebug("Could not create object, exception=" + e);
objXMLHTTP = null;
}
}
</script>
<script language="JavaScript" type="text/javascript">
//---------------------------------------------------------------------
//Real page code beins here
//---------------------------------------------------------------------
//variables to check for the IFrame's load
var intReCheckLoadedInterval = window.parent.AICC_RE_CHECK_LOADED_INTERVAL;
var intReCheckAttemptsBeforeTimeout = window.parent.AICC_RE_CHECK_ATTEMPTS_BEFORE_TIMEOUT;
var intReCheckAttempts = 0;
var IFrameLoaded_TimeOutID = "";
var blnIFrameLoaded = false;
//AICC Data - content will set these variables (through public methods) for submission to the LMS
var strLessonLocation = "";
var strLessonStatus = "i";
var strScore = "";
var strTime = "00:00:00";
//Communication Capabilities of the current browser - we check the actual capabilities
//rather than specific browsers to ensure forward compatibility and compatibility with untested browsers
var blnCanUseXMLHTTP; //set in the onload event
var blnCanUseIFrame;
var blnXMLHTTPIsAvailable; //determines if the browser supports the XmlHttp object
var blnAppearsToBeCrossDomain;
//constants
var REQUEST_TYPE_GET = "GETPARAM";
var REQUEST_TYPE_PUT = "PUTPARAM";
var REQUEST_TYPE_PUT_INTERACTIONS = "PUTINTERACTIONS";
var REQUEST_TYPE_EXIT = "EXITAU";
WriteToDebug("intReCheckLoadedInterval=" + intReCheckLoadedInterval);
WriteToDebug("intReCheckAttemptsBeforeTimeout=" + intReCheckAttemptsBeforeTimeout);
//---------------------------------------------------------------------
//Public Functions
//---------------------------------------------------------------------
function MakeGetParamRequest(){
var strAICCSID;
var strAICCURL;
WriteToDebug ("In MakeGetParamRequest");
strAICCSID = GetAICCSID();
strAICCURL = GetAICCURL();
WriteToDebug ("Submitting Form");
SubmitForm(strAICCURL, strAICCSID, REQUEST_TYPE_GET, "");
}
function MakePutParamRequest(strAICCData){
var strAICCSID;
var strAICCURL;
var strAICCData;
WriteToDebug ("In MakePutParamRequest");
if (parent.blnReviewModeSoReadOnly){
WriteToDebug("Mode is Review and configuration setting dictates this should be read only so exiting.");
return true;
}
strAICCSID = GetAICCSID();
strAICCURL = GetAICCURL();
WriteToDebug ("Submitting Form");
SubmitForm(strAICCURL, strAICCSID, REQUEST_TYPE_PUT, strAICCData);
}
function MakePutInteractionsRequest(strAICCData){
var strAICCSID;
var strAICCURL;
var strAICCData;
WriteToDebug ("In MakePutInteractionsRequest");
if (parent.blnReviewModeSoReadOnly){
WriteToDebug("Mode is Review and configuration setting dictates this should be read only so exiting.");
return true;
}
strAICCSID = GetAICCSID();
strAICCURL = GetAICCURL();
WriteToDebug ("Submitting Form");
SubmitForm(strAICCURL, strAICCSID, REQUEST_TYPE_PUT_INTERACTIONS, strAICCData);
}
function MakeExitAURequest(){
var strAICCSID;
var strAICCURL;
WriteToDebug ("In MakeExitAURequest");
strAICCSID = GetAICCSID();
strAICCURL = GetAICCURL();
WriteToDebug ("Submitting Form");
SubmitForm(strAICCURL, strAICCSID, REQUEST_TYPE_EXIT, "");
}
//---------------------------------------------------------------------
//Private Functions
//---------------------------------------------------------------------
//---------------------------------------------------------------------
//IFrame Functions
//---------------------------------------------------------------------
function CheckIFrameLoaded(strRequestType){
WriteToDebug("In CheckIFrameLoaded strRequestType=" + strRequestType);
if (blnIFrameLoaded){
WriteToDebug("Frame Loaded");
ProcessLMSResult(strRequestType, GetIFrameContents());
}
else{
//re-call, check for time out
WriteToDebug("Frame Not Loaded");
intReCheckAttempts ++;
if (intReCheckAttempts > intReCheckAttemptsBeforeTimeout){
WriteToDebug("Frame Timeout Error");
parent.InitializeExecuted(false, "The LMS timed out while responding to an AICC request.");
}
else{
WriteToDebug("Resetting CheckIFrameLoaded");
IFrameLoaded_TimeOutID = window.setTimeout("CheckIFrameLoaded('" + strRequestType + "')", intReCheckLoadedInterval);
}
}
}
function IFrameLoaded(){
WriteToDebug(" IFrameLoaded ");
blnIFrameLoaded = true;
}
function GetIFrameContents(){
var strContents;
WriteToDebug("In GetIFrameContents");
if (canUseTryCatch == true){
try{
strContents = window.AICCFrame.document.body.innerHTML;
}
catch (e){
WriteToDebug("Error submitting form via IFrame, falling back to normal form post and returning ''. Error=" + ((e.message)?e.message:e.toString()) );
blnCanUseIFrame = false;
strContents = "";
}
}
else{
strContents = window.AICCFrame.document.body.innerHTML;
}
WriteToDebug("strContents=" + strContents);
return strContents;
}
function SubmitFormUsingIFrame(strAICCURL, strAICCSID, strRequestType, strAICCData){
WriteToDebug ("In SubmitFormUsingIFrame, setting fields");
document.frmAICC.action = strAICCURL;
//check to see if we should encode the session_id
if(window.parent.AICC_ENCODE_PARAMETER_VALUES==true || window.parent.AICC_ENCODE_PARAMETER_VALUES=='true'){
document.frmAICC.session_id.value = strAICCSID;
}else{
document.frmAICC.session_id.value = URLEncode(strAICCSID);
}
document.frmAICC.command.value = URLEncode(strRequestType);
document.frmAICC.aicc_data.value = URLEncode(strAICCData);
// added SD 3.8.6 (JBR) - check to see if we have version from LMS already
if(window.parent.AICC_LMS_Version!=""){
//check to see if we already have a version from the LMS cached
if(window.parent.AICC_ENCODE_PARAMETER_VALUES==true || window.parent.AICC_ENCODE_PARAMETER_VALUES=='true'){
document.frmAICC.version.value = URLEncode(window.parent.AICC_LMS_Version);
}else{
document.frmAICC.version.value = window.parent.AICC_LMS_Version;
}
}else{
//default to 3.5
if(window.parent.AICC_ENCODE_PARAMETER_VALUES==true || window.parent.AICC_ENCODE_PARAMETER_VALUES=='true'){
document.frmAICC.version.value = URLEncode("3.5");
}else{
document.frmAICC.version.value = "3.5";
}
}
WriteToDebug ("Submitting Form");
document.frmAICC.submit();
blnIFrameLoaded = false;
intReCheckAttempts = 0;
WriteToDebug ("Clearing Timeout");
if (IFrameLoaded_TimeOutID != ""){
window.clearTimeout(IFrameLoaded_TimeOutID);
IFrameLoaded_TimeOutID = "";
}
CheckIFrameLoaded(strRequestType);
}
//---------------------------------------------------------------------
//XML HTTP Object Functions
//---------------------------------------------------------------------
function SubmitFormUsingXMLHTTP(strAICCURL, strAICCSID, strRequestType, strAICCData){
var strReturn;
var strPostData;
WriteToDebug ("In SubmitFormUsingXMLHTTP, opening connetion");
objXMLHTTP.open ("POST", strAICCURL, false);
WriteToDebug ("Setting Request Header");
objXMLHTTP.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded");
WriteToDebug ("Creating Post Data");
//check to see if we should encode the session_id
if(window.parent.AICC_ENCODE_PARAMETER_VALUES==true || window.parent.AICC_ENCODE_PARAMETER_VALUES=='true'){
strPostData = "session_id=" + URLEncode(strAICCSID);
}else{
strPostData = "session_id=" + strAICCSID;
}
// added SD 3.8.6 (JBR) - check to see if we have version from LMS already
if(window.parent.AICC_LMS_Version!=""){
//check to see if we already have a version from the LMS cached
//check to see if we should encode the version
if(window.parent.AICC_ENCODE_PARAMETER_VALUES==true || window.parent.AICC_ENCODE_PARAMETER_VALUES=='true'){
strPostData += "&version="+URLEncode(window.parent.AICC_LMS_Version);
}else{
strPostData += "&version="+window.parent.AICC_LMS_Version;
}
}else{
//default to 3.5
//check to see if we should encode the version
if(window.parent.AICC_ENCODE_PARAMETER_VALUES==true || window.parent.AICC_ENCODE_PARAMETER_VALUES=='true'){
strPostData += "&version="+URLEncode("3.5");
}else{
strPostData += "&version=3.5";
}
}
//always encode the command and aicc_data values
strPostData += "&command=" + URLEncode(strRequestType) + "&aicc_data=" + URLEncode(strAICCData);
WriteToDebug ("Sending Post Data-" + strPostData);
objXMLHTTP.send (strPostData);
WriteToDebug ("Looking up Response Text");
strReturn = objXMLHTTP.responseText;
WriteToDebug ("LMS Response=" + strReturn);
ProcessLMSResult(strRequestType, strReturn);
}
//---------------------------------------------------------------------
// Custom Comms Object Functions
//---------------------------------------------------------------------
function SubmitFormUsingCustomComms(strAICCURL, strAICCSID, strRequestType, strAICCData){
var strReturn;
var strPostData;
WriteToDebug ("In SubmitFormUsingCustomComms, building request information");
WriteToDebug ("Creating Post Data");
//check to see if we should encode the session_id
if(window.parent.AICC_ENCODE_PARAMETER_VALUES==true || window.parent.AICC_ENCODE_PARAMETER_VALUES=='true'){
strPostData = "session_id=" + URLEncode(strAICCSID);
}else{
strPostData = "session_id=" + strAICCSID;
}
// added SD 3.8.6 (JBR) - check to see if we have version from LMS already
if(window.parent.AICC_LMS_Version!=""){
//check to see if we already have a version from the LMS cached
//check to see if we should encode the version
if(window.parent.AICC_ENCODE_PARAMETER_VALUES==true || window.parent.AICC_ENCODE_PARAMETER_VALUES=='true'){
strPostData += "&version="+URLEncode(window.parent.AICC_LMS_Version);
}else{
strPostData += "&version="+window.parent.AICC_LMS_Version;
}
}else{
//default to 3.5
//check to see if we should encode the version
if(window.parent.AICC_ENCODE_PARAMETER_VALUES==true || window.parent.AICC_ENCODE_PARAMETER_VALUES=='true'){
strPostData += "&version="+URLEncode("3.5");
}else{
strPostData += "&version=3.5";
}
}
//always encode the command and aicc_data values
strPostData += "&command=" + URLEncode(strRequestType) + "&aicc_data=" + URLEncode(strAICCData);
WriteToDebug ("Sending Post Data-" + strPostData);
WriteToDebug ("Sending RequestType-" + strRequestType);
console.log('parent.CustomAICCCommunication='+parent.CustomAICCCommunication);
if(typeof parent.CustomAICCCommunication == 'function')
{
parent.CustomAICCCommunication(strAICCURL, strPostData, strRequestType, 'ProcessLMSResult');
}else{
WriteToDebug ("CustomAICCCommunication not found - falling back to normal mode");
parent.AICC_USE_CUSTOM_COMMS = false;
SubmitForm(strAICCURL, strAICCSID, strRequestType, strAICCData);
}
}
function URLEncode(str){
str = new String(str);
str = escape(str);
str = str.replace(/%20/g, "+");
return str;
}
function GetBlankHtmlPage(seed){
objXMLHTTP.open("GET", "blank.html?random=" + seed + (Math.random()), false);
objXMLHTTP.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
objXMLHTTP.send ();
return objXMLHTTP.responseText;
}
//---------------------------------------------------------------------
//Blind Form Submit Functions
//---------------------------------------------------------------------
function SubmitFormNormally(strAICCURL, strAICCSID, strRequestType, strAICCData){
WriteToDebug ("In SubmitFormNormally (BlindPost), setting fields");
document.frmAICC.target = "rusticisoftware_aicc_results"; //keep this name fairly unique to avoid a potential naming conflict with LMS frames
document.frmAICC.action = strAICCURL;
//check to see if we should encode the session_id
if(window.parent.AICC_ENCODE_PARAMETER_VALUES==true || window.parent.AICC_ENCODE_PARAMETER_VALUES=='true'){
document.frmAICC.session_id.value = strAICCSID;
}else{
document.frmAICC.session_id.value = URLEncode(strAICCSID);
}
document.frmAICC.command.value = URLEncode(strRequestType);
document.frmAICC.aicc_data.value = URLEncode(strAICCData);
// added SD 3.8.6 (JBR) - check to see if we have version from LMS already
if(window.parent.AICC_LMS_Version!=""){
//check to see if we already have a version from the LMS cached
if(window.parent.AICC_ENCODE_PARAMETER_VALUES==true || window.parent.AICC_ENCODE_PARAMETER_VALUES=='true'){
document.frmAICC.version.value = URLEncode(window.parent.AICC_LMS_Version);
}else{
document.frmAICC.version.value = window.parent.AICC_LMS_Version;
}
}else{
//default to 3.5
if(window.parent.AICC_ENCODE_PARAMETER_VALUES==true || window.parent.AICC_ENCODE_PARAMETER_VALUES=='true'){
document.frmAICC.version.value = URLEncode("3.5");
}else{
document.frmAICC.version.value = "3.5";
}
}
WriteToDebug ("Submitting Form");
document.frmAICC.submit();
ProcessLMSResult(strRequestType, "");
}
//---------------------------------------------------------------------
//Form Submission Functions
//---------------------------------------------------------------------
function DetectPreferredCommMethod(){
//if we have an XMLHTTP object, use that
//else, if we can see the IFrame, use that
//else - use a blind (write only) form submit
/*
MR 5/30/07 - Don't do any hard and fast domain checking, we'll simply try the post in a try/catch and check for
a permission denied error. If the post does not succeed, we'll fall back on a normal form post.
The rules for cross domain scripting have gotten quite complicated recently, they now relate to
how the XmlHttp object was created, the browser type/version and the security context of each site.
*/
//if the domain of the strAICCURL does not match the current domain, then note that cross domain probably won't work
blnAppearsToBeCrossDomain = false;
var strContentDomain = window.document.domain;
var strAICCURL = GetAICCURL();
var aryUrlParts = strAICCURL.split("/");
var strLmsDomain;
var blnCrossDomain = false;
if (strAICCURL.toLowerCase().indexOf("http://") == 0 || strAICCURL.toLowerCase().indexOf("https://") == 0){
strLmsDomain = aryUrlParts[2]
}
else{
strLmsDomain = aryUrlParts[0];
}
if (strLmsDomain.toLowerCase() != strContentDomain.toLowerCase()){
//WriteToDebug("LMS and Content Domains don't match, falling back to write-only mode using form submit. strLmsDomain=" + strLmsDomain + ", strContentDomain=" + strContentDomain);
//blnCanUseXMLHTTP = false;
//blnCanUseIFrame = false;
//blnCrossDomain = true;
blnAppearsToBeCrossDomain = true;
}
if (objXMLHTTP != null){
blnXMLHTTPIsAvailable = true;
}
else{
blnXMLHTTPIsAvailable = false;
}
//if (!blnCrossDomain)
//{
if (parent.AICC_COMM_DISABLE_XMLHTTP)
{
WriteToDebug("In DetectPreferredCommMethod, config override of XMLHTTP to false");
blnCanUseXMLHTTP = false;
}
else
{
WriteToDebug("In DetectPreferredCommMethod, checking XMLHTTP");
if (objXMLHTTP != null){
blnCanUseXMLHTTP = true;
}
else{
blnCanUseXMLHTTP = false;
}
}
if (parent.AICC_COMM_DISABLE_IFRAME)
{
WriteToDebug("In DetectPreferredCommMethod, config override of IFRAME to false");
blnCanUseIFrame = false;
}
else
{
//note use of short circuit AND to prevent error if browser doesn't recognize part of the IFrame
//in Opera 7, there needs to be something in the body of the IFrame for the last condition to evaluate to true
//in opera 7.1, all tests will pass, but the onload event doesn not fire due to a bug, add a check for blnIFrameLoaded
//to ensure that the onload event fired
WriteToDebug("Checking IFrame");
if (window.AICCFrame &&
window.AICCFrame.document &&
window.AICCFrame.document.body &&
window.AICCFrame.document.body.innerHTML &&
blnIFrameLoaded){
blnCanUseIFrame = true;
}
else{
blnCanUseIFrame = false;
}
}
//}
WriteToDebug("blnCanUseXMLHTTP=" + blnCanUseXMLHTTP);
WriteToDebug("blnCanUseIFrame=" + blnCanUseIFrame);
}
function SubmitForm(strAICCURL, strAICCSID, strRequestType, strAICCData){
WriteToDebug ("In SubmitForm, setting fields");
WriteToDebug ("strAICCURL = " + strAICCURL);
WriteToDebug ("strAICCSID = " + strAICCSID);
WriteToDebug ("strCommand = " + strRequestType);
WriteToDebug ("strAICCData = " + strAICCData);
WriteToDebug ("blnCanUseXMLHTTP = " + blnCanUseXMLHTTP);
WriteToDebug ("blnCanUseIFrame = " + blnCanUseIFrame);
WriteToDebug ("canUseTryCatch = " + canUseTryCatch);
// if(parent.AICC_USE_CUSTOM_COMMS && blnAppearsToBeCrossDomain){
if(parent.AICC_USE_CUSTOM_COMMS){
WriteToDebug('Using Custom Cross Domain Communications for AICC');
SubmitFormUsingCustomComms(strAICCURL, strAICCSID, strRequestType, strAICCData);
}else if (blnCanUseXMLHTTP){
// try/catch is supported in all browsers that support xmlHttp
try{
SubmitFormUsingXMLHTTP(strAICCURL, strAICCSID, strRequestType, strAICCData);
}
catch(e){
//we have a cross domain issue, so fall back on normal form posts
WriteToDebug("Error submitting form via XmlHttp, falling back to normal form post. Error=" + ((e.message)?e.message:e.toString()));
blnCanUseXMLHTTP = false;
blnCanUseIFrame = false;
SubmitForm(strAICCURL, strAICCSID, strRequestType, strAICCData);
}
}
else if(blnCanUseIFrame){
//if we're in a browser that can trap errors, try to trap a permission denied error
//otherwise, check our rudimentary domain checking to see if we should try iFrame. If it is
//a disallowed cross domain request that results in a permission denied error
//then we need to manually disable the iFrame post in the configuration file.
if (canUseTryCatch == true){
//this try catch probably won't fire, it will be the one up in GetIFrameContents,
//in there we just set things to fall back on normal form posts
//no need to re-submit the form because it was just the initial Get that won't return data anyway
try{
SubmitFormUsingIFrame(strAICCURL, strAICCSID, strRequestType, strAICCData);
}
catch (e){
//we have a cross domain issue, so fall back on normal form posts
WriteToDebug("Error submitting form via IFrame, falling back to normal form post. Error=" + ((e.message)?e.message:e.toString()));
blnCanUseIFrame = false;
SubmitForm(strAICCURL, strAICCSID, strRequestType, strAICCData);
}
}
else{
if (blnAppearsToBeCrossDomain == false){
SubmitFormUsingIFrame(strAICCURL, strAICCSID, strRequestType, strAICCData);
}
else{
blnCanUseIFrame = false;
SubmitForm(strAICCURL, strAICCSID, strRequestType, strAICCData);
}
}
}
else{
SubmitFormNormally(strAICCURL, strAICCSID, strRequestType, strAICCData);
}
}
//---------------------------------------------------------------------
//AICC Functions
//---------------------------------------------------------------------
function ProcessLMSResult(strRequestType, strLMSResult){
WriteToDebug("In ProcessLMSResult, strRequestType=" + strRequestType + " strLMSResult=" + strLMSResult)
var blnMadeBlindSubmit;
var strAICCErrorLine = "";
var strAICCErrorTextLine = "";
var aryAICCResponseLines;
var strLine;
var strTrimmedLine;
var intPos;
var blnError;
var strErrorMessage;
//if we made a blind submit with a standard form, we can't read the result, so just proceed
blnMadeBlindSubmit = (!blnCanUseXMLHTTP && !blnCanUseIFrame);
WriteToDebug("blnMadeBlindSubmit=" + blnMadeBlindSubmit);
strLMSResult = new String(unescape(strLMSResult));
aryAICCResponseLines = strLMSResult.split("\n"); //only use \n instead of \r\n b/c some LMS's will only use one character
for (var i=0; i < aryAICCResponseLines.length; i++){
WriteToDebug("Processing Line #" + i + ": " + aryAICCResponseLines[i]);
strLine = aryAICCResponseLines[i];
strLine = strLine.replace(/\r/g, "");
strTrimmedLine = parent.Trim(strLine);
//need to look for the text "error" only at the start of the line since the
//value of the field can conceivably contain the text "error"
if (strTrimmedLine.toLowerCase().indexOf("error") == 0){
if (strTrimmedLine.toLowerCase().indexOf("error_text") == 0){
WriteToDebug("Found Error Text Line");
strAICCErrorTextLine = strLine;
}
else{
WriteToDebug("Found Error Number Line");
strAICCErrorLine = strLine;
}
}
}
//check for errors and alert if found, check for AICC error, as well as HTTP error like 404
blnError = false;
strErrorMessage = "";
if (!blnMadeBlindSubmit){
if (strAICCErrorLine == ""){
blnError = true;
strErrorMessage = "ERROR - LMS did not return a valid status code.";
}
if (strAICCErrorLine != "" && strAICCErrorLine.toLowerCase().search(/error\s*=\s*0/) == -1){
blnError = true;
strErrorMessage = "ERROR - LMS returned an error - " + strAICCErrorLine + " - " + strAICCErrorTextLine;
}
}
if (blnError){
WriteToDebug("Found Error");
parent.AICC_SetErrorInfo(strAICCErrorLine, strAICCErrorTextLine);
if (strRequestType == REQUEST_TYPE_GET){
parent.InitializeExecuted(false, strErrorMessage);
return;
}
if (strRequestType == REQUEST_TYPE_PUT){
parent.AICC_PutParamFailed();
return;
}
if (strRequestType == REQUEST_TYPE_PUT_INTERACTIONS){
parent.AICC_PutInteractionsFailed();
return;
}
else{
DisplayError(strErrorMessage);
return;
}
}
if (strRequestType == REQUEST_TYPE_GET){
WriteToDebug("In request type = get");
//keep default values if we made a blind submit
if (!blnMadeBlindSubmit){
window.parent.ParseGetParamData(strLMSResult);
}
WriteToDebug("Calling InitializeExecuted");
parent.InitializeExecuted(true, "");
}
}
function GetAICCSID(){
var strSID = "";
WriteToDebug("In GetAICCSID");
strSID = window.parent.GetQueryStringValue("AICC_SID", window.parent.document.location.search)
WriteToDebug("GetAICCSID returning: " + strSID);
return strSID;
}
function GetAICCURL(){
var strURL = "";
WriteToDebug("In GetAICCURL");
strURL = window.parent.GetQueryStringValue("AICC_URL", window.parent.document.location.search)
WriteToDebug("Querystring value = " + strURL);
if (strURL != null && strURL.length > 0){
if (window.parent.AICC_COMM_PREPEND_HTTP_IF_MISSING === undefined ||
window.parent.AICC_COMM_PREPEND_HTTP_IF_MISSING === null ||
window.parent.AICC_COMM_PREPEND_HTTP_IF_MISSING === true){
WriteToDebug("Checking for presense of 'http://'");
if (strURL.indexOf("http://") < 0 && strURL.indexOf("https://") < 0){
WriteToDebug("Prepending 'http://'");
strURL = "http://" + strURL;
}
}
}
WriteToDebug("GetAICCURL returning: " + strURL);
return strURL;
}
//MR 5/31/05 - added this because this frame is always slightly visible so we have an avenue into the debug information even if the content developer doesn't build one in
window.document.onkeypress = CheckForDebugCommand;
var intQuestionCounter = 0;
var ASCII_QUESTION = 63;
function CheckForDebugCommand(e){
var intKeyCode = 0;
if (window.event) {
e = window.event;
intKeyCode = e.keyCode;
}
else {
intKeyCode = e.which;
}
if (intKeyCode == ASCII_QUESTION){
intQuestionCounter++;
if (intQuestionCounter == 3){
intQuestionCounter = 0;
window.parent.ShowDebugWindow();
}
}
else if (intKeyCode !=0){ //in FireFox, the shift key comes through as a keypress with code of 0...we want to ignore this
intQuestionCounter = 0;
}
}
//MR 5/31/05 - added this call in addition to the frameset onunload calls to give us a better chance of getting an AICC EXITAU call in before the frames unload
function ProcessUnload(){
if (window.parent){
window.parent.Unload();
}
}
</script>
</head>
<body onload="DetectPreferredCommMethod();" onunload="ProcessUnload();" onbeforeunload="ProcessUnload();">
<iframe id="AICCFrame"
name="AICCFrame"
style="width:10px; height:10px; border: 0px"
src="blank.html" onload="IFrameLoaded();"></iframe>
<form name="frmAICC" method="Post" action="blank.html" target="AICCFrame" ID="Form1">
<input type="hidden" name="session_id" value="" ID="Hidden1">
<input type="hidden" name="command" value="" ID="Hidden2">
<input type="hidden" name="version" value="3.5" ID="Hidden3">
<input type="hidden" name="aicc_data" value="" ID="Hidden4">
</form>
</body>
</html>

View File

@ -0,0 +1,14 @@
function SetBookmark() {
var SD = window.parent,
loc = window.location.href
;
SD.SetBookmark(
loc.substring(loc.toLowerCase().lastIndexOf("/scormcontent/") + 14, loc.length),
document.title
);
SD.CommitData();
}
//Automatically set a bookmark for this page.
SetBookmark();

View File

@ -0,0 +1,11 @@
function SetSCOComplete()
{
var SD = window.parent;
//This is the last page so set it complete
SD.SetReachedEnd();
SD.CommitData();
}
//Automatically set the SCO complete.
SetSCOComplete();

View File

@ -0,0 +1,11 @@
function niExit()
{
var SD = window.parent;
var answer = confirm("Are You Sure You Wish To Exit This Course?");
if(answer)
{
SD.ConcedeControl();
}
}

View File

@ -0,0 +1,49 @@
<html>
<!--/* Copyright © 2003-2013 Rustici Software, LLC All Rights Reserved. www.scorm.com */-->
<head>
<script>
window.document.onkeypress = CheckForDebugCommand;
var intQuestionCounter = 0;
var ASCII_QUESTION = 63;
function CheckForDebugCommand(e){
var intKeyCode = 0;
if (window.event) {
e = window.event;
intKeyCode = e.keyCode;
}
else {
intKeyCode = e.which;
}
if (intKeyCode == ASCII_QUESTION){
intQuestionCounter++;
if (intQuestionCounter == 3){
intQuestionCounter = 0;
parent.ShowDebugWindow();
}
}
else if (intKeyCode !=0){ //in FireFox, the shift key comes through as a keypress with code of 0...we want to ignore this
intQuestionCounter = 0;
}
}
</script>
</head>
<body>
&nbsp;
<!--
If the course does not load and is stuck on this page:
-Click in the middle of the page
-Press the question mark key (?) three times
-A window should pop up containing debug information, send this information to technical support for further assistance
-If no information appears, try again 1 or 2 more times, sometimes that just does the trick
-->
</body>
</html>

View File

@ -0,0 +1,206 @@
//<!--
// Ultimate client-side JavaScript client sniff. Version 3.03
// (C) Netscape Communications 1999-2001. Permission granted to reuse and distribute.
// Revised 17 May 99 to add is_nav5up and is_ie5up (see below).
// Revised 20 Dec 00 to add is_gecko and change is_nav5up to is_nav6up
// also added support for IE5.5 Opera4&5 HotJava3 AOLTV
// Revised 22 Feb 01 to correct Javascript Detection for IE 5.x, Opera 4,
// correct Opera 5 detection
// add support for winME and win2k
// synch with browser-type-oo.js
// Revised 26 Mar 01 to correct Opera detection
// Revised 02 Oct 01 to add IE6 detection
// Revised 16 Oct 03 to add explict NS 6 detection vs NS 7 - Mike Rustici
// Everything you always wanted to know about your JavaScript client
// but were afraid to ask. Creates "is_" variables indicating:
// (1) browser vendor:
// is_nav, is_ie, is_opera, is_hotjava, is_webtv, is_TVNavigator, is_AOLTV
// (2) browser version number:
// is_major (integer indicating major version number: 2, 3, 4 ...)
// is_minor (float indicating full version number: 2.02, 3.01, 4.04 ...)
// (3) browser vendor AND major version number
// is_nav2, is_nav3, is_nav4, is_nav4up, is_nav6, is_nav6up, is_gecko, is_ie3,
// is_ie4, is_ie4up, is_ie5, is_ie5up, is_ie5_5, is_ie5_5up, is_ie6, is_ie6up, is_hotjava3, is_hotjava3up,
// is_opera2, is_opera3, is_opera4, is_opera5, is_opera5up
// (4) JavaScript version number:
// is_js (float indicating full JavaScript version number: 1, 1.1, 1.2 ...)
// (5) OS platform and version:
// is_win, is_win16, is_win32, is_win31, is_win95, is_winnt, is_win98, is_winme, is_win2k
// is_os2
// is_mac, is_mac68k, is_macppc
// is_unix
// is_sun, is_sun4, is_sun5, is_suni86
// is_irix, is_irix5, is_irix6
// is_hpux, is_hpux9, is_hpux10
// is_aix, is_aix1, is_aix2, is_aix3, is_aix4
// is_linux, is_sco, is_unixware, is_mpras, is_reliant
// is_dec, is_sinix, is_freebsd, is_bsd
// is_vms
//
// See http://www.it97.de/JavaScript/JS_tutorial/bstat/navobj.html and
// http://www.it97.de/JavaScript/JS_tutorial/bstat/Browseraol.html
// for detailed lists of userAgent strings.
//
// Note: you don't want your Nav4 or IE4 code to "turn off" or
// stop working when new versions of browsers are released, so
// in conditional code forks, use is_ie5up ("IE 5.0 or greater")
// is_opera5up ("Opera 5.0 or greater") instead of is_ie5 or is_opera5
// to check version in code which you want to work on future
// versions.
// convert all characters to lowercase to simplify testing
var agt=navigator.userAgent.toLowerCase();
// *** BROWSER VERSION ***
// Note: On IE5, these return 4, so use is_ie5up to detect IE5.
var is_major = parseInt(navigator.appVersion);
var is_minor = parseFloat(navigator.appVersion);
// Note: Opera and WebTV spoof Navigator. We do strict client detection.
// If you want to allow spoofing, take out the tests for opera and webtv.
var is_nav = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
&& (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
&& (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));
var is_nav2 = (is_nav && (is_major == 2));
var is_nav3 = (is_nav && (is_major == 3));
var is_nav4 = (is_nav && (is_major == 4));
var is_nav4up = (is_nav && (is_major >= 4));
var is_navonly = (is_nav && ((agt.indexOf(";nav") != -1) ||
(agt.indexOf("; nav") != -1)) );
var is_nav6 = (is_nav && (is_major == 5) && (agt.indexOf('rv:0') > -1));
var is_nav6up = (is_nav && (is_major >= 5));
var is_gecko = (agt.indexOf('gecko') != -1);
var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
var is_ie3 = (is_ie && (is_major < 4));
var is_ie4 = (is_ie && (is_major == 4) && (agt.indexOf("msie 4")!=-1) );
var is_ie4up = (is_ie && (is_major >= 4));
var is_ie5 = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")!=-1) );
var is_ie5_5 = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.5") !=-1));
var is_ie5up = (is_ie && !is_ie3 && !is_ie4);
var is_ie5_5up =(is_ie && !is_ie3 && !is_ie4 && !is_ie5);
var is_ie6 = (is_ie && (is_major == 4) && (agt.indexOf("msie 6.")!=-1) );
var is_ie6up = (is_ie && !is_ie3 && !is_ie4 && !is_ie5 && !is_ie5_5);
// KNOWN BUG: On AOL4, returns false if IE3 is embedded browser
// or if this is the first browser window opened. Thus the
// variables is_aol, is_aol3, and is_aol4 aren't 100% reliable.
var is_aol = (agt.indexOf("aol") != -1);
var is_aol3 = (is_aol && is_ie3);
var is_aol4 = (is_aol && is_ie4);
var is_aol5 = (agt.indexOf("aol 5") != -1);
var is_aol6 = (agt.indexOf("aol 6") != -1);
var is_opera = (agt.indexOf("opera") != -1);
var is_opera2 = (agt.indexOf("opera 2") != -1 || agt.indexOf("opera/2") != -1);
var is_opera3 = (agt.indexOf("opera 3") != -1 || agt.indexOf("opera/3") != -1);
var is_opera4 = (agt.indexOf("opera 4") != -1 || agt.indexOf("opera/4") != -1);
var is_opera5 = (agt.indexOf("opera 5") != -1 || agt.indexOf("opera/5") != -1);
var is_opera5up = (is_opera && !is_opera2 && !is_opera3 && !is_opera4);
var is_webtv = (agt.indexOf("webtv") != -1);
var is_TVNavigator = ((agt.indexOf("navio") != -1) || (agt.indexOf("navio_aoltv") != -1));
var is_AOLTV = is_TVNavigator;
var is_hotjava = (agt.indexOf("hotjava") != -1);
var is_hotjava3 = (is_hotjava && (is_major == 3));
var is_hotjava3up = (is_hotjava && (is_major >= 3));
// *** JAVASCRIPT VERSION CHECK ***
var is_js;
if (is_nav2 || is_ie3) is_js = 1.0;
else if (is_nav3) is_js = 1.1;
else if (is_opera5up) is_js = 1.3;
else if (is_opera) is_js = 1.1;
else if ((is_nav4 && (is_minor <= 4.05)) || is_ie4) is_js = 1.2;
else if ((is_nav4 && (is_minor > 4.05)) || is_ie5) is_js = 1.3;
else if (is_hotjava3up) is_js = 1.4;
else if (is_nav6 || is_gecko) is_js = 1.5;
// NOTE: In the future, update this code when newer versions of JS
// are released. For now, we try to provide some upward compatibility
// so that future versions of Nav and IE will show they are at
// *least* JS 1.x capable. Always check for JS version compatibility
// with > or >=.
else if (is_nav6up) is_js = 1.5;
// NOTE: ie5up on mac is 1.4
else if (is_ie5up) is_js = 1.3
// HACK: no idea for other browsers; always check for JS version with > or >=
else is_js = 0.0;
// *** PLATFORM ***
var is_win = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
// NOTE: On Opera 3.0, the userAgent string includes "Windows 95/NT4" on all
// Win32, so you can't distinguish between Win95 and WinNT.
var is_win95 = ((agt.indexOf("win95")!=-1) || (agt.indexOf("windows 95")!=-1));
// is this a 16 bit compiled version?
var is_win16 = ((agt.indexOf("win16")!=-1) ||
(agt.indexOf("16bit")!=-1) || (agt.indexOf("windows 3.1")!=-1) ||
(agt.indexOf("windows 16-bit")!=-1) );
var is_win31 = ((agt.indexOf("windows 3.1")!=-1) || (agt.indexOf("win16")!=-1) ||
(agt.indexOf("windows 16-bit")!=-1));
var is_winme = ((agt.indexOf("win 9x 4.90")!=-1));
var is_win2k = ((agt.indexOf("windows nt 5.0")!=-1));
// NOTE: Reliable detection of Win98 may not be possible. It appears that:
// - On Nav 4.x and before you'll get plain "Windows" in userAgent.
// - On Mercury client, the 32-bit version will return "Win98", but
// the 16-bit version running on Win98 will still return "Win95".
var is_win98 = ((agt.indexOf("win98")!=-1) || (agt.indexOf("windows 98")!=-1));
var is_winnt = ((agt.indexOf("winnt")!=-1) || (agt.indexOf("windows nt")!=-1));
var is_win32 = (is_win95 || is_winnt || is_win98 ||
((is_major >= 4) && (navigator.platform == "Win32")) ||
(agt.indexOf("win32")!=-1) || (agt.indexOf("32bit")!=-1));
var is_os2 = ((agt.indexOf("os/2")!=-1) ||
(navigator.appVersion.indexOf("OS/2")!=-1) ||
(agt.indexOf("ibm-webexplorer")!=-1));
var is_mac = (agt.indexOf("mac")!=-1);
// hack ie5 js version for mac
if (is_mac && is_ie5up) is_js = 1.4;
var is_mac68k = (is_mac && ((agt.indexOf("68k")!=-1) ||
(agt.indexOf("68000")!=-1)));
var is_macppc = (is_mac && ((agt.indexOf("ppc")!=-1) ||
(agt.indexOf("powerpc")!=-1)));
var is_sun = (agt.indexOf("sunos")!=-1);
var is_sun4 = (agt.indexOf("sunos 4")!=-1);
var is_sun5 = (agt.indexOf("sunos 5")!=-1);
var is_suni86= (is_sun && (agt.indexOf("i86")!=-1));
var is_irix = (agt.indexOf("irix") !=-1); // SGI
var is_irix5 = (agt.indexOf("irix 5") !=-1);
var is_irix6 = ((agt.indexOf("irix 6") !=-1) || (agt.indexOf("irix6") !=-1));
var is_hpux = (agt.indexOf("hp-ux")!=-1);
var is_hpux9 = (is_hpux && (agt.indexOf("09.")!=-1));
var is_hpux10= (is_hpux && (agt.indexOf("10.")!=-1));
var is_aix = (agt.indexOf("aix") !=-1); // IBM
var is_aix1 = (agt.indexOf("aix 1") !=-1);
var is_aix2 = (agt.indexOf("aix 2") !=-1);
var is_aix3 = (agt.indexOf("aix 3") !=-1);
var is_aix4 = (agt.indexOf("aix 4") !=-1);
var is_linux = (agt.indexOf("inux")!=-1);
var is_sco = (agt.indexOf("sco")!=-1) || (agt.indexOf("unix_sv")!=-1);
var is_unixware = (agt.indexOf("unix_system_v")!=-1);
var is_mpras = (agt.indexOf("ncr")!=-1);
var is_reliant = (agt.indexOf("reliantunix")!=-1);
var is_dec = ((agt.indexOf("dec")!=-1) || (agt.indexOf("osf1")!=-1) ||
(agt.indexOf("dec_alpha")!=-1) || (agt.indexOf("alphaserver")!=-1) ||
(agt.indexOf("ultrix")!=-1) || (agt.indexOf("alphastation")!=-1));
var is_sinix = (agt.indexOf("sinix")!=-1);
var is_freebsd = (agt.indexOf("freebsd")!=-1);
var is_bsd = (agt.indexOf("bsd")!=-1);
var is_unix = ((agt.indexOf("x11")!=-1) || is_sun || is_irix || is_hpux ||
is_sco ||is_unixware || is_mpras || is_reliant ||
is_dec || is_sinix || is_aix || is_linux || is_bsd || is_freebsd);
var is_vms = ((agt.indexOf("vax")!=-1) || (agt.indexOf("openvms")!=-1));
//--> end hide JavaScript

View File

@ -0,0 +1,9 @@
function loadDriverOptions (scope) {
scope.APPID = "WQBM2ARBZR";
scope.CLOUDURL = null;
scope.USE_STRICT_SUSPEND_DATA_LIMITS = false;
scope.SHOW_DEBUG_ON_LAUNCH = false;
scope.FORCED_COMMIT_TIME = 60000;
scope.strLMSStandard = "SCORM";
scope.REVIEW_MODE_IS_READ_ONLY = true;
}

View File

@ -0,0 +1,33 @@
<html>
<head>
<meta charset="utf-8" lang="de">
<style>
html {
font-size: 20px;
font-family: 'lato', sans-serif;
font-weight: lighter;
letter-spacing: 0.05rem;
}
.goodbye-container {
text-align: center;
margin-top: 15rem;
}
.bye-message {
font-size: 1.5rem;
}
.exit-text {
color: #707070;
margin-top: 1rem;
}
</style>
</head>
<body>
<div class="goodbye-container">
<div class="bye-message">👋 Tschüss!</div>
<div class="exit-text">Sie können jetzt die Seite schliessen.</div>
</div>
</body>
</html>

View File

@ -0,0 +1,89 @@
<!DOCTYPE html>
<html lang="en">
<!--/* Copyright © 2003-2013 Rustici Software, LLC All Rights Reserved. www.scorm.com */-->
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Loading course</title>
<style type="text/css">
body,
html {
margin: 0;
padding: 0;
height: 100%;
overflow: hidden;
}
#content {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
#content-frame {
width: 1px;
min-width: 100%;
}
</style>
<!-- Resize Hack -->
<script type="text/javascript">
window.resizeTo(screen.width, screen.height);
</script>
<script language="JavaScript1.2" src="driverOptions.js"></script>
<script language="JavaScript1.2" src="scormdriver.js"></script>
<script language="JavaScript1.2" src="preloadIntegrity.js"></script>
<script language="JavaScript1.2">
strContentLocation = "../scormcontent/index.html#/preview"; //Put the link to the start of the content here.
totaliframesloaded = 0;
function updateIframesLoadedCount() {
totaliframesloaded++;
if (totaliframesloaded == window.frames.length) {
window.Start();
}
}
function LoadContent() {
verifySuspendDataVersion(3);
verifyForcedCommitTime();
//check for bookmark
var bookmark = GetBookmark();
if (bookmark != "") {
//if there is a bookmark, then go to that page
window.scormdriver_content.document.location.href = "../scormcontent/" + bookmark;
} else {
//if not, go to the start page
window.scormdriver_content.document.location.href = strContentLocation;
}
}
</script>
</head>
<body>
<div id="content">
<iframe title="Loading course" id="content-frame" name="scormdriver_content" width="100%" height="100%" scrolling="no" frameborder="0" src="blank.html" onload="updateIframesLoadedCount()" allowfullscreen></iframe>
<iframe title="Intentionally blank" aria-hidden="true" name="AICCComm" src="AICCComm.html" frameborder="0" onload="updateIframesLoadedCount()" style="display: none;"></iframe>
<iframe title="Intentionally blank" aria-hidden="true" name="rusticisoftware_aicc_results" src="blank.html" frameborder="0" onload="updateIframesLoadedCount()" style="display: none;"></iframe>
<iframe title="Intentionally blank" aria-hidden="true" name="NothingFrame" src="blank.html" frameborder="0" onload="updateIframesLoadedCount()" style="display: none;"></iframe>
</div>
<!-- Set iframes to mimic frames -->
<script type="text/javascript">
window.scormdriver_content = window.frames['scormdriver_content'];
window.AICCComm = window.frames['AICCComm'];
window.rusticisoftware_aicc_results = window.frames['rusticisoftware_aicc_results'];
window.NothingFrame = window.frames['NothingFrame'];
document.getElementById('content-frame').title = getCourseTitle();
document.title = getCourseTitle();
</script>
</body>
</html>

View File

@ -0,0 +1,96 @@
function isTrue(val) {
return val && String(val).toLowerCase() === 'true';
}
function verifySuspendDataVersion(maxAttempts) {
var commitDataAndBook;
var launchData;
var manifestCPV;
var resetFlag;
var sentBookCheck;
var sentDataCheck;
var suspendData = GetDataChunk();
var suspendDataCPV;
if (!suspendData) {
return;
}
if (maxAttempts === 0) {
WriteToDebug('WARNING: ERROR WITH CLEARING SUSPEND OR BOOKMARKING DATA!');
WriteToDebug('NO MORE ATTEMPTS LEFT. COURSE BEHAVIOR MAY BE NEGATIVELY IMPACTED.');
return;
}
try {
launchData = JSON.parse(atob(GetLaunchData()));
} catch (e) {
WriteToDebug('WARNING: Issue with obtaining manifest launch data. Version reset behavior disabled.');
return;
}
try {
suspendData = JSON.parse(suspendData);
} catch (e) {
WriteToDebug('WARNING: Unable to parse suspend data. Version reset behavior disabled.');
return;
}
manifestCPV = launchData.cpv;
resetFlag = launchData.rld;
suspendDataCPV = suspendData.cpv;
if (suspendDataCPV !== manifestCPV) {
WriteToDebug('WARNING: Suspend data version mismatch against manifest version.');
if (resetFlag) {
if (REVIEW_MODE_IS_READ_ONLY && GetLessonMode() === 3) {
WriteToDebug('WARNING: Course is in review mode. Unable to clear suspend and bookmarking data!');
WriteToDebug('Resetting of learner data will not occur. Course behavior may be negatively impacted.');
return;
}
WriteToDebug('Okay to clear data. Now clearing suspend and bookmarking data...');
sentDataCheck = SetDataChunk("");
WriteToDebug('Suspend Data Cleared: ' + sentDataCheck );
sentBookCheck = SetBookmark("");
WriteToDebug('Bookmark Data Cleared: ' + sentBookCheck );
commitDataAndBook = CommitData();
WriteToDebug('Data Commited: ' + commitDataAndBook );
if (isTrue(sentDataCheck) && isTrue(sentBookCheck) && isTrue(commitDataAndBook)) {
WriteToDebug('Verified that all bookmarking and suspend data have been cleared. Data commited successfully.');
} else {
WriteToDebug('WARNING: ERROR WITH CLEARING SUSPEND OR BOOKMARKING DATA! RETRY ATTEMPTS LEFT: ' + (maxAttempts-1));
verifySuspendDataVersion(maxAttempts-1);
}
} else {
WriteToDebug('WARNING: Course reset flag not turned on. Resetting of learner data will not occur.');
WriteToDebug('Course behavior may be negatively impacted.');
}
}
}
function verifyForcedCommitTime() {
if (FORCED_COMMIT_TIME >= 5000) {
WriteToDebug('Starting Forced Commit heartbeat...');
var intervalID = setInterval(commitHeartbeat, FORCED_COMMIT_TIME);
} else {
WriteToDebug('Forced Commit Time cannot be lower than 5000 milliseconds. Not using forced commit time.');
}
}
function commitHeartbeat() {
WriteToDebug('Forced Commit heartbeat triggered. Now saving current session time...');
SetSessionTime(GetSessionAccumulatedTime());
WriteToDebug('Forced Commit heartbeat trigger is now triggering a commit...');
CommitData();
}
function getCourseTitle() {
return 'Story 01a - 01_Patrizia &amp; Marco sichern sich ab - Einstieg'
}

View File

@ -0,0 +1,258 @@
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema id="ScormEnginePackageProperties" targetNamespace="http://www.scorm.com/xsd/ScormEnginePackageProperties"
elementFormDefault="qualified" xmlns="http://www.scorm.com/xsd/ScormEnginePackageProperties"
xmlns:mstns="http://www.scorm.com/xsd/ScormEnginePackageProperties" xmlns:xs="http://www.w3.org/2001/XMLSchema"
attributeFormDefault="qualified">
<xs:element name="ScormEnginePackageProperties">
<xs:complexType>
<xs:all>
<xs:element name="controls" type="controlsSpec" minOccurs="0" maxOccurs="1" />
<xs:element name="appearance" type="appearanceSpec" minOccurs="0" maxOccurs="1" />
<!-- allow for mis-spelling of 'appearance' that's acceptable in our parsing code -->
<xs:element name="appearence" type="appearanceSpec" minOccurs="0" maxOccurs="1" />
<xs:element name="behavior" type="behaviorSpec" minOccurs="0" maxOccurs="1" />
<xs:element name="rsop" type="rsopSpec" minOccurs="0" maxOccurs="1" />
<xs:element name="heuristics" type="heuristicSpec" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
</xs:element>
<xs:complexType name="controlsSpec">
<xs:all>
<xs:element name="showFinishButton" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="showCloseItem" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="showHelp" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="showProgressBar" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="useMeasureProgressBar" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="showCourseStructure" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="courseStructureStartsOpen" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="showNavBar" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="showTitleBar" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="enableFlowNav" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="enableChoiceNav" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="statusDisplay" type="statusDisplayType" minOccurs="0" maxOccurs="1" />
<xs:element name="forceDisableRootChoice" type="yesNoType" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:complexType name="appearanceSpec">
<xs:all>
<xs:element name="displayStage" type="displayStageSpec" minOccurs="0" maxOccurs="1" />
<xs:element name="courseStructureWidth" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:complexType name="behaviorSpec">
<xs:all>
<xs:element name="launch" type="launchSpec" minOccurs="0" maxOccurs="1" />
<xs:element name="exitActions" type="exitActionsSpec" minOccurs="0" maxOccurs="1" />
<xs:element name="communications" type="communicationsSpec" minOccurs="0" maxOccurs="1" />
<xs:element name="debug" type="debugSpec" minOccurs="0" maxOccurs="1" />
<xs:element name="history" type="captureHistorySpec" minOccurs="0" maxOccurs="1" />
<xs:element name="disableRightClick" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="preventWindowResize" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="scoreRollupMode" type="scoreRollupType" minOccurs="0" maxOccurs="1" />
<xs:element name="numberOfScoringObjects" type="xs:int" minOccurs="0" maxOccurs="1" />
<xs:element name="statusRollupMode" type="statusRollupType" minOccurs="0" maxOccurs="1" />
<xs:element name="thresholdScoreForCompletion" type="xs:decimal" minOccurs="0" maxOccurs="1" />
<xs:element name="applyRollupStatusToSuccess" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="firstScoIsPretest" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="finishCausesImmediateCommit" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="invalidMenuItemAction" type="invalidMenuItemActionType" minOccurs="0" maxOccurs="1" />
<xs:element name="alwaysFlowToFirstSco" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="logoutCausesPlayerExit" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="resetRtTiming" type="resetRunTimeDataTimingType" minOccurs="0" maxOccurs="1" />
<xs:element name="lookaheadSequencerMode" type="lookaheadSequencerModeType" minOccurs="0" maxOccurs="1" />
<xs:element name="scoreOverridesStatus" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="allowCompleteStatusChange" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="scaleRawScore" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="useQuickLookaheadSequencer" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="rollupRuntimeAtScoUnload" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="forceObjectiveCompletionSetByContent" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="invokeRollupAtSuspendAll" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="completionStatOfFailedSuccessStat" type="completionStatusType" minOccurs="0" maxOccurs="1" />
<xs:element name="satisfiedCausesCompletion" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="makeStudentPrefsGlobalToCourse" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="returnToLmsAction" type="returnToLmsActionType" minOccurs="0" maxOccurs="1" />
<xs:element name="rollupEmptySetToUnknown" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="validateInteractionTypes" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="suspendDataMaxLength" type="xs:int" minOccurs="0" maxOccurs="1" />
<xs:element name="timeLimit" type="xs:int" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:complexType name="rsopSpec">
<xs:all>
<xs:element name="offlineSynchMode" type="offlineSynchModeType" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:complexType name="heuristicSpec">
<xs:all>
<xs:element name="isCompletionTracked" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="isSatisfactionTracked" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="isScoreTracked" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="isIncompleteScoreMeaningful" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="isIncompleteSatisfactionMeaningful" type="yesNoType" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:complexType name="debugSpec">
<xs:all>
<xs:element name="controlAudit" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="controlDetailed" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="runtimeAudit" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="runtimeDetailed" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="sequencingAudit" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="sequencingDetailed" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="sequencingSimple" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="lookaheadAudit" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="lookaheadDetailed" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="includeTimestamps" type="yesNoType" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:complexType name="captureHistorySpec">
<xs:all>
<xs:element name="captureHistory" type="yesNoType" minOccurs="0" maxOccurs="1" />
<xs:element name="captureHistoryDetailed" type="yesNoType" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:complexType name="communicationsSpec">
<xs:all>
<xs:element name="maxFailedSubmissions" type="xs:int" minOccurs="0" maxOccurs="1" />
<xs:element name="commitFrequency" type="xs:int" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:complexType name="exitActionsSpec">
<xs:all>
<xs:element name="intermediateSco" type="scoExitActionSpec" minOccurs="0" maxOccurs="1" />
<xs:element name="finalSco" type="scoExitActionSpec" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:complexType name="scoExitActionSpec">
<xs:all>
<xs:element name="satisfied" type="exitTypesSpec" minOccurs="0" maxOccurs="1" />
<xs:element name="notSatisfied" type="exitTypesSpec" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:complexType name="exitTypesSpec">
<xs:all>
<xs:element name="normal" type="exitActionType" minOccurs="0" maxOccurs="1" />
<xs:element name="suspend" type="exitActionType" minOccurs="0" maxOccurs="1" />
<xs:element name="timeout" type="exitActionType" minOccurs="0" maxOccurs="1" />
<xs:element name="logout" type="exitActionType" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:complexType name="launchSpec">
<xs:all>
<xs:element name="sco" type="launchType" minOccurs="0" maxOccurs="1" />
<xs:element name="player" type="launchType" minOccurs="0" maxOccurs="1" />
<xs:element name="wrapScoWindowWithApi" type="yesNoType" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:complexType name="displayStageSpec">
<xs:all>
<xs:element name="required" type="stageSpec" minOccurs="0" maxOccurs="1" />
<xs:element name="desired" type="stageSpec" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:complexType name="stageSpec">
<xs:all>
<xs:element name="width" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1" />
<xs:element name="height" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1" />
<xs:element name="fullscreen" type="yesNoType" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
<xs:simpleType name="yesNoType">
<xs:restriction base="xs:string">
<xs:enumeration value="yes" />
<xs:enumeration value="no" />
<xs:enumeration value="true" />
<xs:enumeration value="false" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="launchType">
<xs:restriction base="xs:string">
<xs:enumeration value="frameset" />
<xs:enumeration value="new window" />
<xs:enumeration value="new window,after click" />
<xs:enumeration value="new window without browser toolbar" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="exitActionType">
<xs:restriction base="xs:string">
<xs:enumeration value="exit,no confirmation" />
<xs:enumeration value="exit,confirmation" />
<xs:enumeration value="continue" />
<xs:enumeration value="message page" />
<xs:enumeration value="do nothing" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="scoreRollupType">
<xs:restriction base="xs:string">
<xs:enumeration value="score provided by course" />
<xs:enumeration value="average score of all units" />
<xs:enumeration value="average score of all units with scores" />
<xs:enumeration value="fixed average" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="statusRollupType">
<xs:restriction base="xs:string">
<xs:enumeration value="status provided by course" />
<xs:enumeration value="complete when all units complete" />
<xs:enumeration value="complete when all units satisfactorily complete" />
<xs:enumeration value="complete when threshold score is met" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="statusDisplayType">
<xs:restriction base="xs:string">
<xs:enumeration value="success only" />
<xs:enumeration value="completion only" />
<xs:enumeration value="separate" />
<xs:enumeration value="combined" />
<xs:enumeration value="none" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="invalidMenuItemActionType">
<xs:restriction base="xs:string">
<xs:enumeration value="show" />
<xs:enumeration value="hide" />
<xs:enumeration value="disable" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="resetRunTimeDataTimingType">
<xs:restriction base="xs:string">
<xs:enumeration value="never" />
<xs:enumeration value="when exit is not suspend" />
<xs:enumeration value="on each new sequencing attempt" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="lookaheadSequencerModeType">
<xs:restriction base="xs:string">
<xs:enumeration value="enabled" />
<xs:enumeration value="disabled" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="offlineSynchModeType">
<xs:restriction base="xs:string">
<xs:enumeration value="most recent" />
<xs:enumeration value="simple" />
<xs:enumeration value="most complete" />
<xs:enumeration value="most satisfied" />
<xs:enumeration value="most done" />
<xs:enumeration value="best done " />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="completionStatusType">
<xs:restriction base="xs:string">
<xs:enumeration value="completed" />
<xs:enumeration value="incomplete" />
<xs:enumeration value="browsed" />
<xs:enumeration value="not attempted" />
<xs:enumeration value="unknown" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="returnToLmsActionType">
<xs:restriction base="xs:string">
<xs:enumeration value="legacy" />
<xs:enumeration value="suspend_all" />
<xs:enumeration value="exit_all" />
<xs:enumeration value="selectable" />
</xs:restriction>
</xs:simpleType>
</xs:schema>

View File

@ -0,0 +1,110 @@
<?xml version="1.0"?>
<!-- filename=adlcp_rootv1p2.xsd -->
<!-- Conforms to w3c http://www.w3.org/TR/xmlschema-1/ 2000-10-24-->
<xsd:schema xmlns="http://www.adlnet.org/xsd/adlcp_rootv1p2"
targetNamespace="http://www.adlnet.org/xsd/adlcp_rootv1p2"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:imscp="http://www.imsproject.org/xsd/imscp_rootv1p1p2"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="unqualified"
version="ADL Version 1.2">
<xsd:import namespace="http://www.imsproject.org/xsd/imscp_rootv1p1p2"
schemaLocation="imscp_rootv1p1p2.xsd"/>
<xsd:element name="location" type="locationType"/>
<xsd:element name="prerequisites" type="prerequisitesType"/>
<xsd:element name="maxtimeallowed" type="maxtimeallowedType"/>
<xsd:element name="timelimitaction" type="timelimitactionType"/>
<xsd:element name="datafromlms" type="datafromlmsType"/>
<xsd:element name="masteryscore" type="masteryscoreType"/>
<xsd:element name="schema" type="newSchemaType"/>
<xsd:simpleType name="newSchemaType">
<xsd:restriction base="imscp:schemaType">
<xsd:enumeration value="ADL SCORM"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="schemaversion" type="newSchemaversionType"/>
<xsd:simpleType name="newSchemaversionType">
<xsd:restriction base="imscp:schemaversionType">
<xsd:enumeration value="1.2"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:attribute name="scormtype">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="asset"/>
<xsd:enumeration value="sco"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:simpleType name="locationType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="2000"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="prerequisitesType">
<xsd:simpleContent>
<xsd:extension base="prerequisiteStringType">
<xsd:attributeGroup ref="attr.prerequisitetype"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:attributeGroup name="attr.prerequisitetype">
<xsd:attribute name="type" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="aicc_script"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:simpleType name="maxtimeallowedType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="13"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="timelimitactionType">
<xsd:restriction base="stringType">
<xsd:enumeration value="exit,no message"/>
<xsd:enumeration value="exit,message"/>
<xsd:enumeration value="continue,no message"/>
<xsd:enumeration value="continue,message"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="datafromlmsType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="255"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="masteryscoreType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="200"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="stringType">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:simpleType name="prerequisiteStringType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="200"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!-- filename=ims_xml.xsd --><xsd:schema xmlns="http://www.w3.org/XML/1998/namespace" targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <!-- 2001-02-22 edited by Thomas Wason IMS Global Learning Consortium, Inc. --> <xsd:annotation> <xsd:documentation>In namespace-aware XML processors, the &quot;xml&quot; prefix is bound to the namespace name http://www.w3.org/XML/1998/namespace.</xsd:documentation> <xsd:documentation>Do not reference this file in XML instances</xsd:documentation> <xsd:documentation>Schawn Thropp: Changed the uriReference type to string type</xsd:documentation> </xsd:annotation> <xsd:attribute name="lang" type="xsd:language"> <xsd:annotation> <xsd:documentation>Refers to universal XML 1.0 lang attribute</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="base" type="xsd:string"> <xsd:annotation> <xsd:documentation>Refers to XML Base: http://www.w3.org/TR/xmlbase</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="link" type="xsd:string"/></xsd:schema>

View File

@ -0,0 +1,345 @@
<?xml version="1.0"?>
<!-- edited with XML Spy v3.5 (http://www.xmlspy.com) by Thomas Wason (private) -->
<!-- filename=ims_cp_rootv1p1p2.xsd -->
<!-- Copyright (2) 2001 IMS Global Learning Consortium, Inc. -->
<!-- edited by Thomas Wason -->
<!-- Conforms to w3c http://www.w3.org/TR/xmlschema-1/ 2000-10-24-->
<xsd:schema xmlns="http://www.imsproject.org/xsd/imscp_rootv1p1p2"
targetNamespace="http://www.imsproject.org/xsd/imscp_rootv1p1p2"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="unqualified" version="IMS CP 1.1.2">
<!-- ******************** -->
<!-- ** Change History ** -->
<!-- ******************** -->
<xsd:annotation>
<xsd:documentation xml:lang="en">DRAFT XSD for IMS Content Packaging version 1.1 DRAFT</xsd:documentation>
<xsd:documentation> Copyright (c) 2001 IMS GLC, Inc. </xsd:documentation>
<xsd:documentation>2000-04-21, Adjustments by T.D. Wason from CP 1.0.</xsd:documentation>
<xsd:documentation>2001-02-22, T.D.Wason: Modify for 2000-10-24 XML-Schema version. Modified to support extension.</xsd:documentation>
<xsd:documentation>2001-03-12, T.D.Wason: Change filename, target and meta-data namespaces and meta-data fielname. Add meta-data to itemType, fileType and organizationType.</xsd:documentation>
<xsd:documentation>Do not define namespaces for xml in XML instances generated from this xsd.</xsd:documentation>
<xsd:documentation>Imports IMS meta-data xsd, lower case element names. </xsd:documentation>
<xsd:documentation>This XSD provides a reference to the IMS meta-data root element as imsmd:record</xsd:documentation>
<xsd:documentation>If the IMS meta-data is to be used in the XML instance then the instance must define an IMS meta-data prefix with a namespace. The meta-data targetNamespace should be used. </xsd:documentation>
<xsd:documentation>2001-03-20, Thor Anderson: Remove manifestref, change resourceref back to identifierref, change manifest back to contained by manifest. --Tom Wason: manifest may contain _none_ or more manifests.</xsd:documentation>
<xsd:documentation>2001-04-13 Tom Wason: corrected attirbute name structure. Was misnamed type. </xsd:documentation>
<xsd:documentation>2001-05-14 Schawn Thropp: Made all complexType extensible with the group.any</xsd:documentation>
<xsd:documentation>Added the anyAttribute to all complexTypes. Changed the href attribute on the fileType and resourceType to xsd:string</xsd:documentation>
<xsd:documentation>Changed the maxLength of the href, identifierref, parameters, structure attributes to match the Information model.</xsd:documentation>
<xsd:documentation>2001-07-25 Schawn Thropp: Changed the namespace for the Schema of Schemas to the 5/2/2001 W3C XML Schema</xsd:documentation>
<xsd:documentation>Recommendation. attributeGroup attr.imsmd deleted, was not used anywhere. Any attribute declarations that have</xsd:documentation>
<xsd:documentation>use = "default" changed to use="optional" - attr.structure.req.</xsd:documentation>
<xsd:documentation>Any attribute declarations that have value="somevalue" changed to default="somevalue",</xsd:documentation>
<xsd:documentation>attr.structure.req (hierarchical). Removed references to IMS MD Version 1.1.</xsd:documentation>
<xsd:documentation>Modified attribute group "attr.resourcetype.req" to change use from optional</xsd:documentation>
<xsd:documentation>to required to match the information model. As a result the default value also needed to be removed</xsd:documentation>
<xsd:documentation>Name change for XSD. Changed to match version of CP Spec </xsd:documentation>
</xsd:annotation>
<xsd:annotation>
<xsd:documentation>Inclusions and Imports</xsd:documentation>
</xsd:annotation>
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="ims_xml.xsd"/>
<xsd:annotation>
<xsd:documentation>Attribute Declarations</xsd:documentation>
</xsd:annotation>
<!-- **************************** -->
<!-- ** Attribute Declarations ** -->
<!-- **************************** -->
<xsd:attributeGroup name="attr.base">
<xsd:attribute ref="xml:base" use="optional"/>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.default">
<xsd:attribute name="default" type="xsd:IDREF" use="optional"/>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.href">
<xsd:attribute name="href" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:anyURI">
<xsd:maxLength value="2000"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.href.req">
<xsd:attribute name="href" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:anyURI">
<xsd:maxLength value="2000"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.identifier.req">
<xsd:attribute name="identifier" type="xsd:ID" use="required"/>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.identifier">
<xsd:attribute name="identifier" type="xsd:ID" use="optional"/>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.isvisible">
<xsd:attribute name="isvisible" type="xsd:boolean" use="optional"/>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.parameters">
<xsd:attribute name="parameters" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="1000"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.identifierref">
<xsd:attribute name="identifierref" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="2000"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.identifierref.req">
<xsd:attribute name="identifierref" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="2000"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.resourcetype.req">
<xsd:attribute name="type" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="1000"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.structure.req">
<xsd:attribute name="structure" use="optional" default="hierarchical">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="200"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.version">
<xsd:attribute name="version" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="20"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:annotation>
<xsd:documentation>element groups</xsd:documentation>
</xsd:annotation>
<xsd:group name="grp.any">
<xsd:annotation>
<xsd:documentation>Any namespaced element from any namespace may be included within an &quot;any&quot; element. The namespace for the imported element must be defined in the instance, and the schema must be imported. </xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:group>
<!-- ************************** -->
<!-- ** Element Declarations ** -->
<!-- ************************** -->
<xsd:element name="dependency" type="dependencyType"/>
<xsd:element name="file" type="fileType"/>
<xsd:element name="item" type="itemType"/>
<xsd:element name="manifest" type="manifestType"/>
<xsd:element name="metadata" type="metadataType"/>
<xsd:element name="organization" type="organizationType"/>
<xsd:element name="organizations" type="organizationsType"/>
<xsd:element name="resource" type="resourceType"/>
<xsd:element name="resources" type="resourcesType"/>
<xsd:element name="schema" type="schemaType"/>
<xsd:element name="schemaversion" type="schemaversionType"/>
<xsd:element name="title" type="titleType"/>
<!-- ******************* -->
<!-- ** Complex Types ** -->
<!-- ******************* -->
<!-- **************** -->
<!-- ** dependency ** -->
<!-- **************** -->
<xsd:complexType name="dependencyType">
<xsd:sequence>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.identifierref.req"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- ********** -->
<!-- ** file ** -->
<!-- ********** -->
<xsd:complexType name="fileType">
<xsd:sequence>
<xsd:element ref="metadata" minOccurs="0"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.href.req"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- ********** -->
<!-- ** item ** -->
<!-- ********** -->
<xsd:complexType name="itemType">
<xsd:sequence>
<xsd:element ref="title" minOccurs="0"/>
<xsd:element ref="item" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="metadata" minOccurs="0"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.identifier.req"/>
<xsd:attributeGroup ref="attr.identifierref"/>
<xsd:attributeGroup ref="attr.isvisible"/>
<xsd:attributeGroup ref="attr.parameters"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- ************** -->
<!-- ** manifest ** -->
<!-- ************** -->
<xsd:complexType name="manifestType">
<xsd:sequence>
<xsd:element ref="metadata" minOccurs="0"/>
<xsd:element ref="organizations"/>
<xsd:element ref="resources"/>
<xsd:element ref="manifest" minOccurs="0" maxOccurs="unbounded"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.identifier.req"/>
<xsd:attributeGroup ref="attr.version"/>
<xsd:attribute ref="xml:base"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- ************** -->
<!-- ** metadata ** -->
<!-- ************** -->
<xsd:complexType name="metadataType">
<xsd:sequence>
<xsd:element ref="schema" minOccurs="0"/>
<xsd:element ref="schemaversion" minOccurs="0"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
</xsd:complexType>
<!-- ******************* -->
<!-- ** organizations ** -->
<!-- ******************* -->
<xsd:complexType name="organizationsType">
<xsd:sequence>
<xsd:element ref="organization" minOccurs="0" maxOccurs="unbounded"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.default"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- ****************** -->
<!-- ** organization ** -->
<!-- ****************** -->
<xsd:complexType name="organizationType">
<xsd:sequence>
<xsd:element ref="title" minOccurs="0"/>
<xsd:element ref="item" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="metadata" minOccurs="0"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.identifier.req"/>
<xsd:attributeGroup ref="attr.structure.req"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- *************** -->
<!-- ** resources ** -->
<!-- *************** -->
<xsd:complexType name="resourcesType">
<xsd:sequence>
<xsd:element ref="resource" minOccurs="0" maxOccurs="unbounded"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.base"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- ************** -->
<!-- ** resource ** -->
<!-- ************** -->
<xsd:complexType name="resourceType">
<xsd:sequence>
<xsd:element ref="metadata" minOccurs="0"/>
<xsd:element ref="file" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="dependency" minOccurs="0" maxOccurs="unbounded"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.identifier.req"/>
<xsd:attributeGroup ref="attr.resourcetype.req"/>
<xsd:attributeGroup ref="attr.base"/>
<xsd:attributeGroup ref="attr.href"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- ****************** -->
<!-- ** Simple Types ** -->
<!-- ****************** -->
<!-- ************ -->
<!-- ** schema ** -->
<!-- ************ -->
<xsd:simpleType name="schemaType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="100"/>
</xsd:restriction>
</xsd:simpleType>
<!-- ******************* -->
<!-- ** schemaversion ** -->
<!-- ******************* -->
<xsd:simpleType name="schemaversionType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="20"/>
</xsd:restriction>
</xsd:simpleType>
<!-- *********** -->
<!-- ** title ** -->
<!-- *********** -->
<xsd:simpleType name="titleType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="200"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>

Some files were not shown because too many files have changed in this diff Show More