Skip to content

Instantly share code, notes, and snippets.

@truelecter
Created June 10, 2017 16:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save truelecter/ac22910b38f89e7012ee4c9a1652d4da to your computer and use it in GitHub Desktop.
Save truelecter/ac22910b38f89e7012ee4c9a1652d4da to your computer and use it in GitHub Desktop.
lab4
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="height">
<xs:restriction base="xs:positiveInteger">
<xs:minInclusive value="55"/>
<xs:maxInclusive value="280"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="eyeColor">
<xs:restriction base="xs:string">
<xs:enumeration value="amber"/>
<xs:enumeration value="blue"/>
<xs:enumeration value="brown"/>
<xs:enumeration value="gray"/>
<xs:enumeration value="green"/>
<xs:enumeration value="hazel"/>
<xs:enumeration value="red"/>
<xs:enumeration value="violet"/>
<!--And so on-->
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="hairColor">
<xs:restriction base="xs:string">
<xs:enumeration value="black"/>
<xs:enumeration value="brown"/>
<xs:enumeration value="blond"/>
<xs:enumeration value="auburn"/>
<xs:enumeration value="red"/>
<xs:enumeration value="gray"/>
<xs:enumeration value="white"/>
<!--And so on-->
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="marriageStatus">
<xs:restriction base="xs:string">
<xs:enumeration value="past"/>
<xs:enumeration value="present"/>
<xs:enumeration value="future"/>
</xs:restriction>
<!-- TODO normal names-->
</xs:simpleType>
<xs:simpleType name="email">
<xs:restriction base="xs:string">
<!--http://emailregex.com/-->
<xs:pattern value=".*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="name">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:complexType name="baseHusband" abstract="true">
<xs:sequence>
<xs:element name="name" type="name" minOccurs="1"/>
<xs:element name="email" type="email"/>
<xs:element name="height" type="height"/>
<xs:element name="eye" type="eyeColor"/>
<xs:element name="hair" type="hairColor"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="presentHusband">
<xs:complexContent>
<xs:extension base="baseHusband">
<xs:sequence>
<xs:element name="status" type="xs:token" fixed="present"/>
<xs:element name="marriageDate" type="xs:date"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="pastHusband">
<xs:complexContent>
<xs:extension base="baseHusband">
<xs:sequence>
<xs:element name="status" type="xs:token" fixed="past"/>
<xs:element name="marriageDate" type="xs:date"/>
<xs:element name="divorceDate" type="xs:date"/>
<xs:element name="divorceReason" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="futureHusband">
<xs:complexContent>
<xs:extension base="baseHusband">
<xs:sequence>
<xs:element name="status" type="xs:token" fixed="future"/>
<xs:element name="marriageProbability" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="100"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="husbands" >
<xs:complexType>
<xs:sequence>
<xs:element name="husband" type="baseHusband" maxOccurs="200"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<husbands xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="registry.xsd">
<husband xsi:type="futureHusband">
<name>test 1</name>
<email>test@tesg1.com</email>
<height>180</height>
<eye>blue</eye>
<hair>black</hair>
<status>future</status>
</husband>
<husband xsi:type="pastHusband">
<name>test 2</name>
<email>test@tesg1.com</email>
<height>180</height>
<eye>blue</eye>
<hair>black</hair>
<status>past</status>
<marriageDate>2002-05-30</marriageDate>
<divorceDate>2002-05-31</divorceDate>
</husband>
<husband xsi:type="presentHusband">
<name>test 3</name>
<email>test@tesg1.com</email>
<height>180</height>
<eye>blue</eye>
<hair>black</hair>
<status>present</status>
<marriageDate>2005-05-30</marriageDate>
</husband>
</husbands>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment