XML/XML Schema/group

Материал из Web эксперт
Перейти к: навигация, поиск

Use group to wrap a sequence

File: Data.xml
<?xml version="1.0"?>
<employees
  xmlns="http://www.wbex.ru/employees"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.wbex.ru/employees Schema.xsd"
  source="from"
  version="1.0">
  <employee>
    <name>
      <first>first</first>
      <middle>middle</middle>
      <last>last</last>
    </name>
    <location>
      <address>USA</address>
      <latitude>123</latitude>
      <longitude>123</longitude>
    </location>
    <phone>001-111-1111</phone>
    <knows/>
    <description>data <em>em</em>.<br/>data<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.wbex.ru/employees"
  targetNamespace="http://www.wbex.ru/employees"
  elementFormDefault="qualified">
  <attributeGroup name="employeeAttributes">
    <attribute name="version" type="string" 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="string"/>
              <element name="knows" type="employees:KnowsType"/>
              <element name="description" type="employees:DescriptionType"/>
            </sequence>
          </complexType>
        </element>
      </sequence>
      <attributeGroup ref="employees:employeeAttributes"/>
    </complexType>
  </element>
  <complexType name="NameType">
    <group ref="employees:NameGroup"/>
  </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="string"/>
        <element name="longitude" type="string"/>
      </sequence>
    </choice>
  </complexType>
  <complexType name="KnowsType">
  </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>
</schema>