The OLX Courseware Structure#
The courseware structure in the course.xml file is defined in the top-level
directory. In Studio, the course.xml file is simple, and points to the specific
course run xml file in the course/run.xml file like so:
<course url_name="2025" org="OpenedX" course="OLXex"/>
The rest of this page would describe the file that this course.xml points to,
called course/2025.xml.
Other course.xml usages
The course.xml file (advanced usage) describes an alternative way of structuring
the top-level course.xml file - it is not the format Studio exports in, and may
not be supported by Studio.
The course/run.xml File#
In our example course.xml file, we point to the 2025 run:
<course url_name="2025" org="OpenedX" course="OLXex"/>
A partial example of the contents of a 2025.xml file follows.
<course advanced_modules="["edx_sga", "lti", "scorm", "poll", "survey"]"
course_image="Intro_to_OLX_course_card.png"
display_name="OLX Example Course" end="2027-06-01T00:00:00Z" enrollment_end="2026-01-31T00:00:00Z"
enrollment_start="2025-05-01T00:00:00Z" graceperiod="7200 seconds"
language="en" lti_passports="["codeboard:codeboard_key_1:codeboard_secret_1234", "jupyter:811a447706c152588c436ee13addeeb889e7f256033679408737bd5bc4118225:869e9639af7de74929b13ae17ad22e4efb60d9d112143e287589289102e1de00"]"
minimum_grade_credit="0.8" pdf_textbooks="[{"tab_title": "Education for a Digital World: Advice, Guidelines and Effective Practice from Around Globe", "chapters": [{"title": "Full Book", "url": "/asset-v1:OpenedX+OLXex+2025+type@asset+block@Education_for_a_Digital_World.pdf"}], "id": "6Education_for_a_Digital_World"}]"
start="2025-06-01T00:00:00Z">
. . .
</course>
course Attributes#
Note
There are many more course attributes than described in this guide; no such complete guide of all
available attributes currentliy exists. Many attributes can be discovered by setting them in Studio
and then inspecting the exported course/run.xml file.
Attribute |
Meaning |
|---|---|
|
The value in the course URL path directly after the domain,
organization, and course name. The url_name must also be the name of the course run XML file (without the |
|
The organization sponsoring the course. This value is in the course URL
path, following the domain and |
|
The name of the course. This value is in the course URL path, following the organization. |
|
The list of advanced modules, or custom XBlocks, used in your course. |
|
The path to the course image, used in the Open edX Course Catalog and on the learner dashboard |
|
The human-readable name, used throughout the course |
|
The date and time that learners can start enrolling in the course (defined as a UTC datestamp such as |
|
The amount of time a learner is allowed to submit beyond a problem’s due date (applies across all course elements) |
|
The two-letter ISO 639 language code that the course is authored in |
|
A list of LTI passports required for LTI units in the course |
|
A floating-point number less than or equal to 1.0 which defines the minimum grade required to obtain a course certificate |
|
A list of PDF textbooks, each defined with lists that contain information about each chapter and its associated asset file |
|
The date and time that the course starts (defined as a UTC datestamp) |
course Element Attributes and Course URLs#
The attributes of the course element are used to construct URLs in the
course. The following example URL shows where these values are used (note
different areas of the platform have different URL structures, but the course
key (course-v1:<@org value/<@course value>/<@url_name value>/>)) will be
present in each URL.
https://apps.training.openedx.io/learning/course/course-v1:<@org value>/<@course value>/<@url_name value>/home
For example:
https://apps.training.openedx.io/learning/course/course-v1:OpenedX+DemoX+Demo_Course/home
Course Sections#
You create a course section with the chapter element, as a child of the
course element. Chapter elements are top-level sections of the course.
The Open edX platform renders navigation chrome around them (accordion on the left).
For example, the course outline is defined by elements in the following format,
defined in the course/run.xml (course/2025.xml,
in our example).
<course advanced_modules="["edx_sga", "lti", "scorm", "poll", "survey"]"
course_image="Intro_to_OLX_course_card.png"
display_name="OLX Example Course" end="2027-06-01T00:00:00Z" enrollment_end="2026-01-31T00:00:00Z"
enrollment_start="2025-05-01T00:00:00Z" graceperiod="7200 seconds"
language="en" lti_passports="["codeboard:codeboard_key_1:codeboard_secret_1234", "jupyter:811a447706c152588c436ee13addeeb889e7f256033679408737bd5bc4118225:869e9639af7de74929b13ae17ad22e4efb60d9d112143e287589289102e1de00"]"
minimum_grade_credit="0.8" pdf_textbooks="[{"tab_title": "Education for a Digital World: Advice, Guidelines and Effective Practice from Around Globe", "chapters": [{"title": "Full Book", "url": "/asset-v1:OpenedX+OLXex+2025+type@asset+block@Education_for_a_Digital_World.pdf"}], "id": "6Education_for_a_Digital_World"}]"
start="2025-06-01T00:00:00Z">
<chapter url_name="section_1_homework"/>
<chapter url_name="section_2_exams"/>
. . .
</course>
chapter Attributes#
Attribute |
Meaning |
|---|---|
|
The url_name must be the name of the XML file (without the |
|
The value that is displayed to learners as the name of the section. |
|
The date and time, in UTC, that the section is released to learners. Before this date and time, learners do not see the section. |
chapter Children#
The chapter element contains one or more children. Studio uses
subsections, defined by sequential elements, for all children of chapters.
The following example shows a chapter with two subsections, (sequential items),
from chapter/section_1_homework.xml.
<chapter display_name="Course Section 1: Homework">
<sequential url_name="subsection_1_ungraded"/>
<sequential url_name="subsection_2_graded_as_homework"/>
</chapter>
Course Subsections#
You create a course subsection with the sequential element, for each
subsection in the chapter.
For example, the course can contain a subsection in this format, from sequential/subsection_2_graded_as_homework.xml.
<sequential display_name="Subsection 2: Graded as Homework"
due="null" format="Homework" graded="true" hide_after_due="false" show_correctness="always"
start="2025-06-01T00:00:00Z">
<vertical url_name="unit_1_video"/>
<vertical url_name="unit_2_selection_problems"/>
<vertical url_name="unit_3_lti"/>
<vertical url_name="unit_4_formula_response_homework"/>
</sequential>
sequential Attributes#
Note
There may be more course attributes than described in this guide; no such complete guide of all
available attributes currentliy exists. Many attributes can be discovered by setting them in Studio
and then inspecting the exported sequential/<name>.xml file.
Attribute |
Meaning |
|---|---|
|
The url_name must be the name of the XML file (without the |
|
The value that is displayed to learners as the name of the sequential, or subsection. |
|
The date and time, in UTC, that the subsection is due. After this date and time, learners cannot answer questions in this subsection. |
|
The date and time, in UTC, that the subsection is released to learners. Before this date and time, learners do not see the subsection. |
|
Whether the subsection is a graded subsection; |
|
If the subsection is graded, the assignment type. |
|
If the subsection is graded, the number of seconds in the grace period. |
|
Whether the subsection should be visible past the due date; |
|
Defines when to show whether a learner’s answer to the problem is correct;
|
|
Defines when to show the answer to the problem. |
“never_show_correctness_but_include_grade_description”
This option was added to the Ulmo release. In this option, learners do not see question-level correctness or scores before or after the due date. However, once the due date passes, they can see their overall score for the subsection on the Progress page.
sequential Children#
The sequential element contains one or more units (child vertical elements).
The vertical element references a unit in the course.
For example, the subsection can contain units in this format, from vertical/unit_2_selection_problems.xml.
<vertical display_name="Unit 2: Selection Problems">
<problem url_name="single_select"/>
<problem url_name="multi_select"/>
<problem url_name="dropdown"/>
</vertical>
Course Units#
In the course structure, a course unit serves the following functions.
Defines the display name for the unit.
Organizes components.
You create a course unit with the vertical element, for each unit in the
subsection.
For example, the course can contain a vertical in this format.
<vertical display_name="Unit 3: LTI">
<video url_name="purpose_power_reach"/>
<html url_name="lti_introduction"/>
<lti url_name="codeboard_lti"/>
</vertical>
vertical Attributes#
Attribute |
Meaning |
|---|---|
|
The url_name must be the name of the XML file (without the |
|
The value that is displayed to learners as the name of the sequential, or subsection. |
vertical Children#
The vertical element contains one or more child elements for each component
in the unit.
Warning
A unit element can also contain a vertical element, potentially creating a recursive definition of verticals. This is unsupported by Studio and not guaranteed to render properly - or at all - in the Open edX LMS or Libraries.
Child elements of vertical refer to components in your course. The Open edX
platform supports a wide range of components, including custom XBlocks.
See also
What is Open Learning XML? (concept)
Example of an OLX Course (reference)
Getting Started with OLX (quickstart)
What is the OLX Course Structure? (reference)
Maintenance chart
Review Date |
Working Group Reviewer |
Release |
Test situation |
2025-11-06 |
sarina |
Ulmo |
Pass |