Mega Code Archive

 
Categories / XML / XML Schema
 

Attribute based on simpleType

File: Data.xml <?xml version="1.0" encoding="UTF-8"?> <data>   <firstelement position="1">     <level1 children="0">       This is level 1 of the nested elements     </level1>   </firstelement>   <secondelement position="2">     <level1 children="1">       <level2>This is level 2 of the nested elements</level2>     </level1>   </secondelement> </data> File: Schema.xsd <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"   elementFormDefault="qualified">   <xs:element name="firstelement">     <xs:complexType>       <xs:sequence>         <xs:element ref="level1" />       </xs:sequence>       <xs:attribute name="position" type="xs:boolean"         use="required" />     </xs:complexType>   </xs:element>   <xs:element name="level1">     <xs:complexType mixed="true">       <xs:choice minOccurs="0" maxOccurs="unbounded">         <xs:element ref="level2" />       </xs:choice>       <xs:attribute name="children" use="required">         <xs:simpleType>           <xs:restriction base="xs:NMTOKEN">             <xs:enumeration value="0" />             <xs:enumeration value="1" />           </xs:restriction>         </xs:simpleType>       </xs:attribute>     </xs:complexType>   </xs:element>   <xs:element name="level2" type="xs:string" />   <xs:element name="data">     <xs:complexType>       <xs:sequence>         <xs:element ref="firstelement" />         <xs:element ref="secondelement" />       </xs:sequence>     </xs:complexType>   </xs:element>   <xs:element name="secondelement">     <xs:complexType>       <xs:sequence>         <xs:element ref="level1" />       </xs:sequence>       <xs:attribute name="position" type="xs:byte" use="required" />     </xs:complexType>   </xs:element> </xs:schema>