coursecode 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (362) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +322 -0
  3. package/THIRD_PARTY_NOTICES.md +22 -0
  4. package/bin/cli.js +331 -0
  5. package/framework/assets/logo-coursecode-black.svg +14 -0
  6. package/framework/assets/logo-coursecode-white.svg +14 -0
  7. package/framework/assets/logo-coursecode.svg +14 -0
  8. package/framework/css/01-base.css +160 -0
  9. package/framework/css/02-layout.css +499 -0
  10. package/framework/css/accessibility.css +834 -0
  11. package/framework/css/components/accordions.css +710 -0
  12. package/framework/css/components/assessments.css +520 -0
  13. package/framework/css/components/audio-player.css +570 -0
  14. package/framework/css/components/badges.css +80 -0
  15. package/framework/css/components/breadcrumbs.css +87 -0
  16. package/framework/css/components/buttons.css +707 -0
  17. package/framework/css/components/callouts.css +1280 -0
  18. package/framework/css/components/cards.css +475 -0
  19. package/framework/css/components/carousel.css +193 -0
  20. package/framework/css/components/checkbox-group.css +123 -0
  21. package/framework/css/components/checklist.css +203 -0
  22. package/framework/css/components/collapse.css +96 -0
  23. package/framework/css/components/comparison.css +33 -0
  24. package/framework/css/components/content-image.css +36 -0
  25. package/framework/css/components/document-gallery.css +425 -0
  26. package/framework/css/components/dropdown.css +115 -0
  27. package/framework/css/components/embed-frame.css +142 -0
  28. package/framework/css/components/engagement.css +412 -0
  29. package/framework/css/components/features.css +35 -0
  30. package/framework/css/components/flip-cards.css +253 -0
  31. package/framework/css/components/footer.css +353 -0
  32. package/framework/css/components/forms.css +294 -0
  33. package/framework/css/components/hero.css +216 -0
  34. package/framework/css/components/images.css +528 -0
  35. package/framework/css/components/interactive-timeline.css +274 -0
  36. package/framework/css/components/intro-cards.css +30 -0
  37. package/framework/css/components/lightbox.css +666 -0
  38. package/framework/css/components/loading.css +65 -0
  39. package/framework/css/components/modals.css +235 -0
  40. package/framework/css/components/notifications.css +107 -0
  41. package/framework/css/components/quote.css +150 -0
  42. package/framework/css/components/sidebar.css +684 -0
  43. package/framework/css/components/slide-header.css +52 -0
  44. package/framework/css/components/spinner.css +62 -0
  45. package/framework/css/components/stats.css +44 -0
  46. package/framework/css/components/steps.css +232 -0
  47. package/framework/css/components/tables.css +90 -0
  48. package/framework/css/components/tabs.css +347 -0
  49. package/framework/css/components/timeline.css +154 -0
  50. package/framework/css/components/toggle.css +95 -0
  51. package/framework/css/components/tooltip.css +226 -0
  52. package/framework/css/components/video-player.css +438 -0
  53. package/framework/css/design-tokens.css +707 -0
  54. package/framework/css/framework.css +86 -0
  55. package/framework/css/interactions/accessibility.css +75 -0
  56. package/framework/css/interactions/base.css +92 -0
  57. package/framework/css/interactions/drag-drop.css +295 -0
  58. package/framework/css/interactions/fill-in-the-blank.css +236 -0
  59. package/framework/css/interactions/hotspots.css +69 -0
  60. package/framework/css/interactions/index.css +45 -0
  61. package/framework/css/interactions/interactive-image.css +359 -0
  62. package/framework/css/interactions/likert.css +126 -0
  63. package/framework/css/interactions/matching.css +354 -0
  64. package/framework/css/interactions/numeric-input.css +78 -0
  65. package/framework/css/interactions/sequencing.css +378 -0
  66. package/framework/css/interactions/true-false.css +177 -0
  67. package/framework/css/layouts/article.css +258 -0
  68. package/framework/css/layouts/base.css +30 -0
  69. package/framework/css/layouts/canvas.css +38 -0
  70. package/framework/css/layouts/focused.css +236 -0
  71. package/framework/css/layouts/index.css +29 -0
  72. package/framework/css/layouts/presentation.css +191 -0
  73. package/framework/css/layouts/traditional.css +52 -0
  74. package/framework/css/responsive.css +439 -0
  75. package/framework/css/utilities/accessibility-utils.css +59 -0
  76. package/framework/css/utilities/animations.css +419 -0
  77. package/framework/css/utilities/borders.css +72 -0
  78. package/framework/css/utilities/colors.css +76 -0
  79. package/framework/css/utilities/container.css +46 -0
  80. package/framework/css/utilities/decorative.css +442 -0
  81. package/framework/css/utilities/display.css +257 -0
  82. package/framework/css/utilities/flexbox.css +80 -0
  83. package/framework/css/utilities/grid.css +69 -0
  84. package/framework/css/utilities/icons.css +534 -0
  85. package/framework/css/utilities/lists.css +190 -0
  86. package/framework/css/utilities/spacing.css +167 -0
  87. package/framework/css/utilities/tables.css +81 -0
  88. package/framework/css/utilities/typography.css +159 -0
  89. package/framework/css/utilities/visibility.css +117 -0
  90. package/framework/docs/COURSE_AUTHORING_GUIDE.md +1773 -0
  91. package/framework/docs/COURSE_OUTLINE_GUIDE.md +725 -0
  92. package/framework/docs/COURSE_OUTLINE_TEMPLATE.md +161 -0
  93. package/framework/docs/DATA_MODEL.md +409 -0
  94. package/framework/docs/FRAMEWORK_GUIDE.md +1088 -0
  95. package/framework/docs/USER_GUIDE.md +583 -0
  96. package/framework/docs/examples/cloudflare-channel-relay.js +169 -0
  97. package/framework/docs/examples/cloudflare-data-worker.js +102 -0
  98. package/framework/docs/examples/cloudflare-error-worker.js +228 -0
  99. package/framework/index.html +175 -0
  100. package/framework/js/app/AppActions.js +410 -0
  101. package/framework/js/app/AppState.js +225 -0
  102. package/framework/js/app/AppUI.js +616 -0
  103. package/framework/js/assessment/AssessmentActions.js +615 -0
  104. package/framework/js/assessment/AssessmentFactory.js +471 -0
  105. package/framework/js/assessment/AssessmentState.js +322 -0
  106. package/framework/js/assessment/AssessmentUI.js +451 -0
  107. package/framework/js/automation/api-engagement.js +196 -0
  108. package/framework/js/automation/api-interactions.js +167 -0
  109. package/framework/js/automation/api.js +242 -0
  110. package/framework/js/automation/index.js +41 -0
  111. package/framework/js/components/interactions/drag-drop.js +884 -0
  112. package/framework/js/components/interactions/fill-in.js +535 -0
  113. package/framework/js/components/interactions/hotspot.js +702 -0
  114. package/framework/js/components/interactions/interaction-base.js +511 -0
  115. package/framework/js/components/interactions/likert.js +301 -0
  116. package/framework/js/components/interactions/matching.js +699 -0
  117. package/framework/js/components/interactions/multiple-choice.js +377 -0
  118. package/framework/js/components/interactions/numeric.js +271 -0
  119. package/framework/js/components/interactions/sequencing.js +423 -0
  120. package/framework/js/components/interactions/true-false.js +241 -0
  121. package/framework/js/components/ui-components/accordion.js +442 -0
  122. package/framework/js/components/ui-components/alert.js +88 -0
  123. package/framework/js/components/ui-components/audio-player.js +1193 -0
  124. package/framework/js/components/ui-components/callout.js +121 -0
  125. package/framework/js/components/ui-components/carousel.js +145 -0
  126. package/framework/js/components/ui-components/checkbox-group.js +87 -0
  127. package/framework/js/components/ui-components/checklist.js +40 -0
  128. package/framework/js/components/ui-components/collapse.js +114 -0
  129. package/framework/js/components/ui-components/comparison.js +30 -0
  130. package/framework/js/components/ui-components/conditional-display.js +150 -0
  131. package/framework/js/components/ui-components/content-image.js +41 -0
  132. package/framework/js/components/ui-components/dropdown.js +262 -0
  133. package/framework/js/components/ui-components/embed-frame.js +274 -0
  134. package/framework/js/components/ui-components/features.js +33 -0
  135. package/framework/js/components/ui-components/flip-card.js +230 -0
  136. package/framework/js/components/ui-components/form-validator.js +76 -0
  137. package/framework/js/components/ui-components/hero.js +49 -0
  138. package/framework/js/components/ui-components/index.js +12 -0
  139. package/framework/js/components/ui-components/interactive-image.js +235 -0
  140. package/framework/js/components/ui-components/interactive-timeline.js +285 -0
  141. package/framework/js/components/ui-components/intro-cards.js +35 -0
  142. package/framework/js/components/ui-components/lightbox.js +652 -0
  143. package/framework/js/components/ui-components/modal.js +386 -0
  144. package/framework/js/components/ui-components/notifications.js +145 -0
  145. package/framework/js/components/ui-components/progress.js +88 -0
  146. package/framework/js/components/ui-components/quote.js +41 -0
  147. package/framework/js/components/ui-components/stats.js +33 -0
  148. package/framework/js/components/ui-components/steps.js +41 -0
  149. package/framework/js/components/ui-components/tabs.js +255 -0
  150. package/framework/js/components/ui-components/timeline.js +42 -0
  151. package/framework/js/components/ui-components/toggle-group.js +73 -0
  152. package/framework/js/components/ui-components/tooltip.js +458 -0
  153. package/framework/js/components/ui-components/value-display.js +133 -0
  154. package/framework/js/components/ui-components/video-player.js +686 -0
  155. package/framework/js/core/component-catalog.js +121 -0
  156. package/framework/js/core/event-bus.js +178 -0
  157. package/framework/js/core/interaction-catalog.js +149 -0
  158. package/framework/js/dev/runtime-linter.js +1725 -0
  159. package/framework/js/drivers/cmi5-driver.js +768 -0
  160. package/framework/js/drivers/driver-factory.js +77 -0
  161. package/framework/js/drivers/driver-interface.js +110 -0
  162. package/framework/js/drivers/http-driver-base.js +241 -0
  163. package/framework/js/drivers/lti-driver.js +508 -0
  164. package/framework/js/drivers/proxy-driver.js +444 -0
  165. package/framework/js/drivers/scorm-12-driver.js +560 -0
  166. package/framework/js/drivers/scorm-2004-driver.js +775 -0
  167. package/framework/js/drivers/scorm-driver-base.js +112 -0
  168. package/framework/js/engagement/engagement-manager.js +404 -0
  169. package/framework/js/engagement/engagement-progress.js +191 -0
  170. package/framework/js/engagement/engagement-trackers.js +215 -0
  171. package/framework/js/engagement/requirement-strategies.js +268 -0
  172. package/framework/js/main.js +727 -0
  173. package/framework/js/managers/accessibility-manager.js +499 -0
  174. package/framework/js/managers/assessment-manager.js +230 -0
  175. package/framework/js/managers/audio-manager.js +944 -0
  176. package/framework/js/managers/comment-manager.js +88 -0
  177. package/framework/js/managers/flag-manager.js +86 -0
  178. package/framework/js/managers/interaction-manager.js +254 -0
  179. package/framework/js/managers/interaction-registry.js +96 -0
  180. package/framework/js/managers/objective-manager.js +423 -0
  181. package/framework/js/managers/score-manager.js +441 -0
  182. package/framework/js/managers/video-manager.js +536 -0
  183. package/framework/js/navigation/Breadcrumbs.js +234 -0
  184. package/framework/js/navigation/NavigationActions.js +1132 -0
  185. package/framework/js/navigation/NavigationState.js +276 -0
  186. package/framework/js/navigation/NavigationUI.js +574 -0
  187. package/framework/js/navigation/document-gallery.js +357 -0
  188. package/framework/js/navigation/navigation-helpers.js +175 -0
  189. package/framework/js/navigation/navigation-validators.js +174 -0
  190. package/framework/js/state/index.js +8 -0
  191. package/framework/js/state/lms-connection.js +482 -0
  192. package/framework/js/state/lms-error-utils.js +58 -0
  193. package/framework/js/state/state-commits.js +200 -0
  194. package/framework/js/state/state-domains.js +86 -0
  195. package/framework/js/state/state-manager.js +502 -0
  196. package/framework/js/state/state-validation.js +311 -0
  197. package/framework/js/state/transaction-log.js +41 -0
  198. package/framework/js/state/xapi-statement-service.js +325 -0
  199. package/framework/js/utilities/access-control.js +99 -0
  200. package/framework/js/utilities/breakpoint-manager.js +315 -0
  201. package/framework/js/utilities/canvas-slide.js +35 -0
  202. package/framework/js/utilities/conditional-display.js +388 -0
  203. package/framework/js/utilities/course-channel.js +214 -0
  204. package/framework/js/utilities/course-helpers.js +420 -0
  205. package/framework/js/utilities/data-reporter.js +273 -0
  206. package/framework/js/utilities/error-reporter.js +313 -0
  207. package/framework/js/utilities/hotspot-helper.js +341 -0
  208. package/framework/js/utilities/icons.js +348 -0
  209. package/framework/js/utilities/logger.js +92 -0
  210. package/framework/js/utilities/markdown-renderer.js +45 -0
  211. package/framework/js/utilities/scroll-tracker.js +68 -0
  212. package/framework/js/utilities/ui-initializer.js +146 -0
  213. package/framework/js/utilities/utilities.js +293 -0
  214. package/framework/js/utilities/view-manager.js +227 -0
  215. package/framework/js/validation/html-validators.js +422 -0
  216. package/framework/js/validation/scorm-validators.js +438 -0
  217. package/framework/js/vendor/pipwerks.js +931 -0
  218. package/framework/scripts/generate-narration.js +629 -0
  219. package/framework/scripts/tts-providers/azure-provider.js +178 -0
  220. package/framework/scripts/tts-providers/base-provider.js +81 -0
  221. package/framework/scripts/tts-providers/deepgram-provider.js +135 -0
  222. package/framework/scripts/tts-providers/elevenlabs-provider.js +148 -0
  223. package/framework/scripts/tts-providers/google-provider.js +272 -0
  224. package/framework/scripts/tts-providers/index.js +158 -0
  225. package/framework/scripts/tts-providers/openai-provider.js +143 -0
  226. package/framework/version.json +63 -0
  227. package/lib/authoring-api.js +919 -0
  228. package/lib/build-linter.js +450 -0
  229. package/lib/build-packaging.js +186 -0
  230. package/lib/build.js +88 -0
  231. package/lib/cloud.js +691 -0
  232. package/lib/convert.js +341 -0
  233. package/lib/course-parser.js +936 -0
  234. package/lib/course-writer.js +258 -0
  235. package/lib/create.js +248 -0
  236. package/lib/css-index.js +237 -0
  237. package/lib/dev.js +51 -0
  238. package/lib/export-content.js +1246 -0
  239. package/lib/headless-browser.js +413 -0
  240. package/lib/import.js +377 -0
  241. package/lib/index.js +80 -0
  242. package/lib/info.js +79 -0
  243. package/lib/interaction-formatters.js +568 -0
  244. package/lib/manifest/cmi5-manifest.js +63 -0
  245. package/lib/manifest/lti-tool-config.js +53 -0
  246. package/lib/manifest/manifest-factory.js +99 -0
  247. package/lib/manifest/scorm-12-manifest.js +61 -0
  248. package/lib/manifest/scorm-2004-manifest.js +94 -0
  249. package/lib/manifest/scorm-proxy-manifest.js +104 -0
  250. package/lib/manifest-parser.js +96 -0
  251. package/lib/mcp-prompts.js +753 -0
  252. package/lib/mcp-server.js +316 -0
  253. package/lib/narration.js +53 -0
  254. package/lib/pdf-structure.js +142 -0
  255. package/lib/preview-export.js +231 -0
  256. package/lib/preview-routes-api.js +662 -0
  257. package/lib/preview-routes-editing.js +159 -0
  258. package/lib/preview-routes-lms.js +230 -0
  259. package/lib/preview-server.js +564 -0
  260. package/lib/project-utils.js +269 -0
  261. package/lib/proxy-templates/proxy.html +68 -0
  262. package/lib/proxy-templates/scorm-bridge.js +112 -0
  263. package/lib/scaffold.js +193 -0
  264. package/lib/schema-extractor.js +361 -0
  265. package/lib/slide-source-editor.js +586 -0
  266. package/lib/stub-player/app-viewer.js +195 -0
  267. package/lib/stub-player/app.js +370 -0
  268. package/lib/stub-player/catalog-panel.js +312 -0
  269. package/lib/stub-player/config-panel.js +1303 -0
  270. package/lib/stub-player/content-generator.js +586 -0
  271. package/lib/stub-player/content-viewer.js +173 -0
  272. package/lib/stub-player/debug-panel.js +420 -0
  273. package/lib/stub-player/edit-mode.js +922 -0
  274. package/lib/stub-player/edit-utils.js +400 -0
  275. package/lib/stub-player/header-bar.js +354 -0
  276. package/lib/stub-player/interaction-editor.js +210 -0
  277. package/lib/stub-player/interactions-panel.js +565 -0
  278. package/lib/stub-player/lms-api.js +1094 -0
  279. package/lib/stub-player/login-screen.js +74 -0
  280. package/lib/stub-player/outline-mode.js +689 -0
  281. package/lib/stub-player/styles/_assessments-panel.css +245 -0
  282. package/lib/stub-player/styles/_base.css +89 -0
  283. package/lib/stub-player/styles/_catalog-icons.css +96 -0
  284. package/lib/stub-player/styles/_catalog-panel.css +291 -0
  285. package/lib/stub-player/styles/_config-panel.css +636 -0
  286. package/lib/stub-player/styles/_content-viewer.css +834 -0
  287. package/lib/stub-player/styles/_debug-panel.css +576 -0
  288. package/lib/stub-player/styles/_edit-mode.css +128 -0
  289. package/lib/stub-player/styles/_header-bar.css +343 -0
  290. package/lib/stub-player/styles/_interaction-editor.css +140 -0
  291. package/lib/stub-player/styles/_interactions-panel.css +1038 -0
  292. package/lib/stub-player/styles/_login-screen.css +102 -0
  293. package/lib/stub-player/styles/_outline-mode.css +752 -0
  294. package/lib/stub-player/styles.css +15 -0
  295. package/lib/stub-player.js +160 -0
  296. package/lib/test-data-reporting.js +176 -0
  297. package/lib/test-error-reporting.js +146 -0
  298. package/lib/token.js +86 -0
  299. package/lib/upgrade.js +257 -0
  300. package/lib/validation-rules.js +517 -0
  301. package/lib/vite-plugin-content-discovery.js +296 -0
  302. package/package.json +108 -0
  303. package/schemas/XMLSchema.dtd +402 -0
  304. package/schemas/adlcp_v1p3.xsd +111 -0
  305. package/schemas/adlnav_v1p3.xsd +61 -0
  306. package/schemas/adlseq_v1p3.xsd +93 -0
  307. package/schemas/common/anyElement.xsd +27 -0
  308. package/schemas/common/dataTypes.xsd +138 -0
  309. package/schemas/common/elementNames.xsd +767 -0
  310. package/schemas/common/elementTypes.xsd +786 -0
  311. package/schemas/common/rootElement.xsd +31 -0
  312. package/schemas/common/vocabTypes.xsd +345 -0
  313. package/schemas/common/vocabValues.xsd +257 -0
  314. package/schemas/datatypes.dtd +203 -0
  315. package/schemas/ims_xml.xsd +35 -0
  316. package/schemas/imscp_v1p1.xsd +368 -0
  317. package/schemas/imsss_v1p0.xsd +67 -0
  318. package/schemas/imsss_v1p0auxresource.xsd +19 -0
  319. package/schemas/imsss_v1p0control.xsd +20 -0
  320. package/schemas/imsss_v1p0delivery.xsd +17 -0
  321. package/schemas/imsss_v1p0limit.xsd +47 -0
  322. package/schemas/imsss_v1p0objective.xsd +67 -0
  323. package/schemas/imsss_v1p0random.xsd +16 -0
  324. package/schemas/imsss_v1p0rollup.xsd +46 -0
  325. package/schemas/imsss_v1p0seqrule.xsd +108 -0
  326. package/schemas/imsss_v1p0util.xsd +94 -0
  327. package/schemas/license.txt +17 -0
  328. package/schemas/lom.xsd +102 -0
  329. package/schemas/lomCustom.xsd +62 -0
  330. package/schemas/lomLoose.xsd +62 -0
  331. package/schemas/lomStrict.xsd +62 -0
  332. package/schemas/xml.xsd +81 -0
  333. package/template/.env.example +92 -0
  334. package/template/course/assets/audio/example-intro.mp3 +0 -0
  335. package/template/course/assets/audio/example-ui-demo--compact-player.mp3 +0 -0
  336. package/template/course/assets/audio/example-ui-demo--demo-modal.mp3 +0 -0
  337. package/template/course/assets/audio/example-ui-demo--full-player.mp3 +0 -0
  338. package/template/course/assets/docs/example_md_1.md +39 -0
  339. package/template/course/assets/docs/example_md_2.md +41 -0
  340. package/template/course/assets/docs/example_pdf_1_thumbnail.png +0 -0
  341. package/template/course/assets/docs/example_pdf_2.pdf +0 -0
  342. package/template/course/assets/images/course-architecture.svg +36 -0
  343. package/template/course/assets/images/logo.svg +14 -0
  344. package/template/course/assets/widgets/counter-demo.html +190 -0
  345. package/template/course/assets/widgets/gravity-painter.html +384 -0
  346. package/template/course/course-config.js +539 -0
  347. package/template/course/icons.js +19 -0
  348. package/template/course/interactions/PLUGIN_GUIDE.md +97 -0
  349. package/template/course/slides/example-course-structure.js +138 -0
  350. package/template/course/slides/example-final-exam.js +144 -0
  351. package/template/course/slides/example-finishing.js +127 -0
  352. package/template/course/slides/example-interactions-showcase.js +615 -0
  353. package/template/course/slides/example-preview-tour.js +129 -0
  354. package/template/course/slides/example-remedial.js +143 -0
  355. package/template/course/slides/example-summary.js +103 -0
  356. package/template/course/slides/example-ui-showcase.js +1805 -0
  357. package/template/course/slides/example-welcome.js +123 -0
  358. package/template/course/slides/example-workflow.js +140 -0
  359. package/template/course/theme.css +165 -0
  360. package/template/eslint.config.js +47 -0
  361. package/template/package.json +28 -0
  362. package/template/vite.config.js +339 -0
