Complex type with group reference : complexType « XML Schema « XML






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

1.Define a complexType
2.Definition of a student element uses primitive types for the child elements
3.complex type with sequence
4.complexType outside the element
5.Anonymous complex type and sequence
6.Complex type with complex content
7.Build Complex type with simple Type
8.complexType with extension
9.complexType with restriction
10.complexType mixed="true"
11.Nested complexType