Author |
Message
|
aslam_kumhar |
Posted: Mon Feb 02, 2015 11:25 pm Post subject: Extra xsi element after Mapping and DFDL nil value for EOS |
|
|
Novice
Joined: 30 Oct 2014 Posts: 22
|
Hi Everyone,
I don't know the exact reason behind this but sometimes there's an extra element named "http://www.w3.org/2000/xmlns/:xsi " with value "http://www.w3.org/2001/XMLSchema-instance" added in my message after mapping node or from input queue. The problem get resolved when i redeploy but one of my colleague is continuously facing this problem. I have installed fix pack for iib and toolkit also (IIB and Toolkit 9.0.0.2) but no luck the same message flow is working fine on my development environment. Here's a trace of the message:
Code: |
( ['GENERICROOT' : 0x391ebec0]
(0x01000000:Name):Properties = ( ['MQPROPERTYPARSER' : 0x38e1be40]
(0x03000000:NameValue):MessageSet = '' (CHARACTER)
(0x03000000:NameValue):MessageType = '{}:ISO8583_1987_1Link' (CHARACTER)
(0x03000000:NameValue):MessageFormat = '' (CHARACTER)
(0x03000000:NameValue):Encoding = 546 (INTEGER)
(0x03000000:NameValue):CodedCharSetId = 437 (INTEGER)
(0x03000000:NameValue):Transactional = FALSE (BOOLEAN)
(0x03000000:NameValue):Persistence = FALSE (BOOLEAN)
(0x03000000:NameValue):CreationTime = GMTTIMESTAMP '2015-01-30 06:42:34.872002' (GMTTIMESTAMP)
(0x03000000:NameValue):ExpirationTime = -1 (INTEGER)
(0x03000000:NameValue):Priority = 0 (INTEGER)
(0x03000000:NameValue):ReplyIdentifier = X'' (BLOB)
(0x03000000:NameValue):ReplyProtocol = 'ADAPTOR' (CHARACTER)
(0x03000000:NameValue):Topic = NULL
(0x03000000:NameValue):ContentType = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourceType = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourceToken = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourcePassword = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourceIssuedBy = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedType = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedToken = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedPassword = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedIssuedBy = '' (CHARACTER)
)
(0x01000000:Name):DFDL = ( ['dfdl' : 0x391ec1f0]
(0x01000000:Name):ISO8583_1987_1Link = (
(0x03000000:NameValue):MTI = 200 (INTEGER)
(0x03000000:NameValue):PrimaryAccountNumber_002 = '5893888888888888888' (CHARACTER)
(0x01000000:Name ):ProcessingCode_003 = (
(0x03000000:NameValue):ProcessingCodeAction = '62' (CHARACTER)
(0x03000000:NameValue):ProcessingCodeFromAccount = '00' (CHARACTER)
(0x03000000:NameValue):ProcessingCodeToAccount = '00' (CHARACTER)
)
(0x03000000:NameValue):AmountTransaction_004 = 1000.00 (DECIMAL)
(0x03000000:NameValue):TransmissionDatetime_007 = TIMESTAMP '1970-04-23 13:15:40' (TIMESTAMP)
(0x03000000:NameValue):SystemsTraceAuditNumber_011 = '672030' (CHARACTER)
(0x03000000:NameValue):TimeLocalTransaction_012 = TIME '13:15:40' (TIME)
(0x03000000:NameValue):DateLocalTransaction_013 = DATE '1970-11-20' (DATE)
(0x01000000:Name ):MerchantType_018 =
(0x03000000:NameValue):PointOfServiceEntryMode_022 = '000' (CHARACTER)
(0x03000000:NameValue):NetworkInternationalIdentifier_024 = 'INO' (CHARACTER)
(0x01000000:Name ):AcquiringInstitutionIdentificationCode_032 =
(0x03000000:NameValue):RetrievalReferenceNumber_037 = '000000004494' (CHARACTER)
(0x01000000:Name ):CardAcceptorTerminalIdentification_041 =
(0x01000000:Name ):CardAcceptorNameLocation_043 =
(0x03000000:NameValue):CurrencyCodeTransaction_049 = '586' (CHARACTER)
(0x03000000:NameValue):CurrencyCodeSettlement_050 = '586' (CHARACTER)
(0x03000000:NameValue):AccountIdentification1_102 = '1236547896' (CHARACTER)
(0x01000000:Name ):ReservedPrivate_120 = (
(0x03000000:NameValue):ToAccount = NULL
(0x03000000:NameValue):SourceIMD = NULL
(0x03000000:NameValue):DestinationIMD = NULL
(0x03000000:NameValue):Identifier = 'D' (CHARACTER)
)
(0x03000000:NameValue)http://www.w3.org/2000/xmlns/:xsi = 'http://www.w3.org/2001/XMLSchema-instance' (CHARACTER)
)
)
) |
One more thing is there a way using DFDL by which if End of Stream is reached during parsing for an element i could specify its and all other subsequent elements value to nil. |
|
Back to top |
|
 |
kimbert |
Posted: Tue Feb 03, 2015 6:14 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
The xsi:type attribute is for use by XML processors. DFDL should ignore it. Is it actually causing a problem?
The other question needs some clarification. Do you want to
a) allow some fields to be omitted, and receive a message tree that omits the missing fields
or
b) insert every missing field into the message tree with the value NULL.
If b), why is that better than a)? _________________ Before you criticize someone, walk a mile in their shoes. That way you're a mile away, and you have their shoes too. |
|
Back to top |
|
 |
