Friday, September 21, 2012

XSD for Item Price


XSD
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:annotation>
<xsd:documentation xml:lang="en">Item price at store</xsd:documentation>
</xsd:annotation>

<xsd:element name="Store" type="StoreType"/>
<xsd:element name="Address" type="USAddressType"/>
<xsd:element name="HomePage" type="HomePageType"/>

<xsd:simpleType name="valueRequired">
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
</xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="positiveNumber">
<xsd:restriction base="xsd:float">
<xsd:minInclusive value="0"/>
</xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="positiveNonZeroNumber">
<xsd:restriction base="xsd:float">
<xsd:minExclusive value="0"/>
</xsd:restriction>
</xsd:simpleType>

<xsd:complexType name="StoreType">
<xsd:sequence>
<xsd:element name="Name" type="valueRequired"/>
<xsd:element ref="Address" />
<xsd:element ref="HomePage" minOccurs="0"/>
<xsd:element name="Phone" type="xsd:string" />
<xsd:element name="Date" type="xsd:date" />
<xsd:element name="Items" type="ItemsType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>

<xsd:complexType name="ItemsType">
<xsd:sequence>
<xsd:element name="Item" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Name" type="valueRequired" />
<xsd:element name="Category" type="valueRequired"/>
<xsd:element name="Quantity" type="positiveNonZeroNumber" />
<xsd:element name="Unit" type="valueRequired"/>
<xsd:element name="Price" type="positiveNumber"/>
<xsd:element name="Comment" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>

<xsd:complexType name="USAddressType">
<xsd:sequence>
<xsd:element name="Address1" type="valueRequired"/>
<xsd:element name="Address2" type="xsd:string"/>
<xsd:element name="City" type="valueRequired"/>
<xsd:element name="State" type="USState"/>
<xsd:element name="ZipCode" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="country" type="xsd:NMTOKEN" fixed="US"/>
</xsd:complexType>

<xsd:complexType name="HomePageType">
<xsd:attribute name="URL" type="xsd:string"/>
</xsd:complexType>

<xsd:simpleType name="USState">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="AL"/><xsd:enumeration value="AK"/>
<xsd:enumeration value="AZ"/><xsd:enumeration value="AR"/>
<xsd:enumeration value="CA"/><xsd:enumeration value="CO"/>
<xsd:enumeration value="CT"/><xsd:enumeration value="DE"/>
<xsd:enumeration value="DC"/><xsd:enumeration value="FL"/>
<xsd:enumeration value="GA"/><xsd:enumeration value="HI"/>
<xsd:enumeration value="ID"/><xsd:enumeration value="IL"/>
<xsd:enumeration value="IN"/><xsd:enumeration value="IA"/>
<xsd:enumeration value="KS"/><xsd:enumeration value="KY"/>
<xsd:enumeration value="LA"/><xsd:enumeration value="ME"/>
<xsd:enumeration value="MD"/><xsd:enumeration value="MA"/>
<xsd:enumeration value="MI"/><xsd:enumeration value="MN"/>
<xsd:enumeration value="MS"/><xsd:enumeration value="MO"/>
<xsd:enumeration value="MT"/><xsd:enumeration value="NE"/>
<xsd:enumeration value="NV"/><xsd:enumeration value="NH"/>
<xsd:enumeration value="NJ"/><xsd:enumeration value="NM"/>
<xsd:enumeration value="NY"/><xsd:enumeration value="NC"/>
<xsd:enumeration value="ND"/><xsd:enumeration value="OH"/>
<xsd:enumeration value="OK"/><xsd:enumeration value="OR"/>
<xsd:enumeration value="PA"/><xsd:enumeration value="RI"/>
<xsd:enumeration value="SC"/><xsd:enumeration value="SD"/>
<xsd:enumeration value="TN"/><xsd:enumeration value="TX"/>
<xsd:enumeration value="UT"/><xsd:enumeration value="VT"/>
<xsd:enumeration value="VA"/><xsd:enumeration value="WA"/>
<xsd:enumeration value="WV"/><xsd:enumeration value="WI"/>
<xsd:enumeration value="WY"/>
</xsd:restriction>
</xsd:simpleType>

</xsd:schema>

Sample XML

<Store>
  <Name>CVS</Name>
  <Address country="US">
    <Address1>123 Main St</Address1>
<Address2></Address2>
<City>New York</City>
<State>NY</State>
<ZipCode>11106</ZipCode>
  </Address>
  <Phone></Phone>
  <Date>21012-09-21</Date>
  <Items>
<Item>
<Name>Folger Coffee</Name>
<Category>Coffee</Category>
<Quantity>1</Quantity>
<Unit>lb</Unit>
<Price>9.99</Price>
<Comment>On 30% sale</Comment>
</Item>
<Item>
<Name>Prude Chicken</Name>
<Category>Chicken</Category>
<Quantity>7.5</Quantity>
<Unit>lb</Unit>
<Price>4.99</Price>
<Comment>Price is per pound</Comment>
</Item>
  </Items>
</Store>


No comments: