XML Library v5.3 - Specification
XML Library v5.3 - Specification
XML Library
MessageMaker™ v5.3
© 2004 Synergy Financial Systems Limited
Disclaimer
All rights reserved. This document is confidential and propriety to Synergy Financial Systems, Ltd.
No part of this document may be produced or disclosed in any form or by any means - graphic,
electronic, or mechanical, including photocopying, recording, taping, or information storage and
retrieval systems without written permission of Synergy Financial Systems, Ltd.
Synergy Financial Systems, Ltd. shall have no liability for any loss or expense whatsoever relating to
the accuracy of the information furnished herein or for the use thereof or for omissions therein. The
reader agrees not to hold Synergy Financial Systems liable for loss or expense from any and all
causes including without limitation, negligence, tort, contract, or other causes.
Implied warranties of merchantability and fitness for a particular purpose and all other warranties,
either expressed or implied, shall not apply to any aspect of this document.
Document History
The XML Library was designed to model all aspects of the set of messages defined in the SWIFT
FIN Service description as User-to-User Messages.
User-to-user messages fall into distinct categories to be used for different types of financial
transactions. Individual Message Types (MTs) are identified by a 3-digit number. The first digit
identifies the category of message. There are 9 categories of financial messages, each referring to a
different general usage:
All SWIFT messages conform to a defined block structure. Each block of a message contains data
of a particular type and is used for a particular purpose.
Each block of a message begins and ends with a curly bracket, or brace, character '{' and '}'
respectively. All main blocks are numbered, and the block number followed by a colon : is always
the first character within any block.
Blocks 1, 2 and 3 relate to header information, Block 4 contains the text of the message, and Block
5 contains trailer information.
Blocks 3, 4 and 5 may contain sub-blocks, that is blocks within blocks, or fields delimited by field
tags, depending on the nature of the message.
Message Maker r© v5.3 1
Specification XML Library
Only Block 1, the Basic Header Block, is mandatory for all messages. Blocks 2-5 are optional and
depend upon the nature of the message and on the application in which the message is being sent or
received. All user-to-user messages contain Blocks 2, 4, and 5.
We’ll start by detailing the header and trailer blocks, blocks 1-3 and 5 and finish by detailing block
4 the Text Block which poses most of the design issues.
The Basic Header is given in Block 1 of a SWIFT message and is the only header that appears on
all messages. The Basic Header provides the fundamental reference for any particular message and
is almost always automatically built by the CBT.
The Basic Header has the same format for both input and output messages. However, the
information contained in the Basic Header is relative to the sender when the message is input but
relative to the receiver when the same message is output.
The following is an example of a basic input header, as it might appear at the beginning of a user-
to-user message input within FIN:
{1:F01BANKBEBBAXXX2222123456}
Block Identifier
The Block Identifier for a Basic Header Block is always '1:'.
Application Identifier
The Application Identifier identifies the application within which the message is being sent or
received. The available options are:
These values are automatically assigned by the SWIFT system and the user's CBT, but the user
should be aware of their existence and significance. Here we’re only concerned with those
messages with an Application Identifier that tells us the message is for the FIN application.
Service Identifier
The Service Identifier consists of 2 numeric characters. It identifies the type of data that is being
sent or received and, in doing so, whether the message which follows is one of the following:
• a user-to-user message
• a system message
• a service message, for example, a session control command, such as SELECT, or a logical
acknowledgement, such as ACK/SAK/UAK.
Here we will be primarily concerned with identifier '01' which applies to all GPA and FIN system
and user-to-user messages. Other values include: '21' for message acknowledgements such as
ACK/NAK, UAK/UNK, '03' for SELECT commands, and so on. For full details, see the FIN
System Messages module of the SWIFT User Handbook.
In the Basic Header, the LT Code within the LT Identifier is specific to the LT that has established
the session in which the message is being transmitted, that is the sending LT for input messages or
the receiving LT for output messages.
Session Number
The Session Number identifies the session in which the message was transmitted. Within the Basic
Header, the 4-digit Session Number is the user's current GPA or FIN Session Number.
The XML format of this block is as follows, it has been populated with the data in the above
example.
Attribute Description
Block1
APDU The Application Identifier identifies the application within which the
message is being sent or received. The available options are:
SequenceNo The sequence number always consists of 6 digits. It is the ISN of the
sender's current input session or the OSN of the receiver's current
output session.
• a user-to-user message
• a system message
• a service message, for example, a session control command,
such as SELECT, or a logical acknowledgement, such as
ACK/SAK/UAK.
SessionNo The Session Number identifies the session in which the message was
transmitted. Within the Basic Header, the 4-digit Session Number is
the user's current GPA or FIN Session Number.
LTId1
This 12-character SWIFT address, given in the Basic Header Block, is the address of the sending
LT for input messages or of the receiving LT for output messages, and includes the Branch Code.
The Application Header of a SWIFT message provides information about the message itself.
The Application Header is given in Block 2 of a SWIFT message. It differs according to whether
the message is a GPA or a FIN message and whether the Application Header is part of an input or
an output message.
For input messages, the Application Header describes the type of message, its addressee and how it
should be sent.
The following is an example of an input Application Header, as it might appear at the top of a user-
to-user message, input within FIN:
Block Identifier
The Block Identifier for an Application Header Block is always '2:'.
Input/Output Identifier
For an input message, the Input/Output Identifier consists of the single letter 'I'.
Message Type
The Message Type consists of 3 digits which define the MT number of the message being input.
The example used above is for an MT 100 Customer Transfer.
Receiver's Address
This address is the 12-character SWIFT address of the receiver of the message, but with a LT Code
of 'X'. It defines the destination to which the message should be sent.
The system will replace the 'X' with a specific LT Code on delivery of the message according to the
delivery control exercised by the receiving user.
The Branch Code is mandatory and will be validated. The default of 'XXX' may be used, as in the
example above.
Unless otherwise documented, system messages addressed to the SWIFT system itself should be
addressed to SWFTXXXXXXXX.
Message Priority
This character, used within FIN Application Headers only, defines the priority with which a
message is delivered. The possible values are:
Message Priority 'S' must be used for user-to-system messages; for user-to-user messages either 'U'
or 'N' can be used. In the absence of user-specified delivery criteria, system messages are always
delivered first, followed by urgent priority messages and then normal priority messages.
Delivery Monitoring
Delivery monitoring options apply only to FIN user-to-user messages, and allow the sender of a
message to request:
automatic MT 011 Delivery Notification once the message has been delivered
automatic MT 010 Non-Delivery Warning if a message is not delivered within the specified
obsolescence period (see below)
1 = Non-Delivery Warning
2 = Delivery Notification
3 = Non-Delivery Warning and Delivery Notification.
If the message has priority 'U' then the user must request delivery monitoring option '1' or '3'. If the
message has priority 'N', the user can request delivery monitoring option '2', or, by leaving the
option blank, no delivery monitoring.
Obsolescence Period
The obsolescence period defines the period of time after which a Delayed Message (DLM) trailer is
added to a FIN user-to-user message when the message is delivered. For urgent priority messages, it
is also the period of time after which, if the message remains undelivered, a Non-Delivery Warning
is generated.
The values for the obsolescence period are 003 (15 minutes) for 'U' priority, and 020 (100 minutes)
for 'N' priority. An obsolescence period can only be specified when delivery monitoring has been
requested (option 1 or 3 for urgent priority messages, option 2 for normal priority messages). If no
delivery monitoring has been requested, and an obsolescence period is specified, the message will
be NAKed with error code H25.
GPA input Application Headers are similar to their FIN equivalents except that GPA messages do
not specify priority, delivery monitoring, or obsolescence period.
For output messages, the output Application Header defines the type of message, who sent it and
when, and when it was delivered.
The following is an example of an output Application Header, as it might appear at the top of a
user-to-user message, output within FIN:
Block Identifier
The Block Identifier for an Application Header Block is always '2:'.
Input/Output Identifier
For an output message, the Input/Output Identifier consists of the single letter: 'O'.
Message Type
The Message Type consists of 3 digits which define the MT number of the output message. The
example used is for an MT 100 Customer Transfer.
Input Time
The Input Time (HHMM) is expressed in the sender's local time. If the message is a system
message, the input time is the time the message was generated by the system, according to
Greenwich Mean Time (GMT).
MIR
Every input message is assigned a unique MIR. This is a string of 28 characters which consists of
the date, local to the sender, when the message was input, and the sender's full SWIFT address,
Session Number and ISN.
If the output message is system generated, the system MIR will show a Pseudo-Logical Terminal
(PLT) address, for example, DYLRXXXXXXXX, identifying as the sender the particular suite of
programs which generated the message within the system. The date given in the system MIR is the
generation date, according to GMT.
Output Date
The Output Date (YYMMDD) is the date, local to the receiver, on which the message is delivered
to the receiver.
Output Time
The Output Time (HHMM) is the time, local to the receiver, at which the message is actually
delivered to the receiver.
Message Priority
The Message Priority, for FIN messages only, is repeated in the FIN output Application Header.
GPA output Application Headers are similar to their FIN equivalent except that for GPA the
Message Priority is not included
Message Maker r© v5.3 8
Specification XML Library
1.3.3 Application Header Block - XML
<Block2 Dir="I" InpDate=" " InpTime=" " MT="101" OutDate=" " OutTime=" "
SequenceNo=" " SessionNo=" ">
<LTId2 CharType="c" CodeText=" " Format="{SWIFTLT11}" Key="LTId2"
Length="11" Lines="1" MinLength="8"
TextE="Address">BANKDEFFXXX</LTId2>
<PrioDelMon CharType="c" Combo=" " Format="1!a[1!c]" Key="priodelmon"
TextE="Delivery Monitoring">U3</PrioDelMon>
<Obsol
CharType="n" Format="3!n" Key="obsol" Length="3"
Lines="1" MinLength="3" Status="O"
TextE="Obsolescence Period">003</Obsol>
</Block2>
Attribute Description
Block2
Dir For an input message, the Input/Output Identifier consists of the
single letter 'I' or ‘O’ respectively.
InpDate The input date, date, local to the sender, when the message was input.
This is extracted from the MIR. (Output Application Header)
InpTime The Input Time (HHMM) is expressed in the sender's local time. If
the message is a system message, the input time is the time the
message was generated by the system, according to Greenwich Mean
Time (GMT). (Output Application Header)
OutDate The Output Date (YYMMDD) is the date, local to the receiver, on
which the message is delivered to the receiver. (Output Application
Header)
OutTime The Output Time (HHMM) is the time, local to the receiver, at which
the message is actually delivered to the receiver. (Output Application
Header)
The system will replace the 'X' with a specific LT Code on delivery of the message according to
the delivery control exercised by the receiving user.
Priority
This character, used within FIN Application Headers only, defines the priority with which a
message is delivered. The possible values are:
Message Priority 'S' must be used for user-to-system messages; for user-to-user messages either 'U'
or 'N' can be used. In the absence of user-specified delivery criteria, system messages are always
delivered first, followed by urgent priority messages and then normal priority messages.
Delivery Monitoring
Delivery monitoring options apply only to FIN user-to-user messages, and allow the sender of a
message to request:
• automatic MT 011 Delivery Notification once the message has been delivered
• automatic MT 010 Non-Delivery Warning if a message is not delivered within the specified
obsolescence period (see below)
• both, or neither, options. This may be requested on an individual message basis.
If the message has priority 'U' then the user must request delivery monitoring option '1' or '3'. If the
message has priority 'N', the user can request delivery monitoring option '2', or, by leaving the
option blank, no delivery monitoring.
Priority
This character, used within FIN Application Headers only, defines the priority with which a
message is delivered. The possible values are:
Message Priority 'S' must be used for user-to-system messages; for user-to-user messages either 'U'
or 'N' can be used. In the absence of user-specified delivery criteria, system messages are always
delivered first, followed by urgent priority messages and then normal priority messages.
Obsol
The obsolescence period defines the period of time after which a Delayed Message (DLM) trailer
is added to a FIN user-to-user message when the message is delivered. For urgent priority
messages, it is also the period of time after which, if the message remains undelivered, a Non-
Delivery Warning is generated.
The values for the obsolescence period are 003 (15 minutes) for 'U' priority, and 020 (100 minutes)
for 'N' priority. An obsolescence period can only be specified when delivery monitoring has been
requested (option 1 or 3 for urgent priority messages, option 2 for normal priority messages). If no
delivery monitoring has been requested, and an obsolescence period is specified, the message will
be NAKed with error code H25.
The User Header is an optional header available within FIN for user-to-user messages only. It
appears in Block 3 of a SWIFT message, and allows users to provide their own reference within the
headers for a particular message.
A User Header can only be assigned by the sender of a message and, if assigned, will always appear
on the output message copy. Relevant parts of the User Header will be repeated in related system
messages and acknowledgements.
Block 3 may contain tag 113, defining banking priorities, and tag 108, which is a user reference.
The user reference part of the User Header may be used as one of the selection criteria when
retrieving a message.
The optional field tags 103 and 115 are also used in Block 3 for the FIN Copy service. The order of
tags, when present, is 103, 113, 108 and 115.
An optional field tag 119 can be included in Block 3 of certain messages to specify that different
validation rules are to be applied. Agreed code words in field 119 indicate what validation rules
SWIFT will apply. If field 119 is present, it should appear after field 108.
<Block3>
<BLOCK3_1 Absnum="1" Group="BLOCK3" Key="BLOCK3_1" Nr="1" OType="F"
Status="O" Tag="103" TextE="Service Code" href="/103.HTM">
<BLOCK3_1_1 Absnum="1" CharType="a" Format="3!a" Key="BLOCK3_1_1"
Length="3" Lines="1" MinLength="3" SubField="1"
Tag="103" TextE="Service Code"/>
</BLOCK3_1>
<BLOCK3_2 Absnum="2" Group="BLOCK3" Key="BLOCK3_2" Nr="2" OType="F"
Status="O" Tag="113" TextE="Bank Priority" href="/113.HTM">
<BLOCK3_2_1 Absnum="2" CharType="x" Format="4!x" Key="BLOCK3_2_1"
Length="4" Lines="1" MinLength="4" Status="O" SubField="1"
Tag="113" TextE="Banking Priority"/>
</BLOCK3_2>
<BLOCK3_3
Absnum="3" Group="BLOCK3" Key="BLOCK3_3" Nr="3" OType="F"
Status="O" Tag="108" TextE="MUR" href="/108.HTM">
<BLOCK3_3_1 Absnum="3" CharType="x" Format="8x" Key="BLOCK3_3_1"
Length="8" Lines="1" MinLength="0" Status="O" SubField="1"
Tag="108" TextE="MUR"/>
<BLOCK3_3_2 Absnum="3" CharType="x" Format="8!x" Key="BLOCK3_3_2"
Length="8" Lines="1" MinLength="8" Status="M" SubField="2" Tag="108"
TextE="MessageMaker Key">39D10680</BLOCK3_3_2>
</BLOCK3_3>
<BLOCK3_4 Absnum="4" Group="BLOCK3" Key="BLOCK3_4" Nr="4" OType="F"
Status="O" Tag="119" TextE="Validation Flag" href="/119.HTM">
<BLOCK3_4_1 Absnum="4" CharType="c" Format="8!c" Key="BLOCK3_4_1"
Length="8" Lines="1" MinLength="8" Status="O" SubField="1"
Tag="119" TextE="Validation Flag"/>
</BLOCK3_4>
<BLOCK3_5 Absnum="5" Group="BLOCK3" Key="BLOCK3_5" Nr="5"
OType="F" Status="O" Tag="115"
TextE="Payment Release Information Receiver"
href="/115.HTM">
<BLOCK3_5_1 Absnum="5" CharType="x" Format="32x" Key="BLOCK3_5_1"
Length="32" Lines="1" MinLength="0" SubField="1"
Tag="115" TextE="Payment Release Information Receiver"/>
</BLOCK3_5>
</Block3>
Block3
BLOCK3_1
Tag 103 FIN Copy Service Code.
BLOCK3_2
Tag 113 Banking Priority
BLOCK3_3
Tag 108 Message User Reference (MUR)
The MUR is broken into two fields, the first can be supplied by the operator and is made up of 8
characters.
The second part of the MUR is reserved for use by MessageMaker™. MessageMaker™ uses this
field to hold the unique or primary key of the message.
BLOCK3_4
Tag 119 Validation Flag
BLOCK3_1
Tag 103 FIN Copy Service Code
Trailers always appear in Block 5 of a SWIFT message. Each trailer appears as a separate sub-block
and is bounded by block delimiters.
Each trailer begins with a 3-letter code, followed by a colon, followed by the trailer information
itself.
For example, Block 5 of a user-to-user message, sent with a MAC and a Checksum Trailer, may
appear as:
{5:{MAC:41720873}{CHK:123456789ABC}}
One or more trailers may appear in Block 5 of a SWIFT message. Users are expected to take due
note of trailer information. This is especially important in the case of PDM and PDE trailers, in
order to avoid duplicate payments.
<Trailer>
<TrailerRec>
<TrailerType>MAC</TrailerType>
<TrailerText>417720873</TrailerText>
</TrailerRec>
<TrailerRec>
<TrailerType>CHK</TrailerType>
<TrailerText>123456789ABC</TrailerText>
</TrailerRec>
</Trailer>
The Synergy Custom Block has been provided to allow us to extend the message beyond the
SWIFT message format. Currently the block only supports the additional “Charge Code” field
which allows an organisation track costs against message processing, where each user via the
department or organisational unit to which their attached is allocated a charge code, which is
automatically appended to each message they create.
<Extension>
<Extension_1 Absnum="1" Group="Extension" Key="Extension_1" Nr="1" OType="F"
Status="M" Tag="X01" TextE="Charge Code"
href="/X01.HTM">
<Extension_1_1 Absnum="1" CharType="c" Format="6c" Key="Extension_1_1"
Length="8" Lines="1" SubField="1"
Tag="X01" TextE="Charge Code"/>
</Extension_1>
</Extension>
Attribute Description
Extension
Extension_1
Charge Code (Optional).
The Text Block is where the main content of the message is held. It contained within the MTrich
XML node which has the following format. The example given below is the MTrich node of an MT
543 “Deliver Against Payment” message.
<MTrich
Key="MTrich"
Length="10000"
MAC="Y"
MT="543"
Rules="E89,E92,E87,E70,E88,E99,E14,E52,E86,E08,E62,E84,E90,E93, ….."
Title="Deliver Against Payment">
…… body of message
</MTrich>
Attribute Description
MTrich
Key The id or unique identifier for the node “MTrich”.
Rules The semantic validation rules which are applied to the components of this
SWIFT message.
The body of the text block is made up of a collection of fields or tags, from here on in we’ll refer to
them as fields. SWIFT provide us with a number of permutations on the way these fields are laid
out in the body of the text block.
2. A message consisting of fields, options and lists (a repeated collection of fields, options and
further lists). An example of this type of message is an MT 210 “Notice to Receive”.
3. A message where the fields, options and lists are broken into sections referred to as
sequences. These sequences can be either mandatory or optional. An example of this type of
message is an MT 300 “Foreign Exchange Confirmation”.
5. Finally sequences and sub sequences can be designated as being repetitive. An example of
this kind of message is an MT 564 “Corporate Action Notification”.
Each of these structures needs to be represented in an XML format; the next section will discuss the
various constructs found in the Clarity Suite Message Maker XML Library for SWIFT FIN
messages.
Even the most basic message in the SWIFT FIN schema is made up a collection of fields which are
either mandatory or optional; in turn each field is made up of a series of optional and mandatory
subfields.
The following is an example of a field 51A from MT 101 “Request For Transfer”, it shows node
AA_SA_7_51A which defines the field with child nodes AA_SA_7_51A_1. AA_SA_7_51A_2 and
AA_SA_7_51A_3 which represent the 3 subfields of this field type. Where possible the subfields
should correspond to the description contained in the SWIFT documentation, but this may not
always be so as some subfields may pose complications which require a more subtle approach.
The important attributes here are the OType=”F” (Object Type ‘F’ield) on the field node and the
SubField attribute on each of the subfields, the value of the SubField attribute indicates the order of
the subfield within the field definition.
The following describes each of the attributes found in this kind of construct.
Attribute Description
Group The Key or suffix of the parent construct to which this field
belongs.
y ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
abcdefghijklmnopqrstuvwxyz/\-<SPACE>?:(),.'+"=!%&*;<>
z ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789<SPACE>
abcdefghijklmnopqrstuvwxyz/\-?:(),.'+"=!%&*;<>@#{
c ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
C ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789<SPACE>
e <SPACE>
h 0123456789ABCDEF
s +-
A ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
B ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz0123456789
d 0123456789,
X ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789<SPACE>
abcdefghijklmnopqrstuvwxyz\-?:(),.'+
N N
Digits The maximum number of digits allowed to the left of the decimal
place, normally used when dealing with exchange rates.
Format The format of the subfield, may indicate the type of functions to
be applied when validating the contents of the subfield..
Qualifier A fixed value qualifier for the subfield, often found in ISO 15022
message formats.
SubField The index or offset of the subfield within it’s parent field
construct.
An option describes a mutually exclusive collection of fields. When creating a SWIFT message an
operator may be presented with different flavours or options of the same field, e.g. for a field 52
“Ordering Institution” an operator can choose one of two options 52A or 52D for example, the
choice is normally dependent on the kind of data the operator has to work with. Here 52A allows
the operator define the ordering institution where a BIC (Bank Index Code) has been provided, 52D
on the other hand allows the operator define the same ordering customer but where no BIC is
available they can supply the actual postal address of the ordering customer instead.
The following XML has been taken from MT 101 “Request For Transfer”, it shows the definition of
the 52a “Account Servicing Institution” option, which allows the choice of using either a field 52A
or 52C to represent this information. The XML presented here is made up of the option definition
node AA_SA_6_52a with a definition of each mutually exclusive fields; AA_SA_6_52a_52A and
AA_SA_6_52a_52C as children of the option node.
The important attributes to note are the OType=”O” (Object Type O’ption) on the option definition,
also not the absence of an OType attribute on each for the fields defined with in the option. Instead
we see a new SelOpt attribute which has the value “Y” or “N”, where “Y” indicates that the
operator has selected this particular field option. The remainder of the XML consists of the subfield
definitions which have been described in the previous section.
A SWIFT message often consists of a field, option or a collection of fields and options which are
marked as repetitive; here we refer to this construct as a list.
The following sample XML construct is taken from an MT 103 “Single Customer Credit Transfer”,
it shows a list consisting of one field which may be repeated a number of times. Restrictions on the
number of iterations in a SWIFT message was dropped in the November 2003 Standards Release.
The XML fragment shows the list definition node AA_2 which contains a row definition node
AA_2_R1 which in turn will contain the fields, options and other lists that can be repeated.
The important attributes to note here are the OType=”I” (Object Type I’terator) or the list definition
node, with the OType=”R” (Object Type R’ow). It’s the row definition that is repeated for each
iteration, with the Key attribute being changed reflect the index of the row, for example row 1 has a
Key attribute of AA_2_R1, row 2 will have a Key attribute of AA_2_R2, row 3 will have
AA_2_R3 and so on. The Key attributes on the contained fields, options and further list will also be
change to reflect which iteration they belong to. This functionality is performed within the
MessageMaker™ Application Programming Interface (API) by such functions as addRow. See the
“MessageMaker™ Application Programming Interface (API) - User Guide” for further details.
Where a list is nested within other lists or repetitive sequences/sub sequences the Key attribute will
be changed to reflect iterations within the nested structures. It’s important that every element within
the message has a unique Key attribute (node names may be repeated).
Certain messages are broken into sections referred to a sequences and sub sequences; here we
discuss the necessary XML for these constructs.
The following sample XML construct fragment is taken from the definition of Sequence A of the
MT 300 “Foreign Exchange Confirmation”. Here we see the sequence definition AA_1 containing
the child nodes representing the field, option, list and sub-sequences definition contained with in
this sequence. The same format applies to the XML for a subsequence construct.
</AA_1>
The important attribute to note here is the OType=”S” (Object Type S’equence/S’ubsequence)
which identifies the sequence definition, the body of the construct consists of fields, options, lists
and other sequences (subsequences).
The following XML fragment taken is from the description of optional sequence D in an MT 303
“Forex/Currency Option Allocation Instruction”. What we see below is the sequence node AA_4,
which contains an iteration node AA_SD_1, which in turn contains a row node AA_SD_I1_1. It’s
the row node that contains our field, option, list and subsequence definitions; again it’s the row
node that is repeated with each iteration of the sequence/sub sequence.
</AA_SD_I1_1>
</AA_SD_1>
</AA_4>
The key attributes to note here are OType=”S” (Object Type S’equence/S’ubsequence) on the
sequence node, the OType=”I” (Object Type I’teration) on the iteration node and finally the
OType=”R” on the row node. It’s the row definition that is repeated for each iteration, with the Key
attribute being changed reflect the index of the row, for example all elements contained within row
1 start with a Key attribute of AA_SD_I1_R1, row 2 will have elements that start with a Key
attribute of AA_SD_I1_R2, row 3 will have AA_SD_I1_R3 and so on. This functionality is
performed within the MessageMaker™ Application Programming Interface (API) by such functions
as addRow. See the “MessageMaker™ Application Programming Interface (API) - User Guide”
for further details.