Beside the root element, and the elements and complex types defining the object types, there is some other stuff in the schema, namely:
1.Some pre-defined complex types that have nothing to do with the hierarchy of the object types but that are used to define some special kind of attributes: ‘reference’, ‘privileges’, ‘access’ etc. In general these complex types CANNOT be modified. These complex types are usually defined in the separate file GN4Fixed.xsd; that is included (by way of GN4Base.xsd) in the main schema file.
2.Some pre-defined simple types that are used in the pre-defined complex type: ‘tName’, ‘privilegeValue’, etc. These simple types in general can be modified: e.g., ‘tName’ is the standard type for object names, defined as a string with a maximum length of 80 characters. The limit could be changed to increase the maximum length. These simple types are usually defined in the separate file GN4Base.xsd that is included in the main schema file.
3.Optional user-defined simple types used to simplify the definition of object types’ attributes, e.g. to define a string attribute with a maximum length of 128 characters the syntax is:
<xs:attribute name="location">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="128"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
For attributes definitions used frequently, it is worthwhile to define a simple type, such as:
<xs:simpleType name="str128">
<xs:restriction base="xs:string">
<xs:maxLength value="128"/>
</xs:restriction>
</xs:simpleType>
The attribute would then be defined as:
<xs:attribute name="location" type="str128"/>
Simple type definition like the one in this example can be used freely in the schema.