Я провел три дня, исследуя и исследуя различные способы доступа к корневому элементу сообщения 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 (здесь) я не мог понять, как заставить вещи работать. Буду признателен за любую помощь. Спасибо.