Professional Documents
Culture Documents
D2L - XML4 Parser Guide
D2L - XML4 Parser Guide
Contents
DOCUMENT CHANGE HISTORY ......................................................................................................................... 3
OVERVIEW ........................................................................................................................................................ 3
DATA REQUIREMENTS ...................................................................................................................................... 3
Encoding and file naming conventions ................................................................................................................ 4
SET CONFIGURATION VARIABLE ....................................................................................................................... 4
DEFINING RELATIONSHIPS ................................................................................................................................ 4
ROLE MAPPING ................................................................................................................................................. 5
IMPORTANT DATA VALUES ............................................................................................................................... 5
ORGANIZATIONAL STRUCTURE ......................................................................................................................... 6
TEMPLATE XML TAGS ....................................................................................................................................... 7
XML example for Course Listings ......................................................................................................................... 9
COURSE OFFERINGS XML TAGS ....................................................................................................................... 10
XML example for Course Offerings .................................................................................................................... 12
SECTIONS XML TAGS ....................................................................................................................................... 14
XML example for Sections ................................................................................................................................. 16
USERS XML TAGS ............................................................................................................................................ 17
XML example for Users ...................................................................................................................................... 19
MEMBERSHIPS XML TAGS ............................................................................................................................... 20
XML example for Memberships......................................................................................................................... 22
XSD SCHEMA .................................................................................................................................................. 23
ABOUT D2L ..................................................................................................................................................... 33
Overview
The D2L_XML4 parser is based on the IMS Enterprise XML Binding. It works for real-time and batch processing.
Using the D2L_XML4 parser, you can import these data sets:
Course Templates
Course Offerings
Course Sections
Users
Memberships
Data requirements
To use the D2L_XML4 parser, you must be able to extract relevant data from the SIS and produce XML files. You must
be able to explicitly define organizational structure relationships in XML files. As well, Departments and Semesters must
be created in Brightspace Learning Environment before initial import.
The files must be well-formed XML, properly encoded, and comply with the D2L_XML4 specification.
All XML files must have an .alldone file for Holding Tank to initiate processing.
Duplicates must not exist in the cumulative data of all processed files.
Org units must have no children before they can be deleted through Holding Tank. The orders to remove child
organization units must come before the orders to remove the parent organization units.
This ensures that all non-standard characters are encoded correctly for Holding Tank.
For files to be processed by Holding Tank, an associated .alldone file must accompany each XML dataset. Holding Tank
treats the .alldone file as a signal that the associated XML file transmitted successfully and an indication that the
associated XML file is safe for use. Content in this file is irrelevant and not processed this file can be an empty text file.
D2L recommends that you transfer the .alldone file after the associated XML file.
D2L recommends that you follow these conventions when you name XML files:
Include the word Users in the Users file, Templates in the Course Template file, Offerings in the Course
Offering file, Sections in the Course Section file, and Enrollments in the Enrollments file.
The XML files must be in alphabetical or numerical order; the order in which they should be processed.
Example:
Defining relationships
These rules apply to defining relationships using the D2L_XML4 parser.
All relationships between organization units are explicitly defined. Course templates, offerings, and sections must
have a defined relationship path in the XML file.
Role mapping
Holding Tank requires specific mappings of role names between the XML role codes and Brightspace Learning
Environment. Role mappings are managed in Brightspace Learning Environment Course Mappings Interface. See
Holding Tank Administrator Guide for information about Course Mappings Interface.
D2L recommends that you use only non-cascading roles for the Holding Tank integration.
Organizational structure
The D2L_XML4 parser uses this organizational structure:
Note: If using
enforced content
paths, omit this tag.
<enterprise>
<group recstatus="2">
<sourcedid>
<id>MATH_101_TEMP</id>
</sourcedid>
<grouptype>
<scheme>D2L</scheme>
</grouptype>
<description>
<short>MATH_101_TEMP</short>
</description>
<relationship relation="1">
<sourcedid>
<id>MATH</id>
</sourcedid>
</label>
</relationship>
<extension>
<path>MATH/templates/MATH_101_TEMP/</path>
</extension>
</group>
</enterprise>
Note: If using
enforced content
paths, omit this tag.
<enterprise>
<group recstatus="2">
<sourcedid>
<id>MATH_101_F2015</id>
</sourcedid>
<grouptype>
</grouptype>
<description>
<short>MATH_101_F2015</short>
</description>
<timeframe>
<begin>2015-09-01</begin>
<end>2015-12-29</end>
</timeframe>
<relationship relation="1">
<sourcedid>
<id>MATH_101_TEMP</id>
</sourcedid>
</label>
</relationship>
<relationship relation="1">
<sourcedid>
<id>FA2015</id>
</sourcedid>
</label>
</relationship>
<extension>
<path>MATH/F2015/offerings/MATH_101_F2015/</path>
<status>1</status>
</extension>
</group>
</enterprise>
Maximum of 1
Parent Course
Offering per unique
Section.
<enterprise>
<group recstatus="2">
<sourcedid><id>MATH_101_SEC001_F2015</id></sourcedid>
<grouptype>
<typevalue level="6">Section</typevalue>
</grouptype>
<description>
<short>MATH_101_SEC001_F2015</short>
</description>
<relationship relation="1">
<sourcedid>
<id>MATH_101_FA2015</id>
</sourcedid>
</label>
</relationship>
</group>
</enterprise>
/sourcedid Element
/name Element
//n Element
/extension Element
//role roletype Attribute RoleCode Assigns the users Maximum size of this
role at the field is 50 characters.
organization level
Must be a valid
only. This role has no
(integrated)
effect on roles for
RoleCode.
individual courses.
Note Only RoleCodes
specified via the
Roles area of the
Course Mappings
Interface will be
accepted.
<enterprise>
<person recstatus="2">
<sourcedid>
<id>D2L0001</id>
</sourcedid>
<userid password="MyPassword">Jason.Allison</userid>
<name>
<n>
<family>Allison</family>
<given>Jason</given>
</n>
</name>
<email>Jason.Allison@d2l.ca</email>
<extension>
<status>1</status>
</role>
</extension>
</person>
</enterprise>
<enterprise>
<membership recstatus="2">
<sourcedid>
<id>MATH_101_SEC001_F2012</id>
</sourcedid>
<member>
<sourcedid>
<id>D2L0001</id>
</sourcedid>
<status>1</status>
</role>
</member>
<member>
<sourcedid>
<id>D2L0002</id>
</sourcedid>
<status>1</status>
</role>
</member>
</membership>
</enterprise>
XSD Schema
Use this schema to validate your import file.
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="EnterpriseType">
<xsd:sequence>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="CommentType">
<xsd:restriction base="xsd:string">
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="PropertiesType">
<xsd:all>
</xsd:all>
</xsd:complexType>
<xsd:complexType name="GroupType">
<xsd:sequence>
Role Mapping
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="SourceDIDType">
<xsd:all>
</xsd:all>
</xsd:complexType>
<xsd:simpleType name="SourceType">
<xsd:restriction base="xsd:string">
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="IDType">
<xsd:restriction base="xsd:string">
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="GroupTypeType">
<xsd:sequence>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TypeValueType">
<xsd:simpleContent>
<xsd:extension base="TypeValuesType">
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:simpleType name="TypeValuesType">
<xsd:restriction base="xsd:string">
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="LevelType">
<xsd:restriction base="xsd:string">
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="GroupDescriptionType">
<xsd:sequence>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="ShortDescType">
<xsd:restriction base="xsd:string">
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="LongDescType">
<xsd:restriction base="xsd:string">
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="TimeframeType">
<xsd:sequence>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="GroupRelationshipType">
<xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="LabelType">
<xsd:restriction base="xsd:string">
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="RelationType">
<xsd:restriction base="xsd:string">
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="GroupExtensionType">
<xsd:sequence>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="PathType">
<xsd:restriction base="xsd:string">
</xsd:restriction>
</xsd:simpleType>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="PersonType">
<xsd:sequence>
</xsd:sequence>
</xsd:complexType>
<!-- person :: sourcedid || see shared type above ~ group, person & membership :: sourcedid -->
<xsd:complexType name="UserIDType">
<xsd:simpleContent>
<xsd:extension base="UserIDBaseType">
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:simpleType name="UserIDBaseType">
<xsd:restriction base="xsd:string">
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="PasswordType">
<xsd:restriction base="xsd:string">
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="NameType">
<xsd:all>
</xsd:all>
</xsd:complexType>
<xsd:complexType name="NamesType">
<xsd:all>
</xsd:all>
</xsd:complexType>
<xsd:simpleType name="FamilyNameType">
<xsd:restriction base="xsd:string">
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="GivenNameType">
<xsd:restriction base="xsd:string">
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="PartNameBaseType">
<xsd:restriction base="xsd:string">
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="PartNameType">
<xsd:simpleContent>
<xsd:extension base="PartNameBaseType">
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:simpleType name="PartNameTypeType">
<xsd:restriction base="xsd:string">
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="EmailType">
<xsd:restriction base="xsd:string">
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="PersonExtensionType">
<xsd:all>
</xsd:all>
</xsd:complexType>
<xsd:complexType name="RoleType">
<xsd:all>
</xsd:all>
</xsd:complexType>
<xsd:simpleType name="UserRoleType">
<xsd:restriction base="xsd:string">
</xsd:restriction>
</xsd:simpleType>
<!-- person :: recstatus || see shared type above ~ group, person & membership :: recstatus -->
<xsd:complexType name="MembershipType">
<xsd:sequence>
</xsd:sequence>
</xsd:complexType>
<!-- membership :: sourcedid || see shared type above ~ group, person & membership :: sourcedid -
->
<xsd:complexType name="MemberType">
<xsd:all>
</xsd:all>
</xsd:complexType>
<!-- member :: sourcedid || see shared type above ~ group, person & membership :: sourcedid -->
<!-- member :: role || see shared type above ~ person :: extention & membership :: role -->
<!-- membership :: recstatus || see shared type above ~ group, person & membership :: recstatus ->
</xsd:schema>
About D2L
A global leader in EdTech, D2L is the creator of Brightspace, the worlds first integrated learning platform.
The company partners with thought-leading organizations to improve learning through data-driven technology that
helps deliver a personalized experience to every learner, regardless of geography or ability. D2Ls open and extensible
platform is used by more than 1,100 clients and almost 15 million individual learners in higher education, K12,
healthcare, government, and the enterprise sectorincluding Fortune 1000 companies.
The company has operations in the United States, Canada, Europe, Australia, Brazil, and Singapore.
www.brightspace.com (http://www.brightspace.com) | www.D2L.com (http://www.d2l.com)
Contact Us
1.800.656.210 (Australia)
0.800.891.4507 (Brazil)
Fax: 1.519.772.0324
Email: info@brightspace.com
Twitter: @Brightspace
Web: www.brightspace.com
(http://www.brightspace.com) | www.D2L.com
(http://www.d2l.com)