Overview
This article describes the XML schema for uploading grades into School Loop and provides the following schema examples:
- A simplified version.
- A formal technical version.
- A "real" version.
- A version for downloading School Loop rosters and assignments.
Simplified Example
A very simplified example of an XML grade file for one student and one assignment can be found below:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<sections>
<section ID="7984">
<progressReports>
<progressReport markName="Current Grades" date="2007-08-12T22:24:15Z" score="0.95" grade="A" hasScore="true" useWeighting="false" gradebookDate="">
<gradeDefinitions>
<keyValue key="INC" value="INCOMPLETE (not handed in)"/>
</gradeDefinitions>
<categories>
<category hasScore="true" name="Assignment" weight="-1.000" score="0.000"/>
</categories>
<course period="1" systemID="1154427028921" name="US History 1"/>
<gradingScale>
<cutoffs>
<cutoff Start="90" Name="A"/>
<cutoff Start="0" Name="F"/>
</cutoffs>
</gradingScale>
<grades>
<grade score="" excused="false" comment="" grade="B">
<assignment categoryName="Assignment" maxPoints="10" dueDate="2007-05-18T00:00:00Z" title="WWI" systemID="1179375145780"/>
</grade>
</grades>
<student name="Cravalho, John" schoolID="3171"/>
</progressReport>
</progressReports>
</section>
</sections>
</root>
As shown above, the grades are entered by section. The section ID
should match the Sloopy import section ID.
- Within each section element, grade information is entered into the
ProgressReport
elements. TheProgressReport
element contains the course and student information, grade-scale definition, assignment categories, and grades for each assignment.
- The
GradeDefinitions
element is provided for non-standard grades (e.g., "INC
") to enter key-value pairs, which will be added to a legend on progress report output pages.
- The student element provides attributes for the student's
localID
,permanent ID
, and optionally,School Loop ID
.
- The
systemID
attribute for all elements is optional and can be used if rosters and assignments have been downloaded from School Loop. This is the School Loopinternal ID
for the object and allows for a more automated level of assignment matching.
Formal Schema
An example of the formal schema upload file for progress reports can be found below:
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="assignment">
<xs:complexType>
<xs:attribute name="maxPoints" use="optional"></xs:attribute>
<xs:attribute name="dueDate" use="optional"></xs:attribute>
<xs:attribute name="categoryName" type="xs:string" use="optional" />
<xs:attribute name="title" type="xs:string" use="required" />
<xs:attribute name="systemID" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="categories">
<xs:complexType>
<xs:sequence>
<xs:element ref="category" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="category">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="hasScore" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="false" />
<xs:enumeration value="true" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="weight" type="xs:string" use="optional"/>
<xs:attribute name="score" use="required">
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="course">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="period" type="xs:string" use="required"/>
<xs:attribute name="courseComment" type="xs:String" use="required"/>
<xs:attribute name="schoolID" type="xs:string" use="required" />
<xs:attribute name="systemID" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="cutoff">
<xs:complexType>
<xs:attribute name="Name" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="A" /> Note: this is a sample enumeration.
<xs:enumeration value="B" />
<xs:enumeration value="C" />
<xs:enumeration value="D" />
<xs:enumeration value="F" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Start" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="0" /> Note: this is a sample enumeration.
<xs:enumeration value="18" />
<xs:enumeration value="63" />
<xs:enumeration value="78" />
<xs:enumeration value="92" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Cutoffs">
<xs:complexType>
<xs:sequence>
<xs:element ref="cutoff" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="grade">
<xs:complexType>
<xs:sequence>
<xs:element ref="assignment" />
</xs:sequence>
<xs:attribute name="grade" type="xs:string" use="required" />
<xs:attribute name="excused" type="xs:string" use="required"/>
<xs:attribute name="score" type="xs:string" use="required" />
<xs:attribute name="comment" type="xs:string" use="required" />
<xs:attribute name="courseAverage" type="xs:double" use="required" />
<xs:attribute name="courseRank" type="xs:integer" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="gradeDefinitions">
<xs:complexType>
<xs:sequence>
<xs:element ref="keyValue" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="grades">
<xs:complexType>
<xs:sequence>
<xs:element ref="grade" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="gradingScale">
<xs:complexType>
<xs:sequence>
<xs:element ref="cutoffs" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="keyValue">
<xs:complexType>
<xs:attribute name="key" type="xs:string" use="required"/>
<xs:attribute name="value" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="section">
<xs:complexType>
<xs:sequence>
<xs:element ref="progressReports" />
</xs:sequence>
<xs:attribute name="ID" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="sections">
<xs:complexType>
<xs:sequence>
<xs:element ref="section" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="progressReport">
<xs:complexType>
<xs:sequence>
<xs:element ref="gradeDefinitions" />
<xs:element ref="categories" />
<xs:element ref="course" />
<xs:element ref="gradingScale" />
<xs:element ref="grades" />
<xs:element ref="student" />
</xs:sequence>
<xs:attribute name="date" type="xs:string" use="required"/>
<xs:attribute name="markName" type="xs:string" use="required"/>
<xs:attribute name="useWeighting" type="xs:string" use="required" />
<xs:attribute name="hasScore" type="xs:string" use="required" />
<xs:attribute name="grade" type="xs:string" use="required" />
<xs:attribute name="score" type="xs:string" use="required" /> // should be between 0.00 and 1.00, where 1.0 represents 100%
<xs:attribute name="gradebookDate" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="progressReports">
<xs:complexType>
<xs:sequence>
<xs:element ref="progressReport" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element ref="sections" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="student">
<xs:complexType>
<xs:attribute name="schoolID" type="xs:string" use="required" /> // Required. Must match the "stuLink" value imported via Sloopy.
<xs:attribute name="name" type="xs:string" use="optional" />
<xs:attribute name="permId" type="xs:string" use="optional" />
<xs:attribute name="systemID" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
</xs:schema>
Expanded Sample Upload
Below is a detailed (sample) XML progress report upload file (edited for brevity and student privacy). This example includes the optional systemIDs
to provide automated assignment matching.
<?xml version="1.0" encoding="UTF-8"?>
<root>
<sections>
<section ID="1189">
<progressReports>
<progressReport markName="Current Grades" date="2007-11-06T13:57:29Z" score="0.000" grade="NP" hasScore="true" useWeighting="false" gradebookDate="">
<gradeDefinitions>
<keyValue key="INC" value="INCOMPLETE (not handed in)"/>
</gradeDefinitions>
<categories>
<category hasScore="true" name="Assignment" weight="-1.000" score="0.000"/>
<category hasScore="false" name="Extra Credit" weight="1.000" score=""/>
<category hasScore="false" name="Homework" weight="1.000" score=""/>
<category hasScore="false" name="journal weekly" weight="1.000" score=""/>
<category hasScore="false" name="parent signature" weight="1.000" score=""/>
<category hasScore="false" name="Project final" weight="1.000" score=""/>
<category hasScore="false" name="Reports" weight="1.000" score=""/>
<category hasScore="false" name="rubic" weight="1.000" score=""/>
<category hasScore="false" name="sketch rough drafts" weight="1.000" score=""/>
</categories>
<course period="2" systemID="1189891699953" name="Advoc 10"/>
<gradingScale>
<cutoffs>
<cutoff Start="50" Name="P"/>
<cutoff Start="0" Name="NP"/>
</cutoffs>
</gradingScale>
<grades>
<grade score="" excused="false" comment="" grade="">
<assignment categoryName="Assignment" maxPoints="10" dueDate="2007-10-01T00:00:00Z" title="Characteristic Inventory Job Qualities" systemID="1193000560544"/>
</grade>
<grade score="" excused="false" comment="" grade="">
<assignment categoryName="Assignment" maxPoints="10" dueDate="2007-10-03T00:00:00Z" title="Goal Setting" systemID="1192516314420"/>
</grade>
<grade score="" excused="false" comment="" grade="">
<assignment categoryName="Assignment" maxPoints="10" dueDate="2007-10-15T00:00:00Z" title="Multipal Intelligences worksheet" systemID="1192516316589"/>
</grade>
</grades>
<student systemID="118765789737" permId="9970668" name="Udolo, Joe" schoolID="9970638"/>
</progressReport>
<progressReport markName="Current Grades" date="2007-11-06T13:57:29Z" score="0.000" grade="NP" hasScore="true" useWeighting="false" gradebookDate="">
<gradeDefinitions>
<keyValue key="INC" value="INCOMPLETE (not handed in)"/>
</gradeDefinitions>
<categories>
<category hasScore="true" name="Assignment" weight="-1.000" score="0.000"/>
<category hasScore="false" name="Extra Credit" weight="1.000" score=""/>
<category hasScore="false" name="Homework" weight="1.000" score=""/>
<category hasScore="false" name="journal weekly" weight="1.000" score=""/>
<category hasScore="false" name="parent signature" weight="1.000" score=""/>
<category hasScore="false" name="Project final" weight="1.000" score=""/>
<category hasScore="false" name="Reports" weight="1.000" score=""/>
<category hasScore="false" name="rubic" weight="1.000" score=""/>
<category hasScore="false" name="sketch rough drafts" weight="1.000" score=""/>
</categories>
<course period="5" systemID="1189891699953" name="Advoc 10"/>
<gradingScale>
<cutoffs>
<cutoff Start="50" Name="P"/>
<cutoff Start="0" Name="NP"/>
</cutoffs>
</gradingScale>
<grades>
<grade score="" excused="false" comment="" grade="">
<assignment categoryName="Assignment" maxPoints="10" dueDate="2007-10-01T00:00:00Z" title="Characteristic Inventory Job Qualities" systemID="1193000560544"/>
</grade>
<grade score="" excused="false" comment="" grade="">
<assignment categoryName="Assignment" maxPoints="10" dueDate="2007-10-03T00:00:00Z" title="Goal Setting" systemID="1192516314420"/>
</grade>
<grade score="" excused="false" comment="" grade="">
<assignment categoryName="Assignment" maxPoints="10" dueDate="2007-10-15T00:00:00Z" title="Multipal Intelligences worksheet" systemID="1192516316589"/>
</grade>
</grades>
<student systemID="115602399330" permId="9988423" name="Smith, John" schoolID="9988423"/>
</progressReport>
</progressReports>
</section>
</sections>
</root>
Sample School Loop Roster Download
School Loop rosters and assignments can be optionally downloaded to provide a better automated matching of the assignments. A sample file is provided below:
<root>
<roster source="schoolloop.com">
<teachers>
<teacher systemID="118748545846" localID="e0176447" name="Price, Jacob">
<categories>
<category systemID="1188371331153" name="Assignment"/>
<category systemID="1188371331154" name="Test"/>
<category systemID="1188371331155" name="Homework"/>
</categories>
<courses>
<course systemID="11874574717" name="English IV">
<periods>
<period systemID="11845757862" number="3">
<assignments>
<assignment dueDate="2007-09-27T00:00:00Z" maxPoints="100.0" systemID="1190512808404" categoryName="Homework" title="Essay sample 7-paragraph" categoryID="1188371331155"/>
<assignment dueDate="2008-08-14T00:00:00Z" maxPoints="100.0" systemID="1218657035508" categoryName="Test" title="test tomorrow" categoryID="1188371331154"/>
</assignments>
<students>
<student permID="10810238" systemID="118745854662" gradeLevel="09" firstName="Edward" middleName="D" lastName="Montel" displayID="10810138" localID="10810138" sectionID="0375" sectionSystemID="118457425307"/>
<student permID="10809806" systemID="118745846891" gradeLevel="09" firstName="Richard" middleName="" lastName="Delgado" displayID="10808906" localID="10808906" sectionID="0375" sectionSystemID="118457425307"/>
</students>
</period>
</periods>
</course>
</courses>
</teacher>
</teachers>
</roster>
</root>