184 lines
5.7 KiB
XML
184 lines
5.7 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
|
|
|
<xs:simpleType name="dnoType">
|
|
<xs:restriction base="xs:integer">
|
|
<xs:minInclusive value="1"/>
|
|
<xs:maxInclusive value="50"/>
|
|
</xs:restriction>
|
|
</xs:simpleType>
|
|
|
|
<xs:simpleType name="ssnType">
|
|
<xs:restriction base="xs:string">
|
|
<xs:pattern value="[0-9]{9}"/>
|
|
</xs:restriction>
|
|
</xs:simpleType>
|
|
|
|
<xs:simpleType name="listOfSSNType">
|
|
<xs:list itemType="ssnType"/>
|
|
</xs:simpleType>
|
|
|
|
<xs:simpleType name="pnoType">
|
|
<xs:restriction base="xs:integer">
|
|
<xs:minInclusive value="1"/>
|
|
<xs:maxInclusive value="200"/>
|
|
</xs:restriction>
|
|
</xs:simpleType>
|
|
|
|
<xs:simpleType name="hoursType">
|
|
<xs:restriction base="xs:decimal">
|
|
<xs:totalDigits value="5"/>
|
|
<xs:fractionDigits value="2"/>
|
|
</xs:restriction>
|
|
</xs:simpleType>
|
|
|
|
<xs:simpleType name="listOfPnoType">
|
|
<xs:list itemType="pnoType"/>
|
|
</xs:simpleType>
|
|
|
|
<xs:complexType name="locationsType">
|
|
<xs:sequence>
|
|
<xs:element name="location" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="managerType">
|
|
<xs:sequence>
|
|
<xs:element name="startDate" type="xs:string"/>
|
|
</xs:sequence>
|
|
<xs:attribute name="mssn" type="ssnType"/>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="ssnListType">
|
|
<xs:attribute name="essns" type="listOfSSNType"/>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="pnoListType">
|
|
<xs:attribute name="pnos" type="listOfPnoType"/>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="departmentType">
|
|
<xs:sequence>
|
|
<xs:element name="dname" type="xs:string"/>
|
|
<xs:element name="locations" type="locationsType"/>
|
|
<xs:element name="manager" type="managerType"/>
|
|
<xs:element name="employees" type="ssnListType"/>
|
|
<xs:element name="projectsControlled" type="pnoListType"/>
|
|
</xs:sequence>
|
|
<xs:attribute name="dno" type="dnoType" use="required"/>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="departmentsType">
|
|
<xs:sequence>
|
|
<xs:element name="department" type="departmentType" minOccurs="0" maxOccurs="unbounded"/>
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
|
|
<xs:simpleType name="genderType">
|
|
<xs:restriction base="xs:string">
|
|
<xs:enumeration value="M"/>
|
|
<xs:enumeration value="F"/>
|
|
</xs:restriction>
|
|
</xs:simpleType>
|
|
|
|
<xs:simpleType name="salaryType">
|
|
<xs:restriction base="xs:integer">
|
|
<xs:minInclusive value="1000"/>
|
|
<xs:maxInclusive value="200000"/>
|
|
</xs:restriction>
|
|
</xs:simpleType>
|
|
|
|
<xs:complexType name="dependentsType">
|
|
<xs:sequence>
|
|
<xs:element name="dependent" type="dependentType" minOccurs="1" maxOccurs="unbounded"/>
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="dependentType">
|
|
<xs:sequence>
|
|
<xs:element name="dependentName" type="xs:string"/>
|
|
<xs:element name="sex" type="genderType"/>
|
|
<xs:element name="dob" type="xs:string"/>
|
|
<xs:element name="relationship" type="xs:string"/>
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="prjsType">
|
|
<xs:sequence>
|
|
<xs:element name="worksOn" type="prjType" minOccurs="1" maxOccurs="unbounded"/>
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="prjType">
|
|
<xs:attribute name="pno" type="pnoType" use="required"/>
|
|
<xs:attribute name="hours" type="hoursType" use="required"/>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="employeeType">
|
|
<xs:sequence>
|
|
<xs:element name="fname" type="xs:string"/>
|
|
<xs:element name="minit" type="xs:string"/>
|
|
<xs:element name="lname" type="xs:string"/>
|
|
<xs:element name="dob" type="xs:string"/>
|
|
<xs:element name="address" type="xs:string"/>
|
|
<xs:element name="sex" type="genderType"/>
|
|
<xs:element name="salary" type="salaryType"/>
|
|
<xs:element name="dependents" type="dependentsType" minOccurs="0"/>
|
|
<xs:element name="supervisees" type="ssnListType" minOccurs="0"/>
|
|
<xs:element name="projects" type="prjsType" minOccurs="0"/>
|
|
</xs:sequence>
|
|
<xs:attribute name="ssn" type="ssnType" use="required"/>
|
|
<xs:attribute name="worksFor" type="dnoType" use="required"/>
|
|
<xs:attribute name="supervisor" type="ssnType"/>
|
|
<xs:attribute name="manages" type="dnoType"/>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="employeesType">
|
|
<xs:sequence>
|
|
<xs:element name="employee" type="employeeType" minOccurs="0" maxOccurs="unbounded"/>
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="workersType">
|
|
<xs:sequence>
|
|
<xs:element name="worker" type="workerType" minOccurs="1" maxOccurs="unbounded"/>
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="workerType">
|
|
<xs:simpleContent>
|
|
<xs:extension base="hoursType">
|
|
<xs:attribute name="essn" type="ssnType"/>
|
|
</xs:extension>
|
|
</xs:simpleContent>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="projectType">
|
|
<xs:sequence>
|
|
<xs:element name="pname" type="xs:string"/>
|
|
<xs:element name="plocation" type="xs:string"/>
|
|
<xs:element name="workers" type="workersType" minOccurs="0"/>
|
|
</xs:sequence>
|
|
<xs:attribute name="pnumber" type="pnoType" use="required"/>
|
|
<xs:attribute name="controllingDepartment" type="dnoType" use="required"/>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="projectsType">
|
|
<xs:sequence>
|
|
<xs:element name="project" type="projectType" minOccurs="0" maxOccurs="unbounded"/>
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="companyDBType">
|
|
<xs:sequence>
|
|
<xs:element name="departments" type="departmentsType"/>
|
|
<xs:element name="employees" type="employeesType"/>
|
|
<xs:element name="projects" type="projectsType"/>
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
|
|
<xs:element name="companyDB" type="companyDBType"/>
|
|
|
|
</xs:schema>
|