You should declare that your CG
accepts an optional nested CG
. You can use the ref
attribute to refer to your element declaration:
<xs:element name="CG">
<xs:complexType>
<xs:sequence>
<xs:element ref="CG" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="SYM" use="required">
....
</xs:element>
A XSD containing the element declaration below will validate the sample instance you provided:
<xs:element name="CG">
<xs:complexType>
<xs:sequence>
<xs:element ref="CG" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="SYM" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="B" use="required">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="-1"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="S" use="required">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="-1"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="P" type="xs:integer"/>
</xs:complexType>
</xs:element>