It is possible to modify some of the values in the generated code on a per class or property basis. This allows class/property names to be changed individually, and some additional information to be provided that improves the usability or fidelity of the resulting library. These 'Override Values' can be specified in 2 ways.
Custom attributes can be added to the XSD to provide additional information to the LXO code generator, for example
Example Title |
Copy Code
|
---|---|
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:lxo="http://www.liquid-technologies.com/xml-objects/schema-markup" ... <xsd:element name="amount" type="xsd:decimal" lxo:name="NetTotal" lxo:numericPattern="0.00"> |
All attributes must be in the namespace http://www.liquid-technologies.com/xml-objects/schema-markup.
Attribute | Allowable Parents | Description |
---|---|---|
name | xs:attribute xs:alternative xs:complexType xs:element xs:simpleType |
Sets the name of the property/class that is generated. Note: it is still possible that the name will be modified by the generator in order to avoid duplicates and to ensure it is a valid identifier in the target output language. |
numericPattern |
xs:attribute Where the value described is a numeric type
|
Sets the formatting rules applied to numeric values when they are written out as XML. For example the value 24 in the element 'amount' would normally be rendered as <amount>24</amount>, however if the numericPattern="0.00" then the result would be <amount>24.00</amount>. The formatting rules can be found here Standard Numeric Format Strings and Custom Numeric Format Strings. See limitations for xs:decimal type below |
If it is not possible/desirable to change the source XSD files then configuration files can be placed alongside the source XSD's in 'caddy' files.
The caddy file must have the same name as the XSD with the extension .lxocfg.
For example if our schema file was called Accounts.xsd, then our configuration file may look like this
Accounts.xsd.lxocfg |
Copy Code
|
---|---|
<?xml version="1.0" encoding="utf-8"?> <SchemaOverride xmlns='http://www.liquid-technologies.com/xml-objects/schema-markup'> <Item path='[complexType:invoice]/[element:amount]'> <Value name='name'>NetTotal</Value> <Value name='numericPattern'>0.00</Value> </Item> </SchemaOverride> |
If the schema set contains multiple XSD files then a configuration file is required for each file that you wish to override values in.
If you run the command line application and add the verbose flag then it will write to the console all the .lxocfg files containing all the possible values that can be overridden.
These are designed to be a guide to what can be changed (only include the values you want to change in the .lxocfg files you create).
If you place a numericPattern onto an xs:decimal value, this will limit the range of values that it can contain to that of the .Net Framework System.Decimal type (this is a huge range and suitable for most applications, but is not the unbounded range of the underlying BigDecimal type), the reason for this is that the value is converted to a System.Decimal in order to apply the formatting pattern, if the value is too large to fit into a System.Decimal an OverflowException will be raised.