Indivo Document Demographics SchemaΒΆ

Schema:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           xmlns:indivo="http://indivo.org/vocab/xml/documents#"
           elementFormDefault="qualified" 
           targetNamespace="http://indivo.org/vocab/xml/documents#">
  
  <xs:complexType name="Name">
    <xs:sequence>
      <xs:element name="familyName" type="xs:string" minOccurs="1" maxOccurs="1" />
      <xs:element name="givenName" type="xs:string" minOccurs="1" maxOccurs="1" />
      <xs:element name="middleName" type="xs:string" minOccurs="0" maxOccurs="1" />
      <xs:element name="prefix" type="xs:string" minOccurs="0" maxOccurs="1" />
      <xs:element name="suffix" type="xs:string" minOccurs="0" maxOccurs="1" />
    </xs:sequence>
  </xs:complexType>
  
  <xs:simpleType name="PhoneType">
    <xs:restriction base="xs:normalizedString">
      <xs:enumeration value="h"/>
      <xs:enumeration value="w"/>
      <xs:enumeration value="c"/>
    </xs:restriction>
  </xs:simpleType>
  
  <xs:simpleType name="GenderType">
    <xs:restriction base="xs:normalizedString">
      <xs:enumeration value="female"/>
      <xs:enumeration value="male"/>
    </xs:restriction>
  </xs:simpleType>
  
  <xs:complexType name="Telephone">
    <xs:sequence>
      <xs:element name="type" type="indivo:PhoneType" minOccurs="0" maxOccurs="1" />
      <xs:element name="number" type="xs:string" minOccurs="1" maxOccurs="1" />
      <xs:element name="preferred" type="xs:boolean" minOccurs="0" maxOccurs="1" default="false" />
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name="Address">
    <xs:sequence>
      <xs:element name="country" type="xs:string" minOccurs="0" maxOccurs="1" />
      <xs:element name="city" type="xs:string" minOccurs="0" maxOccurs="1" />
      <xs:element name="postalCode" type="xs:string" minOccurs="0" maxOccurs="1" />
      <xs:element name="region" type="xs:string" minOccurs="0" maxOccurs="1" />
      <xs:element name="street" type="xs:string" minOccurs="0" maxOccurs="1" />
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="Demographics">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="dateOfBirth" type="xs:date" minOccurs="1" />
        <xs:element name="gender" type="indivo:GenderType" minOccurs="1" />
        <xs:element name="email" type="xs:string" minOccurs="0" />
        <xs:element name="ethnicity" type="xs:string" minOccurs="0" />
        <xs:element name="preferredLanguage" type="xs:string" minOccurs="0" />
        <xs:element name="race" type="xs:string" minOccurs="0" />
        <xs:element name="Name" type="indivo:Name" minOccurs="1"/>
        <xs:element name="Telephone" type="indivo:Telephone" minOccurs="0" maxOccurs="2" />
        <xs:element name="Address" type="indivo:Address" minOccurs="0" maxOccurs="1" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Example:

<?xml version="1.0" encoding="utf-8" ?>
<Demographics xmlns="http://indivo.org/vocab/xml/documents#">
    <dateOfBirth>1939-11-15</dateOfBirth>
    <gender>male</gender>
    <email>test@fake.org</email>
    <ethnicity>Scottish</ethnicity>
    <preferredLanguage>EN</preferredLanguage>
    <race>caucasian</race>
    <Name>
        <familyName>Wayne</familyName>
        <givenName>Bruce</givenName>
        <middleName>Quentin</middleName>
        <prefix>Mr</prefix>
        <suffix>Jr</suffix>
    </Name>
    <Telephone>
        <type>h</type>
        <number>555-5555</number>
        <preferred>true</preferred>
    </Telephone>
    <Telephone>
        <type>c</type>
        <number>555-6666</number>
    </Telephone>
    <Address>
        <country>USA</country>
        <city>Gotham</city>
        <postalCode>90210</postalCode>
        <region>secret</region>
        <street>1007 Mountain Drive</street>
    </Address>
</Demographics>