Vince42

Freelancer Profile XSD

Jan 16th, 2018
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
XML 12.96 KB | None | 0 0
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- Add restrictions to more values (date of birth, zip code, mobile, e-mail, web site) -->
  3. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  4.  
  5.     <xs:element name="profile">
  6.     <xs:complexType>
  7.       <xs:sequence>
  8.         <xs:element ref="label"/>
  9.         <xs:element ref="person"/>
  10.         <xs:element ref="networks"/>
  11.         <xs:element ref="educations"/>
  12.         <xs:element ref="occupations"/>
  13.         <xs:element ref="domains"/>
  14.         <xs:element ref="systems"/>
  15.         <xs:element ref="languages"/>
  16.         <xs:element ref="databases"/>
  17.         <xs:element ref="interfaces"/>
  18.         <xs:element ref="standards"/>
  19.         <xs:element ref="applications"/>
  20.         <xs:element ref="servers"/>
  21.         <xs:element ref="projects"/>
  22.         <xs:element ref="translations"/>
  23.       </xs:sequence>
  24.     </xs:complexType>
  25.   </xs:element>
  26.  
  27.   <!-- Person -->
  28.   <xs:element name="person">
  29.     <xs:complexType>
  30.       <xs:sequence>
  31.         <xs:element ref="label"/>
  32.         <xs:element name="picture" type="xs:anyURI"/>
  33.         <xs:element ref="name"/>
  34.         <xs:element ref="summary"/>
  35.         <xs:element name="date-of-birth" type="dateAttributed"/>
  36.         <xs:element name="nationality" type="i18nAttributed"/>
  37.         <xs:element ref="address"/>
  38.         <xs:element ref="contact"/>
  39.         <xs:element ref="languages"/>
  40.       </xs:sequence>
  41.     </xs:complexType>
  42.   </xs:element>
  43.  
  44.   <xs:element name="name">
  45.     <xs:complexType>
  46.       <xs:sequence>
  47.         <xs:element name="lastname" type="xs:string"/>
  48.         <xs:element name="firstname" type="xs:string"/>
  49.       </xs:sequence>
  50.       <xs:attributeGroup ref="label"/>
  51.     </xs:complexType>
  52.   </xs:element>
  53.  
  54.   <xs:element name="address">
  55.     <xs:complexType>
  56.       <xs:sequence>
  57.         <xs:element name="street" type="xs:string"/>
  58.         <xs:element name="zip" type="xs:integer"/>
  59.         <xs:element name="city" type="xs:string"/>
  60.         <xs:element name="country" type="i18nType"/>
  61.       </xs:sequence>
  62.       <xs:attributeGroup ref="label"/>
  63.     </xs:complexType>
  64.   </xs:element>
  65.  
  66.   <xs:element name="contact">
  67.     <xs:complexType>
  68.       <xs:sequence>
  69.         <xs:element name="mobile" type="stringAttributed"/>
  70.         <xs:element name="e-mail" type="stringAttributed"/>
  71.         <xs:element name="web-site" type="uriAttributed"/>
  72.       </xs:sequence>
  73.     </xs:complexType>
  74.   </xs:element>
  75.  
  76.   <!-- Networks -->
  77.   <xs:element name="networks">
  78.     <xs:complexType>
  79.       <xs:sequence>
  80.         <xs:element ref="label"/>
  81.         <xs:element maxOccurs="unbounded" ref="network"/>
  82.       </xs:sequence>
  83.     </xs:complexType>
  84.   </xs:element>
  85.  
  86.   <xs:element name="network">
  87.     <xs:complexType>
  88.       <xs:sequence>
  89.         <xs:element name="name" type="xs:string"/>
  90.         <xs:element minOccurs="0" ref="id"/>
  91.         <xs:element ref="uri"/>
  92.       </xs:sequence>
  93.     </xs:complexType>
  94.   </xs:element>
  95.   <xs:element name="id" type="xs:integer"/>
  96.   <xs:element name="uri" type="xs:anyURI"/>
  97.  
  98.   <!-- Educations -->
  99.   <xs:element name="educations">
  100.     <xs:complexType>
  101.       <xs:sequence>
  102.         <xs:element ref="label"/>
  103.         <xs:element maxOccurs="unbounded" ref="education"/>
  104.       </xs:sequence>
  105.     </xs:complexType>
  106.   </xs:element>
  107.  
  108.   <xs:element name="education">
  109.     <xs:complexType>
  110.       <xs:sequence>
  111.         <xs:element name="institution" type="i18nType"/>
  112.         <xs:element minOccurs="0" name="city" type="xs:string"/>
  113.         <xs:element name="degree" type="i18nType"/>
  114.         <xs:element ref="since"/>
  115.       </xs:sequence>
  116.     </xs:complexType>
  117.   </xs:element>
  118.  
  119.   <!-- Occupations -->
  120.   <xs:element name="occupations">
  121.     <xs:complexType>
  122.       <xs:sequence>
  123.         <xs:element ref="label"/>
  124.         <xs:element maxOccurs="unbounded" ref="occupation"/>
  125.       </xs:sequence>
  126.     </xs:complexType>
  127.   </xs:element>
  128.  
  129.   <xs:element name="occupation">
  130.     <xs:complexType>
  131.       <xs:sequence>
  132.         <xs:element name="subject" type="i18nType"/>
  133.         <xs:element minOccurs="0" name="company" type="xs:string"/>
  134.         <xs:element minOccurs="0" name="position" type="i18nType"/>
  135.         <xs:element ref="since"/>
  136.       </xs:sequence>
  137.     </xs:complexType>
  138.   </xs:element>
  139.  
  140.   <!-- Domains -->
  141.   <xs:element name="domains">
  142.     <xs:complexType>
  143.       <xs:sequence>
  144.         <xs:element ref="label"/>
  145.         <xs:element maxOccurs="unbounded" ref="domain"/>
  146.       </xs:sequence>
  147.     </xs:complexType>
  148.   </xs:element>
  149.  
  150.   <xs:element name="domain">
  151.     <xs:complexType>
  152.       <xs:sequence>
  153.         <xs:element name="name" type="i18nType"/>
  154.         <xs:element minOccurs="0" ref="level"/>
  155.       </xs:sequence>
  156.     </xs:complexType>
  157.   </xs:element>
  158.  
  159.   <!-- Systems -->
  160.   <xs:element name="systems">
  161.     <xs:complexType>
  162.       <xs:sequence>
  163.         <xs:element ref="label"/>
  164.         <xs:element maxOccurs="unbounded" ref="system"/>
  165.       </xs:sequence>
  166.     </xs:complexType>
  167.   </xs:element>
  168.  
  169.   <xs:element name="system">
  170.     <xs:complexType>
  171.       <xs:sequence>
  172.         <xs:element name="name" type="xs:string"/>
  173.         <xs:element ref="level"/>
  174.         <xs:element minOccurs="0" ref="since"/>
  175.       </xs:sequence>
  176.     </xs:complexType>
  177.   </xs:element>
  178.  
  179.   <!-- Databases -->
  180.   <xs:element name="databases">
  181.     <xs:complexType>
  182.       <xs:sequence>
  183.         <xs:element ref="label"/>
  184.         <xs:element maxOccurs="unbounded" ref="database"/>
  185.       </xs:sequence>
  186.     </xs:complexType>
  187.   </xs:element>
  188.  
  189.   <xs:element name="database">
  190.     <xs:complexType>
  191.       <xs:sequence>
  192.         <xs:element name="name" type="xs:string"/>
  193.         <xs:element ref="level"/>
  194.         <xs:element minOccurs="0" ref="since"/>
  195.       </xs:sequence>
  196.     </xs:complexType>
  197.   </xs:element>
  198.  
  199.   <!-- Interfaces -->
  200.   <xs:element name="interfaces">
  201.     <xs:complexType>
  202.       <xs:sequence>
  203.         <xs:element ref="label"/>
  204.         <xs:element maxOccurs="unbounded" ref="interface"/>
  205.       </xs:sequence>
  206.     </xs:complexType>
  207.   </xs:element>
  208.  
  209.   <xs:element name="interface">
  210.     <xs:complexType>
  211.       <xs:sequence>
  212.         <xs:element name="name" type="xs:string"/>
  213.         <xs:element minOccurs="0" ref="level"/>
  214.       </xs:sequence>
  215.     </xs:complexType>
  216.   </xs:element>
  217.  
  218.   <!-- Standards -->
  219.   <xs:element name="standards">
  220.     <xs:complexType>
  221.       <xs:sequence>
  222.         <xs:element ref="label"/>
  223.         <xs:element maxOccurs="unbounded" ref="standard"/>
  224.       </xs:sequence>
  225.     </xs:complexType>
  226.   </xs:element>
  227.  
  228.   <xs:element name="standard">
  229.     <xs:complexType>
  230.       <xs:sequence>
  231.         <xs:element name="name" type="xs:string"/>
  232.         <xs:element minOccurs="0" ref="level"/>
  233.       </xs:sequence>
  234.     </xs:complexType>
  235.   </xs:element>
  236.  
  237.   <!-- Applications -->
  238.   <xs:element name="applications">
  239.     <xs:complexType>
  240.       <xs:sequence>
  241.         <xs:element ref="label"/>
  242.         <xs:element maxOccurs="unbounded" ref="application"/>
  243.       </xs:sequence>
  244.     </xs:complexType>
  245.   </xs:element>
  246.  
  247.   <xs:element name="application">
  248.     <xs:complexType>
  249.       <xs:sequence>
  250.         <xs:element name="name" type="xs:string"/>
  251.         <xs:element ref="level"/>
  252.         <xs:element minOccurs="0" ref="since"/>
  253.         <xs:element minOccurs="0" name="with" type="xs:string"/>
  254.       </xs:sequence>
  255.     </xs:complexType>
  256.   </xs:element>
  257.  
  258.   <!-- Servers -->
  259.   <xs:element name="servers">
  260.     <xs:complexType>
  261.       <xs:sequence>
  262.         <xs:element ref="label"/>
  263.         <xs:element maxOccurs="unbounded" ref="server"/>
  264.       </xs:sequence>
  265.     </xs:complexType>
  266.   </xs:element>
  267.  
  268.   <xs:element name="server">
  269.     <xs:complexType>
  270.       <xs:sequence>
  271.         <xs:element name="name"/>
  272.         <xs:element ref="level"/>
  273.       </xs:sequence>
  274.     </xs:complexType>
  275.   </xs:element>
  276.  
  277.   <!-- Projects -->
  278.   <xs:element name="projects">
  279.     <xs:complexType>
  280.       <xs:sequence>
  281.         <xs:element ref="label"/>
  282.         <xs:element maxOccurs="unbounded" ref="project"/>
  283.       </xs:sequence>
  284.     </xs:complexType>
  285.   </xs:element>
  286.  
  287.   <xs:element name="project">
  288.     <xs:complexType>
  289.       <xs:sequence>
  290.         <xs:element name="name" type="xs:string"/>
  291.         <xs:element name="sector" type="i18nType"/>
  292.         <xs:element ref="duration"/>
  293.         <xs:element name="workload" type="i18nType"/>
  294.         <xs:element name="summary" type="i18nType"/>
  295.         <xs:element minOccurs="0" ref="tasks"/>
  296.         <xs:element minOccurs="0" name="backends" type="xs:string"/>
  297.         <xs:element minOccurs="0" name="frontends" type="xs:string"/>
  298.         <xs:element minOccurs="0" name="languages" type="xs:string"/>
  299.         <xs:element minOccurs="0" name="tools" type="xs:string"/>
  300.         <xs:element minOccurs="0" name="interfaces" type="xs:string"/>
  301.         <xs:element minOccurs="0" name="systems" type="xs:string"/>
  302.         <xs:element minOccurs="0" ref="references"/>
  303.       </xs:sequence>
  304.     </xs:complexType>
  305.   </xs:element>
  306.  
  307.   <xs:element name="duration">
  308.     <xs:complexType>
  309.       <xs:sequence>
  310.         <xs:element name="start" type="xs:NMTOKEN"/>
  311.         <xs:element name="end" type="xs:NMTOKEN"/>
  312.       </xs:sequence>
  313.     </xs:complexType>
  314.   </xs:element>
  315.  
  316.   <xs:element name="tasks">
  317.     <xs:complexType>
  318.       <xs:sequence>
  319.         <xs:element maxOccurs="unbounded" name="task" type="i18nType"/>
  320.       </xs:sequence>
  321.     </xs:complexType>
  322.   </xs:element>
  323.  
  324.   <xs:element name="references">
  325.     <xs:complexType>
  326.       <xs:sequence>
  327.         <xs:element maxOccurs="unbounded" ref="reference"/>
  328.       </xs:sequence>
  329.     </xs:complexType>
  330.   </xs:element>
  331.  
  332.   <xs:element name="reference">
  333.     <xs:complexType>
  334.       <xs:sequence>
  335.         <xs:element name="name" type="xs:string"/>
  336.         <xs:element name="e-mail" type="xs:string"/>
  337.       </xs:sequence>
  338.     </xs:complexType>
  339.   </xs:element>
  340.  
  341.   <!-- Translations -->
  342.   <xs:element name="translations">
  343.     <xs:complexType>
  344.       <xs:sequence>
  345.         <xs:element maxOccurs="unbounded" name="translation">
  346.           <xs:complexType>
  347.             <xs:attribute name="name" type="xs:string"/>
  348.             <xs:attribute name="de" type="xs:string"/>
  349.             <xs:attribute name="en" type="xs:string"/>
  350.           </xs:complexType>
  351.         </xs:element>
  352.       </xs:sequence>
  353.     </xs:complexType>
  354.   </xs:element>
  355.  
  356.   <!-- General types -->
  357.  
  358.   <xs:complexType name="dateAttributed">
  359.     <xs:simpleContent>
  360.       <xs:extension base="xs:date">
  361.         <xs:attributeGroup ref="label"/>
  362.       </xs:extension>
  363.     </xs:simpleContent>
  364.   </xs:complexType>
  365.  
  366.   <xs:complexType name="stringAttributed">
  367.     <xs:simpleContent>
  368.       <xs:extension base="xs:string">
  369.         <xs:attributeGroup ref="label"/>
  370.       </xs:extension>
  371.     </xs:simpleContent>
  372.   </xs:complexType>
  373.  
  374.   <xs:complexType name="uriAttributed">
  375.     <xs:simpleContent>
  376.       <xs:extension base="xs:anyURI">
  377.         <xs:attributeGroup ref="label"/>
  378.       </xs:extension>
  379.     </xs:simpleContent>
  380.   </xs:complexType>
  381.  
  382.   <xs:complexType name="i18nAttributed">
  383.     <xs:complexContent>
  384.       <xs:extension base="i18nType">
  385.         <xs:attributeGroup ref="label"/>
  386.       </xs:extension>
  387.     </xs:complexContent>
  388.   </xs:complexType>
  389.  
  390.   <xs:complexType name="i18nType" mixed="true">
  391.     <xs:sequence>
  392.       <xs:element minOccurs="0" name="de" type="xs:string"/>
  393.       <xs:element minOccurs="0" name="en" type="xs:string"/>
  394.     </xs:sequence>
  395.   </xs:complexType>
  396.  
  397.  
  398.   <!-- Referenced types and elements -->
  399.  
  400.   <xs:attributeGroup name="label">
  401.     <xs:attribute name="label" type="xs:string"/>
  402.     <xs:attribute name="label-de" type="xs:string"/>
  403.     <xs:attribute name="label-en" type="xs:string"/>
  404.   </xs:attributeGroup>
  405.  
  406.   <xs:element name="label" type="i18nType"/>
  407.   <xs:element name="summary" type="i18nType"/>
  408.  
  409.   <!-- Languages -->
  410.   <xs:element name="languages">
  411.     <xs:complexType mixed="true">
  412.       <xs:sequence>
  413.         <xs:element ref="label"/>
  414.         <xs:element maxOccurs="unbounded" ref="language"/>
  415.       </xs:sequence>
  416.     </xs:complexType>
  417.   </xs:element>
  418.  
  419.   <xs:element name="language">
  420.     <xs:complexType>
  421.       <xs:sequence>
  422.         <xs:element name="name" type="i18nType"/>
  423.         <xs:element ref="level"/>
  424.         <xs:element minOccurs="0" ref="since"/>
  425.         <xs:element minOccurs="0" name="with" type="i18nType"/>
  426.       </xs:sequence>
  427.     </xs:complexType>
  428.   </xs:element>
  429.  
  430.   <xs:element name="level">
  431.     <xs:simpleType>
  432.       <xs:restriction base="xs:string">
  433.         <xs:enumeration value="+++"/>
  434.         <xs:enumeration value="++"/>
  435.         <xs:enumeration value="+"/>
  436.       </xs:restriction>
  437.     </xs:simpleType>
  438.   </xs:element>
  439.  
  440.   <xs:element name="since">
  441.     <xs:complexType>
  442.       <xs:sequence>
  443.         <xs:element minOccurs="0" name="version" type="xs:string"/>
  444.         <xs:element minOccurs="0" name="year" type="xs:string"/>
  445.       </xs:sequence>
  446.     </xs:complexType>
  447.   </xs:element>
  448.  
  449. </xs:schema>
Add Comment
Please, Sign In to add comment