aslam_kumhar |
Posted: Thu Feb 05, 2015 4:56 am Post subject: |
|
|
Novice
Joined: 30 Oct 2014 Posts: 22
|
Sorry for replying late.
kimbert wrote: |
The xsi:type attribute is for use by XML processors. DFDL should ignore it. Is it actually causing a problem?
|
yes my message format is iso8583 and after mapping i generate bitmaps using esql so it add an extra bitmap for xsi element now i can take care of it in esql but this behaviour is unpredictable sometimes it occurs sometimes is don't.
kimbert wrote: |
The other question needs some clarification. Do you want to
a) allow some fields to be omitted, and receive a message tree that omits the missing fields
or
b) insert every missing field into the message tree with the value NULL.
If b), why is that better than a)?
|
its "a" I want field to be omitted or "nil" but its the last parsable field with type "Type_ans_LLL" prefixed length. |
|
Back to top |
|
 |
aslam_kumhar |
Posted: Sat Feb 07, 2015 2:35 am Post subject: |
|
|
Novice
Joined: 30 Oct 2014 Posts: 22
|
Guys any help will be really appreciated. |
|
Back to top |
|
 |
kimbert |
Posted: Sat Feb 07, 2015 7:10 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Quote: |
my message format is iso8583 and after mapping i generate bitmaps using esql so it add an extra bitmap for xsi element now i can take care of it in esql |
I don't know why that is happening, but I suggest that you adjust your ESQL so that it ignores any element that is in the xsi namespace.
Quote: |
its "a" I want field to be omitted or "nil" |
That's both a) and b), which does not make sense. A field cannot be omitted from the message tree AND have the value NULL. Which one do you want?
( btw, 'nil' is represented as NULL in the message tree ).
Quote: |
its the last parsable field with type "Type_ans_LLL" prefixed length. |
I don't understand what that means. Are you saying that the final field in your model has lengthKind='prefixed'?
We will probably find a solution much faster if you supply an example of what you are trying to do, or else explain it in a lot more detail. _________________ Before you criticize someone, walk a mile in their shoes. That way you're a mile away, and you have their shoes too. |
|
Back to top |
|
 |
aslam_kumhar |
Posted: Sat Feb 07, 2015 7:41 am Post subject: |
|
|
Novice
Joined: 30 Oct 2014 Posts: 22
|
kimbert wrote: |
I don't know why that is happening, but I suggest that you adjust your ESQL so that it ignores any element that is in the xsi namespace.
|
Fair enough, I will deal with it in ESQL.
kimbert wrote: |
That's both a) and b), which does not make sense. A field cannot be omitted from the message tree AND have the value NULL. Which one do you want?
( btw, 'nil' is represented as NULL in the message tree ).
|
My mistake for creating confusion. I think what you mean by omitted is that its occurrence be 0 and if the occurrence is 1 or more then field cannot be omitted but you can specify nil using nillable properties of dfdl.
kimbert wrote: |
I don't understand what that means. Are you saying that the final field in your model has lengthKind='prefixed'?
We will probably find a solution much faster if you supply an example of what you are trying to do, or else explain it in a lot more detail.
|
Yeah the field in question has lengthKind = prefixed. Now my condition is that the field in question is the last field with occurrence 1 all other fields beyond that has occurrence 0, but there is no data for this field(in fact parser has reached at the end of stream), i cannot set the nillable properties because i do not know what to set in 'nil value' property of dfdl for end of stream.
Does that clarify? If not then i can construct a test dfdl model with a test input and post it here.
Thanks for your reponse. |
|
Back to top |
|
 |
kimbert |
Posted: Mon Feb 09, 2015 2:28 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Quote: |
I think what you mean by omitted is that its occurrence be 0 and if the occurrence is 1 or more then field cannot be omitted but you can specify nil using nillable properties of dfdl. |
Possibly. But I don't think minOccurs is relevant to this part of the conversation.
When I say 'omitted from the message tree' I mean 'not in the message tree'. If a field is not in the message tree then it cannot have a value. So you cannot have both a) and b).
If the prefixed-length element is a complex element then you cannot ( in any version of IIB up to v9.0.0.2 ) parse it as a nil value.
If it is simple then you can. _________________ Before you criticize someone, walk a mile in their shoes. That way you're a mile away, and you have their shoes too. |
|
Back to top |
|
 |
aslam_kumhar |
Posted: Mon Feb 09, 2015 8:20 am Post subject: |
|
|
Novice
Joined: 30 Oct 2014 Posts: 22
|
kimbert wrote: |
If the prefixed-length element is a complex element then you cannot ( in any version of IIB up to v9.0.0.2 ) parse it as a nil value.
If it is simple then you can. |
element is of simple type not complex.
I will create a test message model along with test message and post it here in a day or 2 cause i am quite busy right now.
Appreciate your help. |
|
Back to top |
|
 |
aslam_kumhar |
Posted: Tue Feb 24, 2015 10:33 am Post subject: |
|
|
Novice
Joined: 30 Oct 2014 Posts: 22
|
aslam_kumhar wrote: |
kimbert wrote: |
If the prefixed-length element is a complex element then you cannot ( in any version of IIB up to v9.0.0.2 ) parse it as a nil value.
If it is simple then you can. |
element is of simple type not complex.
I will create a test message model along with test message and post it here in a day or 2 cause i am quite busy right now.
Appreciate your help. |
Sorry for replying late.
I have created another thread for this particular issue.
Please submit your suggestions at http://www.mqseries.net/phpBB2/viewtopic.php?p=388844 |
|
Back to top |
|
 |
|