Rogue Wave banner
Previous fileTop of DocumentContentsIndex pageNext file
HydraExpress XML Binding Development Guide
Rogue Wave web site:  Home Page  |  Main Documentation Page

8.3 Simple Types

There are 44 built-in XML Schema types. Table 4 illustrates how HydraExpress maps XML Schema types to Standard C++ Library types and SourcePro C++ types.


By default, HydraExpress links to Standard C++ Library types. To link to SourcePro C++ types, use the -sourcepro option when invoking the code generator.

To view the descriptions of SourcePro C++ classes, follow the links below which lead to the SourcePro C++ documentation.

Table 4: Mapping of built-in schema types to C++ types 

Built-in XML Schema TypeSTL (Standard Template Library) TypeSourcePro C++ Type

string

std::string

RWCString

boolean

bool

bool

decimal

std::string

RWDecimalPortable

float

float

float

double

double

double

duration

std::string

rwsf::TimeSpan1

dateTime

std::string

RWDateTime

time

std::string

RWDateTime

date

std::string

RWDate

gYearMonth

std::string

RWCString

gYear

std::string

RWCString

gMonthDay

std::string

RWCString

gDay

std::string

RWCString

gMonth

std::string

RWCString

hexBinary

std::string

RWCString

base64Binary

std::string

RWCString

anyURI

std::string

RWCString

QName

std::string

RWCString

Notation

std::string

RWCString

normalizedString

std::string

RWCString

token

std::string

RWCString

byte

short

short

unsigned byte

unsigned short

unsigned short

integer

std::string

RWDecimalPortable

positiveInteger

std::string

RWDecimalPortable

negativeInteger

std::string

RWDecimalPortable

nonNegativeInteger

std::string

RWDecimalPortable

nonPositiveInteger

std::string

RWDecimalPortable

int

int

int

unsignedInt

unsigned int

unsigned int

long

long

long

unsignedLong

unsigned long

unsigned long

short

short

short

unsignedShort

unsigned short

unsigned short

Name

std::string

RWCString

NCName

std::string

RWCString

language

std::string

RWCString

ID

std::string

RWCString

IDREF

std::string

RWCString

IDREFS

std::string

RWCString

ENTITY

std::string

RWCString

ENTITIES

std::string

RWCString

NMTOKEN

std::string

RWCString

  1. For duration, the mapping is to a HydraExpress Library class because there is no good equivalent in SourcePro.

8.3.1 Default Values

HydraExpress initializes built-in schema types to a reasonable value. If the type has a default value associated with it, HydraExpress uses the default value from the schema to initialize the type. Table 5 lists the default value for each of the default C++ types.

The default values for a type can be configured by modifying the configuration file, as described in Section 8.8.2.

Table 5: Initialization values for C++ types 

C++ or SourcePro TypeInitial Value

RWCString

RWCString()

std::string

std::string()

RWDecimalPortable

0

rwsf::TimeSpan

All time values set to 0

bool

false

float

0.0

double

0.0

int

0

long

0

short

0

unsigned int

0

unsigned long

0

unsigned short

0

RWDate

RWDate() (which is the current date)

RWDateTime

RWDateTime::now() (which is the current date and time)

8.3.2 anyType and anySimpleType

An element or attribute that does not specify a type defaults to type anyType (the ur-type). You can also explicitly specify that an attribute or element is of type anyType. By default, HydraExpress maps an anyType to a C++ string type. Because the element is a type with unknown contents and structure, HydraExpress cannot create a fixed binding for the element. Therefore, HydraExpress makes no attempt to parse the contents of an element of type anyType. Instead, HydraExpress returns the contents of this element verbatim as an instance of the type mapped to xsd:string, typically std::string or RWCString.

The type anySimpleType is comparable to anyType, except for the following:

Like for anyType, HydraExpress creates a member as an instance of the type mapped to xsd:string, typically std::string or RWCString, and makes no attempt to parse the contents of the element.

8.3.3 Validation of simpleType Data

HydraExpress provides an isValid() method in each generated class for checking that the data in elements with a restricted simpleType conforms to the restrictions. For information on this method, see Section 2.4.2, "Instance Document Validation." For an example of using isValid(), see Section 3.6.3, "Validating the Instance Document."



Previous fileTop of DocumentContentsIndex pageNext file

©2004-2007 Copyright Quovadx, Inc. All Rights Reserved.
Quovadx and Rogue Wave are registered trademarks of Quovadx, Inc. in the United States and other countries. All other trademarks are the property of their respective owners.
Contact Rogue Wave about documentation or support issues.