title: How to define a user define data type in XML schema?
body: <p>I have defined two complex element types - Developer and App.</p>
  
  <p>Developer childs - ID ,Name, Email</p>
  
  <p>App childs - ID, Name, <strong>Developer</strong></p>
  
  <p>Here the <strong>Developer</strong> in App complex element refers to Developer/ID.</p>
  
  <p>How to define this relationship in xml schema. I am using XML spy2013 editor.</p>
  
  <p>I have tried specifying name in the declaration of simple type Developer->ID. And using this name in App->Developer datatype. But it gives error..</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;!-- edited with XMLSpy v2013 (x64) (http://www.altova.com) by Piyush (USC) --&gt;
  &lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"          attributeFormDefault="unqualified"&gt;
  &lt;xs:element name="appinfo"&gt;
      &lt;xs:complexType&gt;
          &lt;xs:sequence&gt;
              &lt;xs:element name="Developer"&gt;
                  &lt;xs:complexType&gt;
                      &lt;xs:all&gt;
                          **&lt;xs:element name="ID"&gt;**
                              &lt;xs:simpleType&gt;
                                  &lt;xs:restriction base="xs:string"&gt;
                                      &lt;xs:length value="5"/&gt;
                                      &lt;xs:pattern value="[a-zA-Z][a-zA-Z][0-9][0-9][a-zA-Z]"/&gt;
                                  &lt;/xs:restriction&gt;
                              &lt;/xs:simpleType&gt;
                          &lt;/xs:element&gt;
                          &lt;xs:element name="Name"&gt;
                              &lt;xs:simpleType&gt;
                                  &lt;xs:restriction base="xs:string"&gt;
                                      &lt;xs:pattern value="([a-zA-Z])+"/&gt;
                                  &lt;/xs:restriction&gt;
                              &lt;/xs:simpleType&gt;
                          &lt;/xs:element&gt;
                          &lt;xs:element name="Email"&gt;
                              &lt;xs:simpleType&gt;
                                  &lt;xs:restriction base="xs:string"&gt;
                                      &lt;xs:pattern value="[^@]+@[^\.]+\..+"/&gt;
                                  &lt;/xs:restriction&gt;
                              &lt;/xs:simpleType&gt;
                          &lt;/xs:element&gt;
                          &lt;xs:element name="Company" type="xs:string"/&gt;
                          &lt;xs:element name="Website" type="xs:string"/&gt;
                          &lt;xs:element name="Phone"&gt;
                              &lt;xs:simpleType&gt;
                                  &lt;xs:restriction base="xs:string"&gt;
                                      &lt;xs:length value="13"/&gt;
                                  &lt;/xs:restriction&gt;
                              &lt;/xs:simpleType&gt;
                          &lt;/xs:element&gt;
                      &lt;/xs:all&gt;
                  &lt;/xs:complexType&gt;
              &lt;/xs:element&gt;
              &lt;xs:element name="App"&gt;
                  &lt;xs:complexType&gt;
                      &lt;xs:all&gt;
                          &lt;xs:element name="ID"&gt;
                              &lt;xs:simpleType&gt;
                                  &lt;xs:restriction base="xs:string"&gt;
                                      &lt;xs:length value="5"/&gt;
                                      &lt;xs:pattern value="[0-9][0-9][0-9][0-9][A-Z]"/&gt;
                                  &lt;/xs:restriction&gt;
                              &lt;/xs:simpleType&gt;
                          &lt;/xs:element&gt;
                          &lt;xs:element name="Name"&gt;
                              &lt;xs:simpleType&gt;
                                  &lt;xs:restriction base="xs:string"&gt;
                                      &lt;xs:pattern value="([a-zA-Z])+"/&gt;
                                  &lt;/xs:restriction&gt;
                              &lt;/xs:simpleType&gt;
                          &lt;/xs:element&gt;
                          &lt;xs:element name="Developer" ***type="xs:anySimpleType"/&gt;***
                          &lt;xs:element name="Price"&gt;
                              &lt;xs:simpleType&gt;
                                  &lt;xs:restriction base="xs:float"&gt;
                                      &lt;xs:minInclusive value="0.00"/&gt;
                                      &lt;xs:maxInclusive value="6.99"/&gt;
                                  &lt;/xs:restriction&gt;
                              &lt;/xs:simpleType&gt;
                          &lt;/xs:element&gt;
                          &lt;xs:element name="TabletCompatible" type="xs:boolean" minOccurs="0"/&gt;
                          &lt;xs:element name="Category"&gt;
                              &lt;xs:simpleType&gt;
                                  &lt;xs:restriction base="xs:string"&gt;
                                      &lt;xs:enumeration value="Travel"/&gt;
                                      &lt;xs:enumeration value="Productivity"/&gt;
                                      &lt;xs:enumeration value="Game"/&gt;
                                      &lt;xs:enumeration value="Music"/&gt;
                                      &lt;xs:enumeration value="Education"/&gt;
                                      &lt;xs:enumeration value="Lifestyle"/&gt;
                                  &lt;/xs:restriction&gt;
                              &lt;/xs:simpleType&gt;
                          &lt;/xs:element&gt;
                          &lt;xs:element name="Platform"&gt;
                              &lt;xs:simpleType&gt;
                                  &lt;xs:restriction base="xs:string"&gt;
                                      &lt;xs:enumeration value="Android"/&gt;
                                      &lt;xs:enumeration value="iOS"/&gt;
                                      &lt;xs:enumeration value="Blackberry"/&gt;
                                  &lt;/xs:restriction&gt;
                              &lt;/xs:simpleType&gt;
                          &lt;/xs:element&gt;
                      &lt;/xs:all&gt;
                  &lt;/xs:complexType&gt;
              &lt;/xs:element&gt;
              &lt;xs:element name="AppStat"&gt;
                  &lt;xs:complexType&gt;
                      &lt;xs:all&gt;
                          &lt;xs:element name="AppID" type="xs:anySimpleType"/&gt;
                          &lt;xs:element name="Statistics"&gt;
                              &lt;xs:complexType&gt;
                                  &lt;xs:sequence maxOccurs="unbounded"&gt;
                                      &lt;xs:element name="Platform" type="xs:anySimpleType"/&gt;
                                      &lt;xs:element name="Downloads" type="xs:positiveInteger"/&gt;
                                      &lt;xs:element name="Rating"&gt;
                                          &lt;xs:simpleType&gt;
                                              &lt;xs:restriction base="xs:float"&gt;
                                                  &lt;xs:minInclusive value="0.0"/&gt;
                                                  &lt;xs:maxInclusive value="5.0"/&gt;
                                              &lt;/xs:restriction&gt;
                                          &lt;/xs:simpleType&gt;
                                      &lt;/xs:element&gt;
                                  &lt;/xs:sequence&gt;
                              &lt;/xs:complexType&gt;
                          &lt;/xs:element&gt;
                          &lt;xs:element name="LastChecked" type="xs:date"/&gt;
                      &lt;/xs:all&gt;
                  &lt;/xs:complexType&gt;
              &lt;/xs:element&gt;
          &lt;/xs:sequence&gt;
      &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  </code></pre>
  
  <p></p>