attribute based on simpleType : simpleType « XML Schema « XML






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>

 








Related examples in the same category

1.Create simpleType with restriction on another simple type
2.Derived simple type
3.Define simple type outside