Got an iPhone or iPad? We have a brand new Pastebin App for both devices, and it's totally free! Click here to download the new Pastebin App for iOS.
Guest

faculty1.xsd

By: a guest on Mar 21st, 2010  |  syntax: XML  |  size: 15.56 KB  |  hits: 42  |  expires: Never
download  |  raw  |  embed  |  report abuse
Copied
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  3.  
  4.   <!-- define a faculty_members element -->
  5.   <xs:element name="faculty_members" type="faculty_members_type"/>
  6.  
  7.   <!-- faculty_members_type -->
  8.   <xs:complexType name="faculty_members_type">
  9.     <xs:sequence>
  10.       <xs:element name="faculty_member" type="faculty_member_type" minOccurs="0" maxOccurs="unbounded"/>
  11.     </xs:sequence>
  12.   </xs:complexType>
  13.  
  14.   <!-- faculty_member_type -->
  15.   <xs:complexType name="faculty_member_type">
  16.     <xs:all>
  17.       <xs:element name="name" type="name_type"/>
  18.       <xs:element name="faculty_types" type="faculty_types_type"/>
  19.       <xs:element name="office" type="location_type"/>
  20.       <xs:element name="email_addresses" type="email_addresses_type"/>
  21.       <xs:element name="websites" type="websites_type" minOccurs="0"/>
  22.       <xs:element name="phone_numbers" type="phone_numbers_type" minOccurs="0"/>
  23.       <xs:element name="research_areas" type="research_areas_type" minOccurs="0"/>
  24.       <xs:element name="degrees" type="degrees_type" minOccurs="0"/>
  25.       <xs:element name="awards" type="awards_type" minOccurs="0"/>
  26.       <xs:element name="office_hours" type="meeting_times_and_places_type" minOccurs="0"/>
  27.       <xs:element name="classes" type="classes_type" minOccurs="0"/>
  28.       <xs:element name="published_books" type="published_books_type" minOccurs="0"/>
  29.       <xs:element name="journal_articles" type="journal_articles_type" minOccurs="0"/>
  30.       <xs:element name="conferences" type="conferences_type" minOccurs="0"/>
  31.       <xs:element name="grad_students" type="grad_students_type" minOccurs="0"/>
  32.     </xs:all>
  33.   </xs:complexType>
  34.  
  35.   <!-- first_name_type -->
  36.   <xs:simpleType name="first_name_type">
  37.     <xs:restriction base="xs:normalizedString">
  38.       <xs:pattern value="[\w'-]+"/>
  39.     </xs:restriction>
  40.   </xs:simpleType>
  41.  
  42.   <!-- last_name_type -->
  43.   <xs:simpleType name="last_name_type">
  44.     <xs:restriction base="xs:normalizedString">
  45.       <xs:pattern value="[\w'-]+"/>
  46.     </xs:restriction>
  47.   </xs:simpleType>
  48.  
  49.   <!-- middle_name_type -->
  50.   <xs:simpleType name="middle_name_type">
  51.     <xs:restriction base="xs:normalizedString">
  52.       <xs:pattern value="[\w'-]+"/>
  53.     </xs:restriction>
  54.   </xs:simpleType>
  55.  
  56.   <!-- name_type -->
  57.   <xs:complexType name="name_type">
  58.     <xs:all>
  59.       <xs:element name="first_name" type="first_name_type"/>
  60.       <xs:element name="middle_name" type="middle_name_type" minOccurs="0"/>
  61.       <xs:element name="last_name" type="last_name_type"/>
  62.     </xs:all>
  63.   </xs:complexType>
  64.  
  65.   <!-- faculty_type_type -->
  66.   <xs:simpleType name="faculty_type_type">
  67.     <xs:restriction base="xs:normalizedString">
  68.       <xs:enumeration value="lecturer"/>
  69.       <xs:enumeration value="professor"/>
  70.       <xs:enumeration value="researcher"/>
  71.       <xs:enumeration value="adjunct"/>
  72.       <xs:enumeration value="associate"/>
  73.       <xs:enumeration value="assistant"/>
  74.       <xs:enumeration value="visiting"/>
  75.     </xs:restriction>
  76.   </xs:simpleType>
  77.  
  78.   <!-- faculty_types_type -->
  79.   <xs:complexType name="faculty_types_type">
  80.     <xs:sequence>
  81.       <xs:element name="faculty_type" type="faculty_type_type" minOccurs="1" maxOccurs="unbounded"/>
  82.     </xs:sequence>
  83.   </xs:complexType>
  84.  
  85.   <!-- building_abbreviation_type -->
  86.   <xs:simpleType name="building_abbreviation_type">
  87.     <xs:restriction base="xs:normalizedString">
  88.       <xs:pattern value="[A-Z]{2,5}" />
  89.     </xs:restriction>
  90.   </xs:simpleType>
  91.  
  92.   <!-- building_type -->
  93.   <xs:complexType name="building_type">
  94.     <xs:all>
  95.       <xs:element name="abbreviation" type="building_abbreviation_type"/>
  96.       <xs:element name="long_name" type="xs:normalizedString"/>
  97.     </xs:all>
  98.   </xs:complexType>
  99.  
  100.   <!-- room_type -->
  101.   <xs:simpleType name="room_type">
  102.     <xs:restriction base="xs:normalizedString">
  103.       <!-- TODO: we could add some restrictions here -->
  104.     </xs:restriction>
  105.   </xs:simpleType>
  106.  
  107.   <!-- location_type -->
  108.   <xs:complexType name="location_type">
  109.     <xs:all>
  110.       <xs:element name="building" type="building_type" />
  111.       <xs:element name="room" type="room_type" />
  112.     </xs:all>
  113.   </xs:complexType>
  114.  
  115.   <!-- email_type -->
  116.   <xs:simpleType name="email_type">
  117.     <xs:restriction base="xs:normalizedString">
  118.       <!-- pattern is taken and modified from the example at http://www.regular-expressions.info/email.html -->
  119.       <xs:pattern value="[a-z0-9!#$%&amp;'*+/=?^_`{|}~-]+(\.[a-z0-9!#$%&amp;'*+/=?^_`{|}~-]+)*@([a-z0-9]([a-z0-9-]*[a-z0-9])?\.)+([A-Za-z]{2}|edu|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum|arpa|asia|cat|coop|int|pro|tel|travel)"/>
  120.     </xs:restriction>
  121.   </xs:simpleType>
  122.  
  123.   <!-- email_addresses_type -->
  124.   <xs:complexType name="email_addresses_type">
  125.     <xs:sequence>
  126.       <xs:element name="email" type="email_type" minOccurs="1" maxOccurs="unbounded"/>
  127.     </xs:sequence>
  128.   </xs:complexType>
  129.  
  130.   <!-- website_type -->
  131.   <!--  NOTE: this might be too restrictive. Are there any other ways to specify a webpage?  -->
  132.   <xs:simpleType name="website_type">
  133.     <xs:restriction base="xs:anyURI">
  134.       <xs:pattern value="http://.*|https://.*|shttp://.*"/>
  135.     </xs:restriction>
  136.   </xs:simpleType>
  137.  
  138.   <!-- websites_type -->
  139.   <xs:complexType name="websites_type">
  140.     <xs:sequence>
  141.       <xs:element name="website" type="website_type" minOccurs="0" maxOccurs="unbounded"/>
  142.     </xs:sequence>
  143.   </xs:complexType>
  144.  
  145.   <!-- country_code_type -->
  146.   <xs:simpleType name="country_code_type">
  147.     <xs:restriction base="xs:normalizedString">
  148.       <xs:pattern value="\d|\d\d|\d\d\d"/>
  149.     </xs:restriction>
  150.   </xs:simpleType>
  151.  
  152.   <!-- area_code_type -->
  153.   <xs:simpleType name="area_code_type">
  154.     <xs:restriction base="xs:normalizedString">
  155.       <xs:pattern value="\d\d\d"/>
  156.     </xs:restriction>
  157.   </xs:simpleType>
  158.  
  159.   <!-- number_type -->
  160.   <xs:simpleType name="number_type">
  161.     <xs:restriction base="xs:normalizedString">
  162.       <xs:pattern value="\d+"/>
  163.     </xs:restriction>
  164.   </xs:simpleType>
  165.  
  166.   <!-- phone_type_type -->
  167.   <xs:simpleType name="phone_type_type">
  168.     <xs:restriction base="xs:normalizedString">
  169.       <xs:enumeration value="home"/>
  170.       <xs:enumeration value="work"/>
  171.       <xs:enumeration value="cell"/>
  172.       <xs:enumeration value="fax"/>
  173.       <xs:enumeration value="pager"/>
  174.     </xs:restriction>
  175.   </xs:simpleType>
  176.  
  177.   <!-- phone_number_type -->
  178.   <xs:complexType name="phone_number_type">
  179.     <xs:all>
  180.       <xs:element name="phone_type" type="phone_type_type"/>
  181.       <xs:element name="country_code" type="country_code_type" minOccurs="0"/>
  182.       <xs:element name="area_code" type="area_code_type" minOccurs="0"/>
  183.       <xs:element name="number" type="number_type"/>
  184.     </xs:all>
  185.   </xs:complexType>
  186.  
  187.   <!-- phone_numbers_type -->
  188.   <xs:complexType name="phone_numbers_type">
  189.     <xs:sequence>
  190.       <xs:element name="phone_number" type="phone_number_type" minOccurs="0" maxOccurs="unbounded"/>
  191.     </xs:sequence>
  192.   </xs:complexType>
  193.  
  194.   <!-- research_area_type -->
  195.   <xs:simpleType name="research_area_type">
  196.     <xs:restriction base="xs:normalizedString">
  197.     </xs:restriction>
  198.   </xs:simpleType>
  199.  
  200.   <!-- research_areas_type -->
  201.   <xs:complexType name="research_areas_type">
  202.     <xs:sequence>
  203.       <xs:element name="research_area" type="research_area_type" minOccurs="0" maxOccurs="unbounded"/>
  204.     </xs:sequence>
  205.   </xs:complexType>
  206.  
  207.   <!-- degree_type_type -->
  208.   <xs:simpleType name="degree_type_type">
  209.     <xs:restriction base="xs:normalizedString">
  210.       <xs:enumeration value="Certificate of Completion"/>
  211.       <xs:enumeration value="Associate's Degree"/>
  212.       <xs:enumeration value="Bachelor's Degree"/>
  213.       <xs:enumeration value="Master's Degree"/>
  214.       <xs:enumeration value="Doctoral Degree"/>
  215.       <xs:enumeration value="Honorary Degree"/>
  216.     </xs:restriction>
  217.   </xs:simpleType>
  218.  
  219.   <!-- degree_type -->
  220.   <xs:complexType name="degree_type">
  221.     <xs:all>
  222.       <xs:element name="year_awarded" type="xs:gYear" />
  223.       <xs:element name="institution" type="xs:normalizedString" />
  224.       <xs:element name="degree_type" type="degree_type_type" />
  225.       <xs:element name="specialization" type="xs:normalizedString"/>
  226.     </xs:all>
  227.   </xs:complexType>
  228.  
  229.   <!-- degrees_type -->
  230.   <xs:complexType name="degrees_type">
  231.     <xs:sequence>
  232.       <xs:element name="degree" type="degree_type" minOccurs="0" maxOccurs="unbounded"/>
  233.     </xs:sequence>
  234.   </xs:complexType>
  235.  
  236.   <!-- award_type -->
  237.   <xs:complexType name="award_type">
  238.     <xs:all>
  239.       <xs:element name="name" type="xs:normalizedString" />
  240.       <xs:element name="year_awarded" type="xs:gYear" />
  241.     </xs:all>
  242.   </xs:complexType>
  243.  
  244.   <!-- awards_type -->
  245.   <xs:complexType name="awards_type">
  246.     <xs:sequence>
  247.       <xs:element name="award" type="award_type" minOccurs="0" maxOccurs="unbounded"/>
  248.     </xs:sequence>
  249.   </xs:complexType>
  250.  
  251.   <!-- day_type -->
  252.   <xs:simpleType name="day_type">
  253.     <xs:restriction base="xs:normalizedString">
  254.       <xs:enumeration value="Monday"/>
  255.       <xs:enumeration value="Tuesday"/>
  256.       <xs:enumeration value="Wednesday"/>
  257.       <xs:enumeration value="Thursday"/>
  258.       <xs:enumeration value="Friday"/>
  259.           <xs:enumeration value="Saturday"/>
  260.           <xs:enumeration value="Sunday"/>
  261.     </xs:restriction>
  262.   </xs:simpleType>
  263.    
  264.   <!-- days_type -->
  265.   <xs:complexType name="days_type">
  266.     <xs:sequence>
  267.       <!-- TODO: it would be nice to find a way to make it so that each day is different -->
  268.       <xs:element name="day" type="day_type" maxOccurs="7"/>
  269.     </xs:sequence>
  270.   </xs:complexType>
  271.  
  272.   <!-- meeting_time_and_place_type -->
  273.   <xs:complexType name="meeting_time_and_place_type">
  274.     <xs:all>
  275.       <xs:element name="start_time" type="xs:time" />
  276.       <xs:element name="end_time" type="xs:time" />
  277.       <xs:element name="location" type="location_type" />
  278.       <xs:element name="days" type="days_type" />
  279.     </xs:all>
  280.   </xs:complexType>
  281.  
  282.   <!-- meeting_times_and_places_type -->
  283.   <xs:complexType name="meeting_times_and_places_type">
  284.     <xs:sequence>
  285.       <xs:element name="meeting_time_and_place" type="meeting_time_and_place_type" minOccurs="0" maxOccurs="unbounded"/>
  286.     </xs:sequence>
  287.   </xs:complexType>
  288.  
  289.   <!-- names_type -->
  290.   <xs:complexType name="names_type">
  291.     <xs:sequence>
  292.       <xs:element name="name" type="name_type" minOccurs="0" maxOccurs="unbounded"/>
  293.     </xs:sequence>
  294.   </xs:complexType>
  295.  
  296.   <!-- year_type -->
  297.   <xs:simpleType name="year_type">
  298.     <xs:restriction base="xs:normalizedString">
  299.       <xs:pattern value="\d\d\d\d"/>
  300.     </xs:restriction>
  301.   </xs:simpleType>
  302.  
  303.   <!-- unique_number_type -->
  304.   <xs:simpleType name="unique_number_type">
  305.     <xs:restriction base="xs:normalizedString">
  306.       <xs:pattern value="\d\d\d\d\d"/>
  307.     </xs:restriction>
  308.   </xs:simpleType>
  309.  
  310.   <!-- semester_type -->
  311.   <xs:simpleType name="semester_type">
  312.     <xs:restriction base="xs:normalizedString">
  313.       <xs:enumeration value="fall"/>
  314.       <xs:enumeration value="spring"/>
  315.       <xs:enumeration value="summer"/>
  316.     </xs:restriction>
  317.   </xs:simpleType>
  318.    
  319.   <!-- field_of_study_type -->
  320.   <xs:simpleType name="field_of_study_type">
  321.     <xs:restriction base="xs:normalizedString">
  322.       <xs:pattern value="[A-Z]{1,3}"/>
  323.     </xs:restriction>
  324.   </xs:simpleType>
  325.  
  326.   <!-- level_type -->
  327.   <xs:simpleType name="level_type">
  328.     <xs:restriction base="xs:normalizedString">
  329.       <xs:enumeration value="undergrad"/>
  330.       <xs:enumeration value="grad"/>
  331.     </xs:restriction>
  332.   </xs:simpleType>
  333.  
  334.   <!-- course_type -->
  335.   <xs:complexType name="course_type">
  336.     <xs:all>
  337.       <xs:element name="title" type="xs:normalizedString" />
  338.           <xs:element name="field_of_study" type="field_of_study_type" />
  339.       <xs:element name="number" type="xs:normalizedString"/>
  340.           <xs:element name="level" type="level_type"/>
  341.           <xs:element name="description" type="xs:normalizedString" />
  342.     </xs:all>
  343.   </xs:complexType>
  344.  
  345.   <!-- class_type -->
  346.   <xs:complexType name="class_type">
  347.     <xs:all>
  348.       <xs:element name="unique_number" type="unique_number_type" />
  349.       <xs:element name="course" type="course_type" />
  350.       <xs:element name="semester" type="semester_type" />
  351.       <xs:element name="year" type="year_type" />
  352.       <xs:element name="meeting_times_and_places" type="meeting_times_and_places_type"/>
  353.     </xs:all>
  354.   </xs:complexType>
  355.  
  356.   <!-- classes_type -->
  357.   <xs:complexType name="classes_type">
  358.     <xs:sequence>
  359.       <xs:element name="class" type="class_type" minOccurs="0" maxOccurs="unbounded"/>
  360.     </xs:sequence>
  361.   </xs:complexType>
  362.  
  363.   <!-- ISBN_type -->
  364.   <xs:simpleType name="ISBN_type">
  365.     <xs:restriction base="xs:normalizedString">
  366.       <!-- NOTE: ISBN numbers can be either 10 or 13 digit versions,
  367.      and both versions can have "X" or a numeric digit as the last 'digit' -->
  368.       <xs:pattern value="(\d\d\d)?\d\d\d\d\d\d\d\d\d[X0123456789]"/>
  369.     </xs:restriction>
  370.   </xs:simpleType>
  371.  
  372.   <!-- book_type -->
  373.   <xs:complexType name="book_type">
  374.     <xs:all>
  375.       <xs:element name="ISBN" type="ISBN_type" />
  376.       <xs:element name="title" type="xs:normalizedString" />
  377.       <xs:element name="publisher" type="xs:normalizedString" />
  378.       <xs:element name="year_published" type="xs:gYear" />
  379.     </xs:all>
  380.   </xs:complexType>
  381.  
  382.   <!-- published_books_type -->
  383.   <xs:complexType name="published_books_type">
  384.     <xs:sequence>
  385.       <xs:element name="book" type="book_type" minOccurs="0" maxOccurs="unbounded"/>
  386.     </xs:sequence>
  387.   </xs:complexType>
  388.  
  389.   <!-- article_type -->
  390.   <xs:complexType name="article_type">
  391.     <xs:all>
  392.       <xs:element name="journal" type="xs:normalizedString" />
  393.       <xs:element name="title" type="xs:normalizedString" />
  394.       <xs:element name="issue_date" type="xs:gYearMonth" />
  395.           <xs:element name="issue_number" type="xs:normalizedString" />
  396.     </xs:all>
  397.   </xs:complexType>
  398.  
  399.   <!-- journal_articles_type -->
  400.   <xs:complexType name="journal_articles_type">
  401.     <xs:sequence>
  402.       <xs:element name="article" type="article_type" minOccurs="0" maxOccurs="unbounded"/>
  403.     </xs:sequence>
  404.   </xs:complexType>
  405.  
  406.   <!-- conference_type -->
  407.   <xs:complexType name="conference_type">
  408.     <xs:all>
  409.       <xs:element name="year" type="xs:gYear" />
  410.       <xs:element name="name" type="xs:string" />
  411.       <xs:element name="location" type="xs:string" />
  412.       <xs:element name="presentation_title" type="xs:string" />
  413.     </xs:all>
  414.   </xs:complexType>
  415.  
  416.   <!-- conferences_type -->
  417.   <xs:complexType name="conferences_type">
  418.     <xs:sequence>
  419.       <xs:element name="conference" type="conference_type" minOccurs="0" maxOccurs="unbounded"/>
  420.     </xs:sequence>
  421.   </xs:complexType>
  422.  
  423.   <!-- grad_student_type -->
  424.   <xs:complexType name="grad_student_type">
  425.     <xs:all>
  426.       <xs:element name="name" type="name_type" />
  427.       <xs:element name="type" type="grad_degree_type" />
  428.       <xs:element name="thesis_title" type="xs:normalizedString" />
  429.       <xs:element name="thesis_date" type="xs:gYearMonth" />
  430.     </xs:all>
  431.   </xs:complexType>
  432.  
  433.   <!-- grad_students_type -->
  434.   <xs:complexType name="grad_students_type">
  435.     <xs:sequence>
  436.       <xs:element name="grad_student" type="grad_student_type" minOccurs="0" maxOccurs="unbounded"/>
  437.     </xs:sequence>
  438.   </xs:complexType>
  439.    
  440.   <!-- grad_degree_type -->
  441.   <xs:simpleType name="grad_degree_type">
  442.     <xs:restriction base="xs:normalizedString">
  443.       <xs:enumeration value="Master's Degree"/>
  444.       <xs:enumeration value="Doctoral Degree"/>
  445.     </xs:restriction>
  446.   </xs:simpleType>
  447. </xs:schema>