Global attibute definitions : Salami Slice « XML Schema « XML






Global attibute definitions


File: Data.xml

<?xml version="1.0" standalone="yes"?>
<statement 
 xmlns="http://www.java2s.com/statement"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.java2s.com/statement Schema.xsd">
           
   <customer name="name 1" number="CUST123" type="VIP"/>
   <orders count="2">
      <order number="ORD100" owner="CUST123" total="500.00">
         <items>
            <item quantity="5" price="100">
              <description>item 1</description>
            </item>
            <item quantity="2" price="50">
              <description>item 2</description>
            </item>
         </items>
      </order>
      <order number="ORD101" owner="CUST123" total="150.00">
         <items>
            <item quantity="6" price="25">
              <description>item 3</description>
            </item>
         </items>
      </order>
   </orders>
</statement>
File: Schema.xsd

<?xml version="1.0" ?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  targetNamespace="http://www.java2s.com/statement"
  xmlns="http://www.java2s.com/statement">
    <xs:attributeGroup name="CustAttrs">
      <xs:attribute name="number" type="xs:ID" />
    <xs:attribute name="name"   type="xs:string" />
    <xs:attribute name="type"   type="xs:string" use="optional" default="normal"  />
  </xs:attributeGroup >
  <xs:element name="statement">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="customer" />
        <xs:element ref="orders" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="customer">
    <xs:complexType>
      <xs:sequence />
      <xs:attributeGroup ref="CustAttrs" />      
    </xs:complexType>
  </xs:element>
  <xs:element name="orders">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="order"
         maxOccurs="unbounded" />
      </xs:sequence>
      <xs:attribute name="count" 
       type="xs:nonNegativeInteger" />
    </xs:complexType>
  </xs:element>
  <xs:element name="order">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="items" />
      </xs:sequence>
      <xs:attribute name="number" type="xs:ID" />
      <xs:attribute name="owner"  type="xs:IDREF" />
      <xs:attribute name="total"  type="xs:decimal" />
    </xs:complexType>
  </xs:element>
  <xs:element name="items">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="item" 
         maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="item">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="description" />
      </xs:sequence>
      <xs:attribute name="quantity" type="xs:nonNegativeInteger" />
      <xs:attribute name="price"    type="xs:decimal" />
    </xs:complexType>
  </xs:element>
  <xs:element name="description" type="xs:string" />
</xs:schema>

 








Related examples in the same category

1.Salami Slice Design
2.Reuse complex type
3.Ref and Salami Slice
4.different types with the same name
5.Reuse data type defined
6.Reuse data type defined in another xml schema file
7.Schema for XSchema elements