1 Replies - 385 Views - Last Post: 29 November 2011 - 01:28 PM Rate Topic: -----

Topic Sponsor:

#1 piouson  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 12
  • Joined: 24-November 11

XML Schema help

Posted 29 November 2011 - 03:23 AM

Hi everyone, I just designed an XML Schema, and just want your views if its ok.

1. Course list - The design represents courses in a university.
2. Module list - each course have a fixed list of the modules that make up the course. Also included is the Pre-requisite modules that must be taken before a particular module can be taken.
2. Module enrolment – list of students taking the module.
3. Module results - an optional results field, to distinguish between the current and completed runs of a module, divided into 2:
a. Final Marks, in the range 0 -100.
b. Other possible results, limited to: Medical resit, Resit – for other reasons, Fail – by absense

I'm a total newbie to all these, but here is my work so far :)
Thanks for your comments guys.

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" >

<!-- definition of simple elements -->
<xsd:element name="CourseID" type="xsd:string"/>
<xsd:element name="CourseTitle" type="xsd:string"/>
<xsd:element name="ModuleID" type="xsd:string"/>
<xsd:element name="ModuleTitle" type="xsd:string"/>
<xsd:element name="ModuleType" type="xsd:string"/>
<xsd:element name="StudentID" type="xsd:positiveInteger"/>
<xsd:element name="EntryYr" type="xsd:positiveInteger"/>

<!-- definition of complex elements -->
<xsd:element name="Result">
    <xsd:complexType>
        <xsd:choice>
            <xsd:element name="FinalMark">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:int">
                        <xsd:minInclusive value="0"/>
                        <xsd:maxInclusive value="100"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="OtherResult">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="MedicalResit"/>
                        <xsd:enumeration value="Resit"/>
                        <xsd:enumeration value="Fail"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
        </xsd:choice>
    </xsd:complexType>
</xsd:element>

<xsd:element name="Prerequisite">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element ref="ModuleID"/>
            <xsd:element ref="ModuleTitle"/>
        </xsd:sequence>
            </xsd:complexType>
</xsd:element>

<!-- definition of the schema -->
<!-- composition of courses -->
<xsd:element name="Courses">
    <xsd:complexType>
        <xsd:choice minOccurs="1" maxOccurs="unbounded">
            <xsd:element name="Course">
                <xsd:complexType>
                    <xsd:sequence minOccurs="1" maxOccurs="unbounded">
                        <xsd:element ref="CourseID"/>
                        <xsd:element ref="CourseTitle"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
        </xsd:choice>
    </xsd:complexType>
</xsd:element>

<!-- composition of modules -->
<xsd:element name="Modules">
    <xsd:complexType>
        <xsd:choice minOccurs="1" maxOccurs="unbounded">
            <xsd:element name="Module">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element ref="ModuleID"/>
                        <xsd:element ref="ModuleTitle"/>
                        <xsd:element ref="ModuleType"/>
                        <xsd:element ref="Prerequisite" minOccurs="0" maxOccurs="unbounded"/>
                    </xsd:sequence>
                </xsd:complexType>
                <xsd:key name="PK_Module_ModuleID">
                  <xsd:selector xpath=".//Module"/>
                  <xsd:field xpath="ModuleID"/>
                </xsd:key>
            </xsd:element>
        </xsd:choice>
    </xsd:complexType>
</xsd:element>

<!-- module enrolment information -->
<xsd:element name="ModuleEnrolment">
    <xsd:complexType>
        <xsd:sequence maxOccurs="unbounded">
            <xsd:element name="Enrolment">
                <xsd:complexType>
                    <xsd:sequence maxOccurs="unbounded">
                        <xsd:element ref="StudentID"/>
                        <xsd:element ref="EntryYr"/>
                        <xsd:element ref="Result" minOccurs="0"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>
</xsd:schema>



Is This A Good Question/Topic? 0
  • +

Replies To: XML Schema help

#2 piouson  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 12
  • Joined: 24-November 11

Re: XML Schema help

Posted 29 November 2011 - 01:28 PM

finally got the hang of xml schema and wrote a better one :D

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<!-- definition of simple elements -->
<xs:element name="courseID" type="xs:string"/>
<xs:element name="courseTitle" type="xs:string"/>
<xs:element name="moduleID" type="xs:string"/>
<xs:element name="moduleTitle" type="xs:string"/>
<xs:element name="moduleType" type="xs:string"/>
<xs:element name="studentNo" type="xs:positiveInteger"/>
<xs:element name="entryYr" type="xs:gYear"/>
<!-- end definition of simple elements -->

<!-- definition of complex elements -->
<!-- prerequisite, child element to prerequisites -->
<xs:element name="prerequisite">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="moduleID"/>
            <xs:element ref="moduleTitle"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<!-- prerequisites, child element to module -->
<xs:element name="prerequisites">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="prerequisite" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<!-- result, child element to enrolment -->
<xsd:element name="result" minOccurs="0">
    <xsd:complexType>
        <xsd:choice>
            <xsd:element name="finalMark">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:int">
                        <xsd:minInclusive value="0"/>
                        <xsd:maxInclusive value="100"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="otherResult">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="medicalResit"/>
                        <xsd:enumeration value="resit"/>
                        <xsd:enumeration value="fail"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
        </xsd:choice>
    </xsd:complexType>
</xsd:element>

<!-- enrolment, child element to enrolments -->
<xs:element name="enrolment">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="studentNo"/>
            <xs:element ref="entryYr"/>
            <xs:element ref="result"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<!-- enrolments, child element to module -->
<xs:element name="enrolments">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="enrolment" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<!-- module, child element to modules -->
<xs:element name="module">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="moduleID"/>
            <xs:element ref="moduleTitle"/>
            <xs:element ref="moduleType"/>
            <xs:element ref="prerequisites"/>
            <xs:element ref="enrolments"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<!-- modules, child element to course -->
<xs:element name="modules">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="module" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<!-- course, child element to courses -->
<xs:element name="course">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="courseid"/>
            <xs:element ref="coursetitle"/>
            <xs:element ref="modules"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>
<!-- end of definition of complex element -->

<!-- definition of the main element -->
<xs:element name="courses">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="course" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

</xs:schema>


Was This Post Helpful? 0
  • +
  • -

Page 1 of 1