Сопоставление Biztalk с префиксом пространства имен

У меня есть требование создавать выходные сообщения с префиксом пространства имен на всех узлах.

Может ли кто-нибудь помочь мне?

Моя проблема в том, что после сопоставления в BizTalk выходное сообщение имеет встроенное пространство имен.

Например, я ожидаю:

<ns0:root xmlns:ns0="http://www.domain1.com" xmlns:domain2="http://www.domain2.com">
    <domain2:element1>abc</domain2:element1>
    <ns0:element2>abc</ns0:element2>
</ns0:root>

Но это было:

<root xmlns="http://www.domain1.com">
    <element1 xmlns="http://www.domain2.com">abc</element1>
    <element2 xmlns="http://www.domain1.com">abc</element2>
</root>

Псевдонимы пространства имен ns0, domain2 мне не важны.


person Thien Long    schedule 18.06.2015    source источник


Ответы (3)


Оба эти Xml одинаковы, не имеет значения, используется ли префикс или нет, поскольку элементы Xml принадлежат пространству имен в соответствии с определенной схемой. Недопустимо запрашивать xml с определенным префиксом. Даже если вам нужно это сделать, используйте пользовательский Xslt.

person Vikas Bhardwaj    schedule 18.06.2015
comment
Хорошей практикой является определение элементов с помощью префикса. У некоторых синтаксических анализаторов могут возникнуть проблемы с работой с пространствами имен по умолчанию, а некоторые торговые партнеры могут потребовать уточнения элементов. - person Dan Field; 18.06.2015
comment
Да, как сказал Дэн Филд, к сожалению, у нашего клиента возникли проблемы с пространством имен по умолчанию. - person Thien Long; 19.06.2015
comment
Как я уже говорил ранее, если вам нужно это сделать, используйте пользовательский Xslt. Я согласен с Дэном в отношении уточнения элементов с помощью пространства имен, однако в обоих xml уже есть квалифицированные элементы, поэтому я предполагаю, что ваша схема верна. Имея префикс, просто избегайте объявления пространства имен с каждым элементом. Если вы проверяете свой второй xml с помощью схемы yr, он должен быть действительным также как и первый. Если ваш клиент настаивает на использовании префиксов, вы можете сделать это с помощью пользовательского Xslt. Подтвердите карту года, она сгенерирует файл Xsl, проверьте в окне вывода. Используйте это как отправную точку. После того, как Дэйн сохранит файл Xsl в своем проекте и использует его в карте. - person Vikas Bhardwaj; 19.06.2015

Задайте для свойства ElementFormDefault целевой схемы значение Qualified:

Подходящее свойство

Это свойство можно просмотреть, щелкнув узел <Schema> в дереве рассматриваемой схемы; обратите внимание, что это изменение схемы, которое не выполняется на карте (несмотря на то, как может выглядеть изображение):

Узел схемы

person Dan Field    schedule 18.06.2015
comment
Это схема клиента, я не могу ее изменить. Возможно, пользовательский xslt является вариантом. - person Thien Long; 19.06.2015
comment
Да, механизм сопоставления будет полагаться на это свойство в схеме. Если вы не можете изменить его, лучше всего подойдет пользовательский XSLT. - person Dan Field; 19.06.2015

Есть много устаревших синтаксических анализаторов, которые полагаются на префикс ns. Даже если это одно и то же. решение здесь состоит в том, чтобы установить для вашей схемы тип XML, и у вас будет свое пространство имен, если у вас есть схема плоского файла, которую вы должны, как упоминал Дэн Филд, установить для вашего ElementFormDefault значение Qualified и написать то, что вы хотите, в XSLT

person mahieddine    schedule 07.07.2015