The only purpose of simple content extensions is to add attributes to an existing base type. The base type must either be a complex type with simpleContent, or a simple type. In the following example, let SimpleBaseType be the representation for the simple type that is the content model for TypeName.
The general mapping is as follows:
XSD type:
<xsd:complexType name="TypeName">
<xsd:simpleContent>
<xsd:extension base="BaseType">
<xsd:attribute name="attr1" type="Type1"/>
<xsd:attribute name="attr2" type="Type2"/>
...
<xsd:attribute name="attrN" type="TypeN"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
Generated C code:
typedef struct TypeName {
SimpleBaseType _base;
/* attributes */
Type1 attr1;
Type2 attr2;
...
TypeN attrN;
} TypeName;
Generated C++ code:
class TypeName : public OSXSDComplexType {
// The simpleType extended by simpleContent
SimpleBaseType value;
/* attributes */
Type1 attr1;
Type2 attr2;
...
TypeN attrN;
...
} ;