Liquid XML Data Binder Functionality
This section provides an overview of what the Liquid XML Data Binding wizard can do.
- Part 1 - What is XML Data Binding? - an introduction to the technology.
- Part 2 - XSD Support Table - which XSD features are supported in XML Data Binding.
- Part 3 - In Detail - a more in depth look at what is produced when code is generated from a schema.
User Created Schemas
If you are designing your own schema, then your in a position to tailor your schema to work around any limitations in the data binding product you select. Because of this even a fairly limited binding product can be expected to produce working code if the schema contains constructs that it can deal with. However, this approach may result in you compromising the design of your schemas, forcing you to use very simple constructs and types. These compromises may ultimately impact on the development of your project. The aim here at Liquid technologies is to remove such limitations, allowing you to write schemas how you want to.
3rd Party Schemas
The limitations of many of the available products is more important when dealing with 3rd party (standard) schemas. The problem with standard schemas is your not in a position to change them, you can sometimes tweak the way in which they are written but you can't change there meaning. So imagine you start off using a standard schema, and use an inferior product which initially works OK. Later the next version of the schema is released, and it makes use of more of the XSD standard (say extensions), and now the code won't work any more. What do you do?
Your more or less back to square one. Your only real option is to go and look for a product that does support your new schema, but this will mean re-factoring all your existing code. So on balance it would be better to select a product that provides a large amount of support up front.
Functionality Summary
Product | Liquid XML Data Binding Wizard | |
Supported Feature | Generated | Supported |
ComplexType groups | ||
Sequence | ![]() |
![]() |
Choice | ![]() |
![]() |
All | ![]() |
![]() |
Multiple Models, same complextype | ![]() |
![]() |
Types | ||
Hex/Base64 | ![]() |
![]() |
Date/Time/gMonthDay etc. | ![]() |
![]() |
Collections of primitives | ![]() |
![]() |
All primitive data types | ![]() |
![]() |
unions | ![]() |
![]() |
any | ![]() |
![]() |
anyAttribute | ![]() |
![]() |
default values | ![]() |
![]() |
Pad chars (&<>" etc.) | N/A | ![]() |
Strongly Typed Output | N/A | ![]() |
Facets | ||
fractionDigits | ![]() |
![]() |
length | ![]() |
![]() |
maxExclusive | ![]() |
![]() |
minExclusive | ![]() |
![]() |
maxInclusive | ![]() |
![]() |
minInclusive | ![]() |
![]() |
maxLength | ![]() |
![]() |
minLength | ![]() |
![]() |
pattern | ![]() |
![]() |
totalDigits | ![]() |
![]() |
whiteSpace | ![]() |
![]() |
Cardinality | ||
Optional | ![]() |
![]() |
Mandatory | ![]() |
![]() |
Multiple | ![]() |
![]() |
Enumeration's | ||
Enumerated Attributes | ![]() |
![]() |
Enumerated Elements | ![]() |
![]() |
0-n Enumerated Elements | ![]() |
![]() |
Documentation | ||
Documentation Generation | ![]() |
![]() |
Include comments from Schema | ![]() |
![]() |
complexContent | ||
extension | ![]() |
![]() |
restriction | ![]() |
![]() |
Different base model types | ![]() |
![]() |
Schema | ||
Namespace | ![]() |
![]() |
Import | ![]() |
![]() |
Include | ![]() |
![]() |
groups | ![]() |
![]() |
Recursively defined elements | ![]() |
![]() |
substitutionGroups | ![]() |
![]() |
Invalid names for the language | ![]() |
![]() |
Elements & attributes with same name | ![]() |
![]() |
Mixed elements | ![]() |
![]() |
Generated - Generates code for schemas with these features
Supported - Supports these features correctly in the code that is created.
*1 No validation is done on the order that the elements are in
*2 Treated as strings
*3 Only applies on strings
*4 A choice with 0 or many elements is falsely accepted
*5 No validation is done to ensure mandatory fields are populated.
*6 Ignores elements that are valid substitution elements
*7 Allows child elements that have been restricted.
*8 Can't handle mixed content (like HTML <H1>text<B>more text</B>Some More Text</H1> 'text' & 'Some More Text' get misrepresented; typically concatenated).
*9 Supported on some data types
*10 Choices, and some uses of extension cause un typed object's to be returned.
*11 It is possible to produce invalid XML output
*12 Elements are missing from the output
*13 Strange bug whereby it invented 2 unsigned Byte elements with arbitrary values where only 1 is declared in the XML.
*14 Enumeration's that are not based on strings, are named badly (value0, value1, value2 etc.)
*15 No validation is done when setting values
*16 No validation is done when reading XML
*17 No support for optional groups (i.e. an optional sequence or choice)
*18 All data types are supported but the validation rules are not applied to all of the types.
*19 Many primitive types are not supported, resulting in code that does not compile (ENTITY, ENTITIES, name, token, UnsignedLong UnsignedInt, UnsignedShort, UnsignedByte)
*20 Using facets on some data types (i.e. gDay) causes the output code to be invalid (i.e. not compile)
*21 Creates JavaDoc comments
*22 Enumerated types are supported but treated as primitives (no validation is performed)
*23 Collections are not strongly typed.
Like what you see? Try Liquid Studio Free Free Trial
- Part 1 - What is XML Data Binding? - an introduction to the technology.
- Part 2 - XSD Support Table - which XSD features are supported in XML Data Binding.
- Part 3 - In Detail - a more in depth look at what is produced when code is generated from a schema.