[DFDL-WG] Variable definitions in the defineFormat block
Suman Kalia
kalia at ca.ibm.com
Tue Jun 16 10:44:53 CDT 2009
Alan/Steve - Changes after our meeting this morning (June 16, 2009)
Define a variable format block just like we define textNumberFormat. The
variable block could be at schema level but preferably should be defined
within the defineFormat definition so that variables are scoped to format
definition and do not pollute the schema namespace..
Variable block is referenced from dfdl:format annotation just like
textNumberFormat block is referenced through textNumberFormatRef
annotation.
It addresses the problem hilited today in the meeting related to semantics
of dfdl:ref="myFormat" annotation on a xsd constructs. The net effect of
this annotation is as if the dfdl:format annotation (along with the
attribute settings) is specified explicitly on the xsd construct. By
providing a level of indirection and referencing variable block through
varRef annotations, we have permitted visibility to variables but not to
the definition of variables.
Excerpts from MyEnvelopeFormat.xsd - attached for perusal.. Also attached
is the PI for the example ( see updated xsd files under the folder
enveloper_skk)
<xsd:annotation>
<xsd:appinfo source="http://dataformat.org/">
<dfdl:defineFormat name="MyEnvelopeFormat"
baseFormat="dfdlDefaultFormat:defaultFormat" >
<!-- statically override properties
specific to the envelope wrapped messages -->
<dfdl:format byteOrder="big-Endian"
varRef="./MyEnvelopeFormatVariables"/>
<!--
Identify variables for
processing the messages wrapped in an envelope
i.e. the set of properties
values that I need to take from input data and
dynamically set the values of
dfdl properties during the processing of the message.
Assumption: Names of variables
defined in the format are unique
-->
<!-- Define the variables needed for the format locally
in the format block -->
<!-- They could also be defined at the schema level and
referenced through varRef -->
<!-- as its definition is QName just like textFormatBlock
or numberFormatBlock -->
<!-- Best practice would be to constraint the variable
block locally -->
<dfdl:defineVariableBlock name="MyEnvelopeFormatVariables">
<dfdl:defineVariable name="sep" type=
"string" />
<dfdl:defineVariable name="enc" type=
"string" />
<dfdl:defineVariable name=
"outputDirPathSep" type="string" default="/" use="output" />
<dfdl:defineVariable name="outputMsgKind"
type="string" use="output" />
<dfdl:defineVariable name="inputMsgKind"
type="string" use="input" />
</dfdl:defineVariableBlock>
</dfdl:defineFormat>
</xsd:appinfo>
</xsd:annotation>
Suman Kalia
IBM Toronto Lab
WMB Toolkit Architect and Development Lead
WebSphere Business Integration Application Connectivity Tools
http://www.ibm.com/developerworks/websphere/zones/businessintegration/wmb.html
Tel : 905-413-3923 T/L 969-3923
Fax : 905-413-4850 T/L 969-4850
Internet ID : kalia at ca.ibm.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.ogf.org/pipermail/dfdl-wg/attachments/20090616/69301862/attachment-0001.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dfdl_variables_example_update.zip
Type: application/zip
Size: 34681 bytes
Desc: not available
Url : http://www.ogf.org/pipermail/dfdl-wg/attachments/20090616/69301862/attachment-0001.zip
More information about the dfdl-wg
mailing list