Mega Code Archive

 
Categories / XML / XML Schema
 

Element with substitutionGroup

File: Data.xml <?xml version="1.0"?> <products xmlns ="http://www.rntsoft.com"          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          xsi:schemaLocation="http://www.rntsoft.com Schema.xsd">       <product id="n1" electric="true" type="gear">           <description>description1</description>           <warranty>lifetime warranty</warranty>           <name>name1</name>           <image>a.gif</image>           <cost currency="USD">41.95</cost>           <retailer>http://www.rntsoft.com</retailer>       </product>       <product id="n2" electric="true" type="gear">           <description>description1</description>           <warranty>lifetime warranty</warranty>           <name>name2</name>           <image>b.gif</image>           <cost currency="USD">239.00</cost>           <retailer>http://www.rntsoft.com</retailer>       </product> </products> File: Schema.xsd <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"             targetNamespace="http://www.rntsoft.com"             xmlns="http://www.rntsoft.com"             elementFormDefault="qualified">     <xsd:element name="warranty" type="xsd:string"/>     <xsd:element name="guarantee" substitutionGroup="warranty" type="xsd:string"/>     <xsd:complexType name="appliance">         <xsd:sequence>             <xsd:element name="description" type="xsd:string"/>             <xsd:element ref="warranty" minOccurs="0"/>         </xsd:sequence>     </xsd:complexType>     <xsd:complexType name="productType">         <xsd:complexContent>             <xsd:extension base="appliance">                 <xsd:sequence>                     <xsd:element name="name" type="xsd:string"/>                     <xsd:element name="image" type="imageType"/>                     <xsd:element name="weight" type="xsd:positiveInteger" minOccurs="0"/>                     <xsd:element name="cost" maxOccurs="unbounded">                         <xsd:complexType>                             <xsd:simpleContent>                                 <xsd:extension base="money">                                     <xsd:attribute name="currency" use="required">                                         <xsd:simpleType>                                             <xsd:restriction base="xsd:string">                                                 <xsd:enumeration value="USD"/>                                                 <xsd:enumeration value="CAD"/>                                             </xsd:restriction>                                         </xsd:simpleType>                                     </xsd:attribute>                                 </xsd:extension>                             </xsd:simpleContent>                         </xsd:complexType>                     </xsd:element>                     <xsd:element name="retailer" type="xsd:anyURI"/>                 </xsd:sequence>                 <xsd:attribute name="id" type="xsd:ID" use="required"/>                 <xsd:attribute name="electric" type="xsd:boolean" use="required"/>                 <xsd:attribute name="type" use="required">                     <xsd:simpleType>                         <xsd:restriction base="xsd:string">                             <xsd:enumeration value="press"/>                             <xsd:enumeration value="gear"/>                             <xsd:enumeration value="centrifugal"/>                         </xsd:restriction>                     </xsd:simpleType>                 </xsd:attribute>             </xsd:extension>         </xsd:complexContent>     </xsd:complexType>     <xsd:element name="products">         <xsd:complexType>             <xsd:sequence>                 <xsd:element name="product" type="productType" minOccurs="0" maxOccurs="unbounded"/>             </xsd:sequence>         </xsd:complexType>     </xsd:element>     <xsd:simpleType name="money">         <xsd:restriction base="xsd:decimal">             <xsd:fractionDigits value="2"/>         </xsd:restriction>     </xsd:simpleType>     <xsd:simpleType name="imageType">         <xsd:restriction base="xsd:string">             <xsd:pattern value="(.)+\.(gif|jpg|jpeg|bmp)"/>         </xsd:restriction>     </xsd:simpleType> </xsd:schema>