A binding declaration customizes the default binding of a schema element to a C/C++ representation. The binding declaration defines one or more customization values each of which customizes a part of C/ C++ representation.
When a customization value is defined in a binding declaration, it is associated with a scope. A scope of a customization value is the set of schema elements to which it applies.
The defined scopes are as follows:
global scope: A customization
value defined in <bindings>
has global scope. A global scope covers all
the schema elements in the source schema and (recursively) any
schemas that are included or imported by the source schema.
schema scope: A customization
value defined in <schemaBindings>
has schema scope. A schema scope covers all
the schema elements in the target namespace of a schema.
node scope: A customization value
defined in <nodeBindings>
has node scope. A node scope covers all
schema elements that reference the type definition, the global
declaration or the local declaration.
A customization value defined in one scope is inherited for use in a binding declaration covered by another scope as shown by the following inheritance hierarchy:
A schema element in schema scope inherits a customization value defined in global scope.
A schema element in node scope inherits a customization value defined in schema or global scope.
Likewise, a customization value defined in one scope can override a customization value inherited from another scope as shown below:
A value in schema scope overrides a value inherited from global scope.
Α value in node scope overrides a value inherited from schema scope or global scope.