9.2. The Courseware Structure

You develop the courseware structure in the course.xml file, in the top- level directory.

For an example of a course.xml file, see The edX-Insider course.xml File.

9.2.1. The course.xml File

The root element of the course.xml file is course.

An example of the contents of a course.xml file follows.

<course advanced_modules="[&quot;concept&quot;, &quot;done&quot;,
    &quot;profile&quot;, &quot;recommender&quot;]" course="edX_Insider"
    course_image="code.png" display_name="edX Demo"
    enrollment_start="2014-03-01T04:00:00Z" org="edX"
    start="2014-03-03T00:00:00Z" url_name="Ongoing">
    . . .
    . . .

9.2.1.1. course Attributes

Attribute Meaning
advanced_modules The list of advanced modules, or custom XBlocks, used in your course.
url_name 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 outline XML file (without the .xml extension).
org The organization sponsoring the course. This value is in the course URL path, following the domain and /courses/.
course The name of the course. This value is in the course URL path, following the organization.
course_image The filename of the image used on the course About page.
enrollment_start The date and time that students can start enrolling in the course.

9.2.1.2. course Element Attributes and Course URLS

The attributes of the course element are used to construct URLs in the course. The following course URL shows where these values are used.

http://my-edx-server.org/courses/<@org value>/<@course value>/<@url_name value>/info

For example:

http://my-edx-server.org/courses/edX/DemoX/Demo_Course/info

9.2.2. Course Chapters

You create a course chapter with the chapter element, as a child of the root course element. Chapter elements are top-level pages in the course. The edX platform renders navigation chrome around them (tab-set on top and accordion on the left). It is possible to disable chrome for specific chapters using the chrome option. It is possible to associate chapters with different elements of the tabset with the default_tab option. It is possible to hide them from the navigation using the hide_from_toc option.

For example, the course outline is defined by elements in the following format.

<course>
  <chapter display_name="Exam Review" url_name="exam_review">
  . . .
</course>

9.2.2.1. chapter Attributes

Attribute Meaning
display_name The value that is displayed to students as the name of the chapter, or section.
start The date and time, in UTC, that the chapter is released to students. Before this date and time, students do not see the chapter.

9.2.2.2. chapter Children

The chapter element contains one or more children. Studio uses sequential elements for all children of chapters, and calls these subsections.

The following example shows a chapter with two sequentials, or subsections.

<chapter display_name="Example Week 2: Get Interactive">
    <sequential display_name="Simulations" url_name="simulations">
        . . .
    <sequential display_name="Graded Simulations"
        url_name="graded_simulations">
        . . .
</chapter>

9.2.3. Course Sequentials

You create a course sequential with the sequential element, for each subsection in the chapter.

For example, the course can contain a sequential in this format.

<course>
    <chapter url_name="exam_review">
        <sequential display_name="Simulations" url_name="simulations">
            . . .
        </sequential>
    </chapter>
    . . .
</course>

9.2.3.1. sequential Attributes

Attribute Meaning
display_name The value that is displayed to students as the name of the sequential, or subsection.
start The date and time, in UTC, that the sequential is released to students. Before this date and time, students do not see the sequential.
graded Whether the sequential is a graded subsection; true or false.
format If the sequential is graded, the assignment type.
graceperiod If the sequential is graded, the number of seconds in the grace period.
rerandomize TBD
showanswer TBD
xqa_key TBD

9.2.3.2. sequential Children

The sequential element contains one or more child vertical elements.

The vertical element references a vertical, or unit, in the course.

The following example shows a chapter with a sequential that has three verticals, or units.

<course>
    <chapter url_name="exam_review">
        <sequential display_name="Simulations" url_name="simulations">
            <vertical display_name="Unit 1" url_name="Lesson_1_Unit_1">
                . . . .
            <vertical display_name="Unit 2" url_name="Lesson_1_Unit_2">
                . . . .
        </sequential>
    </chapter>
    . . .
</course>

9.2.4. Course Verticals

In the course structure, a course vertical serves the following functions.

  • Defines the display name for the vertical, or unit.
  • Organizes components and other verticals in the vertical.

You create a course vertical with the vertical element, for each unit in the subsection.

For example, the course can contain a vertical in this format.

<course>
    <chapter url_name="exam_review">
        <sequential display_name="Simulations" url_name="simulations">
            <vertical display_name="Unit 1" url_name="Lesson_1_Unit_1"/>
                . . .
        </sequential>
    </chapter>
    . . .
</course>

9.2.4.1. vertical Attributes

Attribute Meaning
display_name The value that is displayed to students as the name of the sequential, or subsection.

9.2.4.2. vertical Children

The vertical element contains one or more child elements for each component in the vertical, or unit.

Note

You can embed the content of components in the course.xml file, as child elements of the vertical element. However, you might want to store components in separate files, to better enable content reuse across courses.

A vertical element can also contain a vertical element. You can nest verticals, or units, recursively.

Child elements of vertical refer to components in your course. The edX Platform supports a wide range of components, including custom XBlocks.

The following example shows a vertical with two components.

<vertical display_name="Lesson_1_Unit_1">
    <html url_name="Introduction"/>
    <video url_name="Unit_1_Video"/>
</vertical>