Complex type with group reference
File: Data.xml
<?xml version="1.0"?>
<employees
xmlns="http://www.java2s.com/employees"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.java2s.com/employees Schema.xsd"
source="from where"
version="1.0">
<employee person="persondata" tags="tag name">
<name title="Mr.">
<first>first</first>
<last>last</last>
</name>
<location>
<address>USA</address>
<latitude>1</latitude>
<longitude>2</longitude>
</location>
<phone kind="Home">001-111-1111</phone>
<knows employees="name of employees"/>
<description>data<em>em</em>.<br/>data1<strong>strong</strong> data</description>
</employee>
</employees>
File: Schema.xsd
<?xml version="1.0"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:employees="http://www.java2s.com/employees"
targetNamespace="http://www.java2s.com/employees"
elementFormDefault="qualified">
<attributeGroup name="employeeAttributes">
<attribute name="version" type="decimal" fixed="1.0" />
<attribute name="source" type="string"/>
</attributeGroup>
<element name="employees">
<complexType>
<sequence>
<element name="employee" minOccurs="0" maxOccurs="unbounded">
<complexType>
<sequence>
<element name="name" type="employees:NameType"/>
<element name="location" type="employees:LocationType"/>
<element name="phone" type="employees:PhoneType"/>
<element name="knows" type="employees:KnowsType"/>
<element name="description" type="employees:DescriptionType"/>
</sequence>
<attribute name="tags" type="token"/>
<attribute name="person" type="string"/>
</complexType>
</element>
</sequence>
<attributeGroup ref="employees:employeeAttributes"/>
</complexType>
</element>
<complexType name="NameType">
<group ref="employees:NameGroup"/>
<attribute name="title" type="string"/>
</complexType>
<group name="NameGroup">
<sequence>
<element name="first" type="string" minOccurs="1" maxOccurs="unbounded"/>
<element name="middle" type="string" minOccurs="0" maxOccurs="1"/>
<element name="last" type="string"/>
</sequence>
</group>
<complexType name="LocationType">
<choice minOccurs="0" maxOccurs="unbounded">
<element name="address" type="string"/>
<sequence>
<element name="latitude" type="employees:UnknownStringOrFloatType"/>
<element name="longitude" type="employees:UnknownStringOrFloatType"/>
</sequence>
</choice>
</complexType>
<complexType name="PhoneType">
<simpleContent>
<extension base="string">
<attribute name="kind" default="Home">
<simpleType>
<restriction base="string">
<enumeration value="Home"/>
<enumeration value="Work"/>
<enumeration value="Cell"/>
<enumeration value="Fax"/>
</restriction>
</simpleType>
</attribute>
</extension>
</simpleContent>
</complexType>
<complexType name="KnowsType">
<attribute name="employees" type="string"/>
</complexType>
<complexType name="DescriptionType" mixed="true">
<choice minOccurs="0" maxOccurs="unbounded">
<element name="em" type="string"/>
<element name="strong" type="string"/>
<element name="br" type="string"/>
</choice>
</complexType>
<simpleType name="employeeTagsType">
<restriction base="string">
<enumeration value="author"/>
<enumeration value="xml"/>
<enumeration value="poetry"/>
<enumeration value="consultant"/>
<enumeration value="CGI"/>
<enumeration value="semantics"/>
<enumeration value="employees"/>
</restriction>
</simpleType>
<simpleType name="employeeTagsListType">
<list itemType="employees:employeeTagsType"/>
</simpleType>
<simpleType name="UnknownString">
<restriction base="string">
<enumeration value="Unknown"/>
</restriction>
</simpleType>
<simpleType name="UnknownStringOrFloatType">
<union memberTypes="float employees:UnknownString"/>
</simpleType>
</schema>
Related examples in the same category