@@ -0,0 +1,786 @@
1
+ <xs:schema targetNamespace="http://ltsc.ieee.org/xsd/LOM"
2
+ xmlns="http://ltsc.ieee.org/xsd/LOM"
3
+ xmlns:ag="http://ltsc.ieee.org/xsd/LOM/unique"
4
+ xmlns:ex="http://ltsc.ieee.org/xsd/LOM/extend"
5
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
6
+ elementFormDefault="qualified"
7
+ version="IEEE LTSC LOM XML 1.0">
8
+
9
+ <xs:annotation>
10
+ <xs:documentation>
11
+ This work is licensed under the Creative Commons Attribution-ShareAlike
12
+ License. To view a copy of this license, see the file license.txt,
13
+ visit http://creativecommons.org/licenses/by-sa/1.0 or send a letter to
14
+ Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
15
+ </xs:documentation>
16
+
17
+ <xs:documentation>
18
+ This component schema provides global type declarations for metadata elements.
19
+ </xs:documentation>
20
+ </xs:annotation>
21
+
22
+ <xs:import namespace="http://ltsc.ieee.org/xsd/LOM/unique"/>
23
+ <xs:import namespace="http://ltsc.ieee.org/xsd/LOM/extend"/>
24
+
25
+ <!-- Element type declarations -->
26
+
27
+ <!-- Learning Object Metadata -->
28
+ <xs:complexType name="lom">
29
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
30
+ <xs:group ref="general"/>
31
+ <xs:group ref="lifeCycle"/>
32
+ <xs:group ref="metaMetadata"/>
33
+ <xs:group ref="technical"/>
34
+ <xs:group ref="educational"/>
35
+ <xs:group ref="rights"/>
36
+ <xs:group ref="relation"/>
37
+ <xs:group ref="annotation"/>
38
+ <xs:group ref="classification"/>
39
+ <xs:group ref="ex:customElements"/>
40
+ </xs:choice>
41
+ <xs:attributeGroup ref="ag:lom"/>
42
+ </xs:complexType>
43
+
44
+ <!-- 1 General -->
45
+ <xs:complexType name="general">
46
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
47
+ <xs:group ref="identifier"/>
48
+ <xs:group ref="title"/>
49
+ <xs:group ref="languageIdOrNone"/>
50
+ <xs:group ref="descriptionUnbounded"/>
51
+ <xs:group ref="keyword"/>
52
+ <xs:group ref="coverage"/>
53
+ <xs:group ref="structure"/>
54
+ <xs:group ref="aggregationLevel"/>
55
+ <xs:group ref="ex:customElements"/>
56
+ </xs:choice>
57
+ <xs:attributeGroup ref="ag:general"/>
58
+ </xs:complexType>
59
+
60
+ <!-- 1.1 Identifier -->
61
+ <xs:complexType name="identifier">
62
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
63
+ <xs:group ref="catalog"/>
64
+ <xs:group ref="entry"/>
65
+ <xs:group ref="ex:customElements"/>
66
+ </xs:choice>
67
+ <xs:attributeGroup ref="ag:identifier"/>
68
+ </xs:complexType>
69
+
70
+ <!-- 1.1.1 Catalog -->
71
+ <xs:complexType name="catalog">
72
+ <xs:simpleContent>
73
+ <xs:extension base="CharacterString">
74
+ <xs:attributeGroup ref="ag:catalog"/>
75
+ </xs:extension>
76
+ </xs:simpleContent>
77
+ </xs:complexType>
78
+
79
+ <!-- 1.1.2 Entry -->
80
+ <xs:complexType name="entry">
81
+ <xs:simpleContent>
82
+ <xs:extension base="CharacterString">
83
+ <xs:attributeGroup ref="ag:entry"/>
84
+ </xs:extension>
85
+ </xs:simpleContent>
86
+ </xs:complexType>
87
+
88
+ <!-- 1.2 Title -->
89
+ <xs:complexType name="title">
90
+ <xs:complexContent>
91
+ <xs:extension base="LangString">
92
+ <xs:attributeGroup ref="ag:title"/>
93
+ </xs:extension>
94
+ </xs:complexContent>
95
+ </xs:complexType>
96
+
97
+ <!-- 1.3 Language
98
+ <xs:complexType name="language">
99
+ <xs:simpleContent>
100
+ <xs:extension base="LanguageIdOrNone">
101
+ <xs:attributeGroup ref="ag:language"/>
102
+ </xs:extension>
103
+ </xs:simpleContent>
104
+ </xs:complexType> -->
105
+
106
+ <!-- 1.4 Description
107
+ <xs:complexType name="description">
108
+ <xs:complexContent>
109
+ <xs:extension base="LangString">
110
+ <xs:attributeGroup ref="ag:description"/>
111
+ </xs:extension>
112
+ </xs:complexContent>
113
+ </xs:complexType> -->
114
+
115
+ <!-- 1.5 Keyword -->
116
+ <xs:complexType name="keyword">
117
+ <xs:complexContent>
118
+ <xs:extension base="LangString">
119
+ <xs:attributeGroup ref="ag:keyword"/>
120
+ </xs:extension>
121
+ </xs:complexContent>
122
+ </xs:complexType>
123
+
124
+ <!-- 1.6 Coverage -->
125
+ <xs:complexType name="coverage">
126
+ <xs:complexContent>
127
+ <xs:extension base="LangString">
128
+ <xs:attributeGroup ref="ag:coverage"/>
129
+ </xs:extension>
130
+ </xs:complexContent>
131
+ </xs:complexType>
132
+
133
+ <!-- 1.7 Structure -->
134
+ <xs:complexType name="structure">
135
+ <xs:complexContent>
136
+ <xs:extension base="structureVocab">
137
+ <xs:attributeGroup ref="ag:structure"/>
138
+ </xs:extension>
139
+ </xs:complexContent>
140
+ </xs:complexType>
141
+
142
+ <!-- 1.8 Aggregation Level -->
143
+ <xs:complexType name="aggregationLevel">
144
+ <xs:complexContent>
145
+ <xs:extension base="aggregationLevelVocab">
146
+ <xs:attributeGroup ref="ag:aggregationLevel"/>
147
+ </xs:extension>
148
+ </xs:complexContent>
149
+ </xs:complexType>
150
+
151
+ <!-- 2 Life Cycle -->
152
+ <xs:complexType name="lifeCycle">
153
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
154
+ <xs:group ref="version"/>
155
+ <xs:group ref="status"/>
156
+ <xs:group ref="contribute"/>
157
+ <xs:group ref="ex:customElements"/>
158
+ </xs:choice>
159
+ <xs:attributeGroup ref="ag:lifeCycle"/>
160
+ </xs:complexType>
161
+
162
+ <!-- 2.1 Version -->
163
+ <xs:complexType name="version">
164
+ <xs:complexContent>
165
+ <xs:extension base="LangString">
166
+ <xs:attributeGroup ref="ag:version"/>
167
+ </xs:extension>
168
+ </xs:complexContent>
169
+ </xs:complexType>
170
+
171
+ <!-- 2.2 Status -->
172
+ <xs:complexType name="status">
173
+ <xs:complexContent>
174
+ <xs:extension base="statusVocab">
175
+ <xs:attributeGroup ref="ag:status"/>
176
+ </xs:extension>
177
+ </xs:complexContent>
178
+ </xs:complexType>
179
+
180
+ <!-- 2.3 Contribute -->
181
+ <xs:complexType name="contribute">
182
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
183
+ <xs:group ref="role"/>
184
+ <xs:group ref="entityUnbounded"/>
185
+ <xs:group ref="date"/>
186
+ <xs:group ref="ex:customElements"/>
187
+ </xs:choice>
188
+ <xs:attributeGroup ref="ag:contribute"/>
189
+ </xs:complexType>
190
+
191
+ <!-- 2.3.1 Role -->
192
+ <xs:complexType name="role">
193
+ <xs:complexContent>
194
+ <xs:extension base="roleVocab">
195
+ <xs:attributeGroup ref="ag:role"/>
196
+ </xs:extension>
197
+ </xs:complexContent>
198
+ </xs:complexType>
199
+
200
+ <!-- 2.3.2 Entity
201
+ <xs:complexType name="entity">
202
+ <xs:simpleContent>
203
+ <xs:extension base="VCard">
204
+ <xs:attributeGroup ref="ag:entity"/>
205
+ </xs:extension>
206
+ </xs:simpleContent>
207
+ </xs:complexType> -->
208
+
209
+ <!-- 2.3.3 Date -->
210
+ <xs:complexType name="date">
211
+ <xs:complexContent>
212
+ <xs:extension base="DateTime">
213
+ <xs:attributeGroup ref="ag:date"/>
214
+ </xs:extension>
215
+ </xs:complexContent>
216
+ </xs:complexType>
217
+
218
+ <!-- 3 Meta-Metadata -->
219
+ <xs:complexType name="metaMetadata">
220
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
221
+ <xs:group ref="identifier"/>
222
+ <xs:group ref="contributeMeta"/>
223
+ <xs:group ref="metadataSchema"/>
224
+ <xs:group ref="language"/>
225
+ <xs:group ref="ex:customElements"/>
226
+ </xs:choice>
227
+ <xs:attributeGroup ref="ag:metaMetadata"/>
228
+ </xs:complexType>
229
+
230
+ <!-- 3.1 Identifier
231
+ <xs:complexType name="identifier">
232
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
233
+ <xs:group ref="catalog"/>
234
+ <xs:group ref="entry"/>
235
+ <xs:group ref="ex:customElements"/>
236
+ </xs:choice>
237
+ <xs:attributeGroup ref="ag:identifier"/>
238
+ </xs:complexType> -->
239
+
240
+ <!-- 3.1.1 Catalog
241
+ <xs:complexType name="catalog">
242
+ <xs:simpleContent>
243
+ <xs:extension base="CharacterString">
244
+ <xs:attributeGroup ref="ag:catalog"/>
245
+ </xs:extension>
246
+ </xs:simpleContent>
247
+ </xs:complexType> -->
248
+
249
+ <!-- 3.1.2 Entry
250
+ <xs:complexType name="entry">
251
+ <xs:simpleContent>
252
+ <xs:extension base="CharacterString">
253
+ <xs:attributeGroup ref="ag:entry"/>
254
+ </xs:extension>
255
+ </xs:simpleContent>
256
+ </xs:complexType> -->
257
+
258
+ <!-- 3.2 Contribute -->
259
+ <xs:complexType name="contributeMeta">
260
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
261
+ <xs:group ref="roleMeta"/>
262
+ <xs:group ref="entityUnbounded"/>
263
+ <xs:group ref="date"/>
264
+ <xs:group ref="ex:customElements"/>
265
+ </xs:choice>
266
+ <xs:attributeGroup ref="ag:contribute"/>
267
+ </xs:complexType>
268
+
269
+ <!-- 3.2.1 Role -->
270
+ <xs:complexType name="roleMeta">
271
+ <xs:complexContent>
272
+ <xs:extension base="roleMetaVocab">
273
+ <xs:attributeGroup ref="ag:role"/>
274
+ </xs:extension>
275
+ </xs:complexContent>
276
+ </xs:complexType>
277
+
278
+ <!-- 3.2.2 Entity
279
+ <xs:complexType name="entity">
280
+ <xs:simpleContent>
281
+ <xs:extension base="VCard">
282
+ <xs:attributeGroup ref="ag:entity"/>
283
+ </xs:extension>
284
+ </xs:simpleContent>
285
+ </xs:complexType> -->
286
+
287
+ <!-- 3.2.3 Date
288
+ <xs:complexType name="date">
289
+ <xs:complexContent>
290
+ <xs:extension base="DateTime">
291
+ <xs:attributeGroup ref="ag:date"/>
292
+ </xs:extension>
293
+ </xs:complexContent>
294
+ </xs:complexType> -->
295
+
296
+ <!-- 3.3 Metadata Schema -->
297
+ <xs:complexType name="metadataSchema">
298
+ <xs:simpleContent>
299
+ <xs:extension base="CharacterString">
300
+ <xs:attributeGroup ref="ag:metadataSchema"/>
301
+ </xs:extension>
302
+ </xs:simpleContent>
303
+ </xs:complexType>
304
+
305
+ <!-- 3.4 Language -->
306
+ <xs:complexType name="language">
307
+ <xs:simpleContent>
308
+ <xs:extension base="LanguageId">
309
+ <xs:attributeGroup ref="ag:language"/>
310
+ </xs:extension>
311
+ </xs:simpleContent>
312
+ </xs:complexType>
313
+
314
+ <!-- 4 Technical -->
315
+ <xs:complexType name="technical">
316
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
317
+ <xs:group ref="format"/>
318
+ <xs:group ref="size"/>
319
+ <xs:group ref="location"/>
320
+ <xs:group ref="requirement"/>
321
+ <xs:group ref="installationRemarks"/>
322
+ <xs:group ref="otherPlatformRequirements"/>
323
+ <xs:group ref="duration"/>
324
+ <xs:group ref="ex:customElements"/>
325
+ </xs:choice>
326
+ <xs:attributeGroup ref="ag:technical"/>
327
+ </xs:complexType>
328
+
329
+ <!-- 4.1 Format -->
330
+ <xs:complexType name="format">
331
+ <xs:simpleContent>
332
+ <xs:extension base="MimeType">
333
+ <xs:attributeGroup ref="ag:format"/>
334
+ </xs:extension>
335
+ </xs:simpleContent>
336
+ </xs:complexType>
337
+
338
+ <!-- 4.2 Size -->
339
+ <xs:complexType name="size">
340
+ <xs:simpleContent>
341
+ <xs:extension base="Size">
342
+ <xs:attributeGroup ref="ag:size"/>
343
+ </xs:extension>
344
+ </xs:simpleContent>
345
+ </xs:complexType>
346
+
347
+ <!-- 4.3 Location -->
348
+ <xs:complexType name="location">
349
+ <xs:simpleContent>
350
+ <xs:extension base="CharacterString">
351
+ <xs:attributeGroup ref="ag:location"/>
352
+ </xs:extension>
353
+ </xs:simpleContent>
354
+ </xs:complexType>
355
+
356
+ <!-- 4.4 Requirement -->
357
+ <xs:complexType name="requirement">
358
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
359
+ <xs:group ref="orComposite"/>
360
+ <xs:group ref="ex:customElements"/>
361
+ </xs:choice>
362
+ <xs:attributeGroup ref="ag:requirement"/>
363
+ </xs:complexType>
364
+
365
+ <!-- 4.4.1 OrComposite -->
366
+ <xs:complexType name="orComposite">
367
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
368
+ <xs:group ref="type"/>
369
+ <xs:group ref="name"/>
370
+ <xs:group ref="minimumVersion"/>
371
+ <xs:group ref="maximumVersion"/>
372
+ <xs:group ref="ex:customElements"/>
373
+ </xs:choice>
374
+ <xs:attributeGroup ref="ag:orComposite"/>
375
+ </xs:complexType>
376
+
377
+ <!-- 4.4.1.1 Type -->
378
+ <xs:complexType name="type">
379
+ <xs:complexContent>
380
+ <xs:extension base="typeVocab">
381
+ <xs:attributeGroup ref="ag:type"/>
382
+ </xs:extension>
383
+ </xs:complexContent>
384
+ </xs:complexType>
385
+
386
+ <!-- 4.4.1.2 Name -->
387
+ <xs:complexType name="name">
388
+ <xs:complexContent>
389
+ <xs:extension base="nameVocab">
390
+ <xs:attributeGroup ref="ag:name"/>
391
+ </xs:extension>
392
+ </xs:complexContent>
393
+ </xs:complexType>
394
+
395
+ <!-- 4.4.1.3 Minimum Version -->
396
+ <xs:complexType name="minimumVersion">
397
+ <xs:simpleContent>
398
+ <xs:extension base="CharacterString">
399
+ <xs:attributeGroup ref="ag:minimumVersion"/>
400
+ </xs:extension>
401
+ </xs:simpleContent>
402
+ </xs:complexType>
403
+
404
+ <!-- 4.4.1.4 Maximum Version -->
405
+ <xs:complexType name="maximumVersion">
406
+ <xs:simpleContent>
407
+ <xs:extension base="CharacterString">
408
+ <xs:attributeGroup ref="ag:maximumVersion"/>
409
+ </xs:extension>
410
+ </xs:simpleContent>
411
+ </xs:complexType>
412
+
413
+ <!-- 4.5 Installation Remarks -->
414
+ <xs:complexType name="installationRemarks">
415
+ <xs:complexContent>
416
+ <xs:extension base="LangString">
417
+ <xs:attributeGroup ref="ag:installationRemarks"/>
418
+ </xs:extension>
419
+ </xs:complexContent>
420
+ </xs:complexType>
421
+
422
+ <!-- 4.6 Other Platform Requirements -->
423
+ <xs:complexType name="otherPlatformRequirements">
424
+ <xs:complexContent>
425
+ <xs:extension base="LangString">
426
+ <xs:attributeGroup ref="ag:otherPlatformRequirements"/>
427
+ </xs:extension>
428
+ </xs:complexContent>
429
+ </xs:complexType>
430
+
431
+ <!-- 4.7 Duration -->
432
+ <xs:complexType name="duration">
433
+ <xs:complexContent>
434
+ <xs:extension base="Duration">
435
+ <xs:attributeGroup ref="ag:duration"/>
436
+ </xs:extension>
437
+ </xs:complexContent>
438
+ </xs:complexType>
439
+
440
+ <!-- 5 Educational -->
441
+ <xs:complexType name="educational">
442
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
443
+ <xs:group ref="interactivityType"/>
444
+ <xs:group ref="learningResourceType"/>
445
+ <xs:group ref="interactivityLevel"/>
446
+ <xs:group ref="semanticDensity"/>
447
+ <xs:group ref="intendedEndUserRole"/>
448
+ <xs:group ref="context"/>
449
+ <xs:group ref="typicalAgeRange"/>
450
+ <xs:group ref="difficulty"/>
451
+ <xs:group ref="typicalLearningTime"/>
452
+ <xs:group ref="descriptionUnbounded"/>
453
+ <xs:group ref="languageId"/>
454
+ <xs:group ref="ex:customElements"/>
455
+ </xs:choice>
456
+ <xs:attributeGroup ref="ag:educational"/>
457
+ </xs:complexType>
458
+
459
+ <!-- 5.1 Interactivity Type -->
460
+ <xs:complexType name="interactivityType">
461
+ <xs:complexContent>
462
+ <xs:extension base="interactivityTypeVocab">
463
+ <xs:attributeGroup ref="ag:interactivityType"/>
464
+ </xs:extension>
465
+ </xs:complexContent>
466
+ </xs:complexType>
467
+
468
+ <!-- 5.2 Learning Resource Type -->
469
+ <xs:complexType name="learningResourceType">
470
+ <xs:complexContent>
471
+ <xs:extension base="learningResourceTypeVocab">
472
+ <xs:attributeGroup ref="ag:learningResourceType"/>
473
+ </xs:extension>
474
+ </xs:complexContent>
475
+ </xs:complexType>
476
+
477
+ <!-- 5.3 Interactivity Level -->
478
+ <xs:complexType name="interactivityLevel">
479
+ <xs:complexContent>
480
+ <xs:extension base="interactivityLevelVocab">
481
+ <xs:attributeGroup ref="ag:interactivityLevel"/>
482
+ </xs:extension>
483
+ </xs:complexContent>
484
+ </xs:complexType>
485
+
486
+ <!-- 5.4 Semantic Density -->
487
+ <xs:complexType name="semanticDensity">
488
+ <xs:complexContent>
489
+ <xs:extension base="semanticDensityVocab">
490
+ <xs:attributeGroup ref="ag:semanticDensity"/>
491
+ </xs:extension>
492
+ </xs:complexContent>
493
+ </xs:complexType>
494
+
495
+ <!-- 5.5 Intended End User Role -->
496
+ <xs:complexType name="intendedEndUserRole">
497
+ <xs:complexContent>
498
+ <xs:extension base="intendedEndUserRoleVocab">
499
+ <xs:attributeGroup ref="ag:intendedEndUserRole"/>
500
+ </xs:extension>
501
+ </xs:complexContent>
502
+ </xs:complexType>
503
+
504
+ <!-- 5.6 Context -->
505
+ <xs:complexType name="context">
506
+ <xs:complexContent>
507
+ <xs:extension base="contextVocab">
508
+ <xs:attributeGroup ref="ag:context"/>
509
+ </xs:extension>
510
+ </xs:complexContent>
511
+ </xs:complexType>
512
+
513
+ <!-- 5.7 Typical Age Range -->
514
+ <xs:complexType name="typicalAgeRange">
515
+ <xs:complexContent>
516
+ <xs:extension base="LangString">
517
+ <xs:attributeGroup ref="ag:typicalAgeRange"/>
518
+ </xs:extension>
519
+ </xs:complexContent>
520
+ </xs:complexType>
521
+
522
+ <!-- 5.8 Difficulty -->
523
+ <xs:complexType name="difficulty">
524
+ <xs:complexContent>
525
+ <xs:extension base="difficultyVocab">
526
+ <xs:attributeGroup ref="ag:difficulty"/>
527
+ </xs:extension>
528
+ </xs:complexContent>
529
+ </xs:complexType>
530
+
531
+ <!-- 5.9 Typical Learning Time -->
532
+ <xs:complexType name="typicalLearningTime">
533
+ <xs:complexContent>
534
+ <xs:extension base="Duration">
535
+ <xs:attributeGroup ref="ag:typicalLearningTime"/>
536
+ </xs:extension>
537
+ </xs:complexContent>
538
+ </xs:complexType>
539
+
540
+ <!-- 5.10 Description
541
+ <xs:complexType name="description">
542
+ <xs:complexContent>
543
+ <xs:extension base="LangString">
544
+ <xs:attributeGroup ref="ag:description"/>
545
+ </xs:extension>
546
+ </xs:complexContent>
547
+ </xs:complexType> -->
548
+
549
+ <!-- 5.11 Language
550
+ <xs:complexType name="language">
551
+ <xs:simpleContent>
552
+ <xs:extension base="LanguageId">
553
+ <xs:attributeGroup ref="ag:language"/>
554
+ </xs:extension>
555
+ </xs:simpleContent>
556
+ </xs:complexType> -->
557
+
558
+ <!-- 6 Rights -->
559
+ <xs:complexType name="rights">
560
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
561
+ <xs:group ref="cost"/>
562
+ <xs:group ref="copyrightAndOtherRestrictions"/>
563
+ <xs:group ref="description"/>
564
+ <xs:group ref="ex:customElements"/>
565
+ </xs:choice>
566
+ <xs:attributeGroup ref="ag:rights"/>
567
+ </xs:complexType>
568
+
569
+ <!-- 6.1 Cost -->
570
+ <xs:complexType name="cost">
571
+ <xs:complexContent>
572
+ <xs:extension base="costVocab">
573
+ <xs:attributeGroup ref="ag:cost"/>
574
+ </xs:extension>
575
+ </xs:complexContent>
576
+ </xs:complexType>
577
+
578
+ <!-- 6.2 Copyright and Other Restrictions -->
579
+ <xs:complexType name="copyrightAndOtherRestrictions">
580
+ <xs:complexContent>
581
+ <xs:extension base="copyrightAndOtherRestrictionsVocab">
582
+ <xs:attributeGroup ref="ag:copyrightAndOtherRestrictions"/>
583
+ </xs:extension>
584
+ </xs:complexContent>
585
+ </xs:complexType>
586
+
587
+ <!-- 6.3 Description -->
588
+ <xs:complexType name="description">
589
+ <xs:complexContent>
590
+ <xs:extension base="LangString">
591
+ <xs:attributeGroup ref="ag:description"/>
592
+ </xs:extension>
593
+ </xs:complexContent>
594
+ </xs:complexType>
595
+
596
+ <!-- 7 Relation -->
597
+ <xs:complexType name="relation">
598
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
599
+ <xs:group ref="kind"/>
600
+ <xs:group ref="resource"/>
601
+ <xs:group ref="ex:customElements"/>
602
+ </xs:choice>
603
+ <xs:attributeGroup ref="ag:relation"/>
604
+ </xs:complexType>
605
+
606
+ <!-- 7.1 Kind -->
607
+ <xs:complexType name="kind">
608
+ <xs:complexContent>
609
+ <xs:extension base="kindVocab">
610
+ <xs:attributeGroup ref="ag:kind"/>
611
+ </xs:extension>
612
+ </xs:complexContent>
613
+ </xs:complexType>
614
+
615
+ <!-- 7.2 Resource -->
616
+ <xs:complexType name="resource">
617
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
618
+ <xs:group ref="identifier"/>
619
+ <xs:group ref="description"/>
620
+ <xs:group ref="ex:customElements"/>
621
+ </xs:choice>
622
+ <xs:attributeGroup ref="ag:resource"/>
623
+ </xs:complexType>
624
+
625
+ <!-- 7.2.1 Identifier
626
+ <xs:complexType name="identifier">
627
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
628
+ <xs:group ref="catalog"/>
629
+ <xs:group ref="entry"/>
630
+ <xs:group ref="ex:customElements"/>
631
+ </xs:choice>
632
+ <xs:attributeGroup ref="ag:identifier"/>
633
+ </xs:complexType> -->
634
+
635
+ <!-- 7.2.1.1 Catalog
636
+ <xs:complexType name="catalog">
637
+ <xs:simpleContent>
638
+ <xs:extension base="CharacterString">
639
+ <xs:attributeGroup ref="ag:catalog"/>
640
+ </xs:extension>
641
+ </xs:simpleContent>
642
+ </xs:complexType> -->
643
+
644
+ <!-- 7.2.1.2 Entry
645
+ <xs:complexType name="entry">
646
+ <xs:simpleContent>
647
+ <xs:extension base="CharacterString">
648
+ <xs:attributeGroup ref="ag:entry"/>
649
+ </xs:extension>
650
+ </xs:simpleContent>
651
+ </xs:complexType> -->
652
+
653
+ <!-- 7.2.2 Description
654
+ <xs:complexType name="description">
655
+ <xs:complexContent>
656
+ <xs:extension base="LangString">
657
+ <xs:attributeGroup ref="ag:description"/>
658
+ </xs:extension>
659
+ </xs:complexContent>
660
+ </xs:complexType> -->
661
+
662
+ <!-- 8 Annotation -->
663
+ <xs:complexType name="annotation">
664
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
665
+ <xs:group ref="entity"/>
666
+ <xs:group ref="date"/>
667
+ <xs:group ref="description"/>
668
+ <xs:group ref="ex:customElements"/>
669
+ </xs:choice>
670
+ <xs:attributeGroup ref="ag:annotation"/>
671
+ </xs:complexType>
672
+
673
+ <!-- 8.1 Entity -->
674
+ <xs:complexType name="entity">
675
+ <xs:simpleContent>
676
+ <xs:extension base="VCard">
677
+ <xs:attributeGroup ref="ag:entity"/>
678
+ </xs:extension>
679
+ </xs:simpleContent>
680
+ </xs:complexType>
681
+
682
+ <!-- 8.2 Date
683
+ <xs:complexType name="date">
684
+ <xs:complexContent>
685
+ <xs:extension base="DateTime">
686
+ <xs:attributeGroup ref="ag:date"/>
687
+ </xs:extension>
688
+ </xs:complexContent>
689
+ </xs:complexType> -->
690
+
691
+ <!-- 8.3 Description
692
+ <xs:complexType name="description">
693
+ <xs:complexContent>
694
+ <xs:extension base="LangString">
695
+ <xs:attributeGroup ref="ag:description"/>
696
+ </xs:extension>
697
+ </xs:complexContent>
698
+ </xs:complexType> -->
699
+
700
+ <!-- 9 Classification -->
701
+ <xs:complexType name="classification">
702
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
703
+ <xs:group ref="purpose"/>
704
+ <xs:group ref="taxonPath"/>
705
+ <xs:group ref="description"/>
706
+ <xs:group ref="keyword"/>
707
+ <xs:group ref="ex:customElements"/>
708
+ </xs:choice>
709
+ <xs:attributeGroup ref="ag:classification"/>
710
+ </xs:complexType>
711
+
712
+ <!-- 9.1 Purpose -->
713
+ <xs:complexType name="purpose">
714
+ <xs:complexContent>
715
+ <xs:extension base="purposeVocab">
716
+ <xs:attributeGroup ref="ag:purpose"/>
717
+ </xs:extension>
718
+ </xs:complexContent>
719
+ </xs:complexType>
720
+
721
+ <!-- 9.2 Taxon Path -->
722
+ <xs:complexType name="taxonPath">
723
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
724
+ <xs:group ref="source"/>
725
+ <xs:group ref="taxon"/>
726
+ <xs:group ref="ex:customElements"/>
727
+ </xs:choice>
728
+ <xs:attributeGroup ref="ag:taxonPath"/>
729
+ </xs:complexType>
730
+
731
+ <!-- 9.2.1 Source -->
732
+ <xs:complexType name="source">
733
+ <xs:complexContent>
734
+ <xs:extension base="LangString">
735
+ <xs:attributeGroup ref="ag:source"/>
736
+ </xs:extension>
737
+ </xs:complexContent>
738
+ </xs:complexType>
739
+
740
+ <!-- 9.2.2 Taxon -->
741
+ <xs:complexType name="taxon">
742
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
743
+ <xs:group ref="id"/>
744
+ <xs:group ref="entryTaxon"/>
745
+ <xs:group ref="ex:customElements"/>
746
+ </xs:choice>
747
+ <xs:attributeGroup ref="ag:taxon"/>
748
+ </xs:complexType>
749
+
750
+ <!-- 9.2.2.1 Id -->
751
+ <xs:complexType name="id">
752
+ <xs:simpleContent>
753
+ <xs:extension base="CharacterString">
754
+ <xs:attributeGroup ref="ag:id"/>
755
+ </xs:extension>
756
+ </xs:simpleContent>
757
+ </xs:complexType>
758
+
759
+ <!-- 9.2.2.2 Entry -->
760
+ <xs:complexType name="entryTaxon">
761
+ <xs:complexContent>
762
+ <xs:extension base="LangString">
763
+ <xs:attributeGroup ref="ag:entry"/>
764
+ </xs:extension>
765
+ </xs:complexContent>
766
+ </xs:complexType>
767
+
768
+ <!-- 9.3 Description
769
+ <xs:complexType name="description">
770
+ <xs:complexContent>
771
+ <xs:extension base="LangString">
772
+ <xs:attributeGroup ref="ag:description"/>
773
+ </xs:extension>
774
+ </xs:complexContent>
775
+ </xs:complexType> -->
776
+
777
+ <!-- 9.4 Keyword
778
+ <xs:complexType name="keyword">
779
+ <xs:complexContent>
780
+ <xs:extension base="LangString">
781
+ <xs:attributeGroup ref="ag:keyword"/>
782
+ </xs:extension>
783
+ </xs:complexContent>
784
+ </xs:complexType> -->
785
+
786
+ </xs:schema>