IBM Integration Toolkit: невозможно получить доступ к элементам и назначить пространство имен по умолчанию

Я провел три дня, исследуя и исследуя различные способы доступа к корневому элементу сообщения XML на входном узле, но не смог получить ненулевой результат от этой операции:

DECLARE RootElement CHARACTER FIELDNAME(InputRoot.XMLNSC.*[<]);

RootElement всегда имеет значение null, но когда я это делаю (ниже), сообщение копируется правильно.

SET OutputRoot = InputRoot;

Дело в том, что входящее сообщение не имеет объявленных пространств имен, и в вычислительном узле я пытаюсь назначить его:

SET OutputRoot.(XMLNSC.NamespaceDecl)xmlns = orgs_crm;

где orgs_crm -

DECLARE NS_CRM_MDO CONSTANT CHARACTER 'http://example.org/schema_crm';
DECLARE orgs_crm    NAMESPACE   NS_CRM_MDO;

Входное сообщение:

<?xml version="1.0" encoding="UTF-8"?>
<Message><MessageId>5348569534564534682</MessageId></Message>

Результат должен быть:

<?xml version="1.0" encoding="UTF-8"?>
<Message xmlns="http://example.org/schema_crm" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <MessageId>5348569534564534682</MessageId>
</Message>

Мне грустно, что информации о разработке IBM Integration Toolkit недостаточно. Даже с RedBook (здесь) я не мог понять, как заставить вещи работать. Буду признателен за любую помощь. Спасибо.


person Jake OS    schedule 09.08.2015    source источник


Ответы (1)


Наконец-то я получил ответ на этот вопрос. Сначала мне пришлось преобразовать входящий InputRoot.BLOB в XMLNSC в предыдущем вычислительном узле, только после этого я мог выполнять обычные преобразования XML.

DECLARE inCCSID INT InputProperties.CodedCharSetId; 
DECLARE inEncoding INT InputProperties.Encoding; 
DECLARE inBitStream BLOB ASBITSTREAM(InputRoot.BLOB, inEncoding, inCCSID); 
CREATE LASTCHILD OF OutputRoot DOMAIN('XMLNSC') PARSE(inBitStream, inEncoding, inCCSID,'BLOB', 'XMLNSC');
person Jake OS    schedule 10.08.2015