0 xsd: anyURI с использованием интеграционной шины esql.IBM

<payload xsi:type="ns787:SomeRequest" xmlns:ns787="http://ws.abc.efg.com"/>

Я работаю с IIB v10.0.0.7. Я хотел бы определить один из элементов XML как тип xsd:anyURI, используя esql. вывод должен быть таким, как указано выше:


person iibNewbie    schedule 31.03.2020    source источник
comment
Вы всегда должны публиковать свой код, когда задаете вопрос в StackOverflow. См. stackoverflow.com/help/how-to-ask для получения дополнительных сведений о правилах сайта.   -  person kimbert    schedule 31.03.2020


Ответы (1)


Я предполагаю, что вы спрашиваете об атрибуте xsi: type. Синтаксический анализатор XMLNSC не заполняет автоматически префикс пространства имен в значении атрибута xsi: type - вы должны установить все значение (префикс: localName) как буквальную текстовую строку.

DECLARE namespace787 NAMESPACE 'http://ws.abc.efg.com';
DECLARE namespaceXSI NAMESPACE 'http://www.w3.org/2001/XMLSchema-instance';

CREATE LASTCHILD OF OutputRoot.XMLNSC.payload TYPE XMLNSC.Attribute NAMESPACE namespaceXSI NAME 'type' VALUE 'ns787:SomeRequest';
CREATE LASTCHILD OF OutputRoot.XMLNSC.payload TYPE XMLNSC.NamespaceDecl NAME 'xmlns:ns787' VALUE namespace787;

или, если вы предпочитаете использовать SET вместо CREATE:

...
SET OutputRoot.XMLNSC.payload.(XMLNSC.Attribute)namespaceXSI:type = namespaceXSI;
SET OutputRoot.XMLNSC.payload.(XMLNSC.NamespaceDecl)xmlns:ns787 = namespace787;

Если вы все еще застряли, вам может пригодиться этот метод: Как создать сложный объект в ESQL

person kimbert    schedule 31.03.2020
comment
Спасибо kimbert за быстрый ответ. - person iibNewbie; 31.03.2020
comment
Спасибо @kimbert за быстрый ответ. Пытаюсь получить результат, как указано в сообщении. Я прошел через центр знаний по созданию сложных элементов, но я новичок в iib и читаю темы, а затем реализовать их в сроки немного сложно. Можете ли вы предоставить ссылку для примера кода, если это возможно. - person iibNewbie; 31.03.2020