Supported XSD Features

Feature

Support provided in C++, C#, Java & VB 6

 

Sequence

A Complex Type containing the sub item <sequence>

Fully Supported - validates order of sub elements

0-1

The sequence is optional within the containing Complex Type
Fully Supported

1

The sequence is mandatory within the containing Complex Type

Fully Supported

0-n

There may be 0 or multiple instance of the sequence within the containing Complex Type

Fully Supported - creates a strongly typed collection

Choice

A Complex Type containing the sub item <choice>

Fully Supported

0-1

The choice is optional within the containing Complex Type

Fully Supported

1

The choice is mandatory within the containing Complex Type

Fully Supported

0-n

There may be 0 or multiple instance of the choice within the containing Complex Type

Fully Supported - creates a strongly typed collection

All

A Complex Type containing the sub item <all>

Fully Supported

0-1

The sequence is optional within the containing Complex Type

Fully Supported

1

The sequence is mandatory within the containing Complex Type

Fully Supported

0-n

There may be 0 or multiple instance of the sequence within the containing Complex Type

Fully Supported - creates a strongly typed collection

A choice that contains a sequence

Fully Supported - Ensures that the rules for each contained type are obeyed. See all/choice/sequences

any

Enables any element from the specified namespace(s) to appear in the containing <sequence> or <choice> element

Fully Supported - Allows runtime elements to be added, including namespace, and namespace validation

unions

An attribute type can contain either a number or the sting 'xxx'

Represented as a string, no validation performed

anyAttribute

Enables any attribute from the specified namespace(s) to appear in the containing <complexType> element or in the containing <attributeGroup> element

Fully Supported - Allows runtime elements to be added, including namespace, and namespace validation

default values

Gives the default value to a attribute or element

Fully Supported

Pad chars (&<>" etc)

Escape invalid XML characters

Fully Supported

Strongly Typed Output

Provide classes that are strongly typed, i.e. all the schema attributes and elements are represented by appropriate primitive types for the given language

Fully Supported - all types are strongly typed (extended types may be treated as objects in VB6 due to its lack of proper inheritance).

 

Enumerated Attributes

A limited list of values is allowed for a given attribute

Fully Supported

Enumerated Elements

A limited list of values is allowed for a given element

Fully Supported

0-n Enumerated Elements

A collection of a limited list of values is allowed for a given element

Fully Supported - creates a strongly typed collection

 

Documentation Generation

Is Documentation for the library is generated

Fully Supported - creates html & compiled html files (.chm) using MS Help workshop 1.3

Schema comments

The comments from the schema get incorporated into the documentation

Coming Soon

 

extension

An existing Complex Type may be extended, adding new elements & attributes to its existing ones. The extended versions may be used in place of the base type

Fully Supported

restriction

An existing Complex Type may be restricted to create a new one that has a subset of the properties of the original. The extended versions may be used in place of the base type

Partial Support - Generates working code, but it will validate XML documents containing restricted elements, and allow the construction of XML documents with restricted elements in them

Different base model types

i.e. a element containing a choice is extended with an element containing a sequence

Fully Supported

 

Namespace

The schema contains elements and attributes from a number of different namespace

Fully Supported - each element is aware of the namespace it is contained within. This is also true of runtime elements (see All, and anyAttribute)

Import

Existing schemas may be imported into the current schema file

Fully Supported

Include

Existing schemas may be included into the current schema file

Fully Supported

groups

Groups a set of element declarations so that they can be incorporated as a group into complex type definitions

Fully Supported

Recursive elements

I.e. an element is defined in terms of itself

Fully Supported

substitutionGroups

Indicates the name of an element for which this element can be substituted. This element must have the same type or a type derived from the type of the specified element.
This attribute can be used on any element if the referring element is declared at the global level (parent is <schema> element)

Fully Supported - these resemble a choice in the generated code

Invalid names

Element & Attribute names in the schema that are invalid in the target language

Fully Supported - all invalid names are re-mapped, a mapping file is written out, allowing the default mappings to be changed. This includes making duplicate, long names, and reserved words safe