У меня есть исходная схема с меньшим количеством элементов, чем схема назначения. Когда я запускаю карту, отображаются только сопоставленные элементы в схеме назначения. Я хочу, чтобы все элементы в схеме назначения отображались, даже если они пусты. Как это сделать?
BizTalk 2010 Сообщение о назначении карты показывает все узлы
Ответы (2)
Установите «Значение по умолчанию» выходной схемы. Это создаст пустые узлы.
person
Marvin Smit
schedule
12.07.2013
Извините за поздний ответ, но для схемы нет значения по умолчанию! Когда я вхожу в выходную схему (файл xsd), а затем выбираю схему, для всей схемы такого свойства нет.
- person g_eduard; 15.07.2013
В программе сопоставления BizTalk есть параметр «значение по умолчанию». Выберите целевой узел, перейдите к свойствам и найдите «значение по умолчанию».
- person Marvin Smit; 15.09.2013
Удобнее всего использовать для этого функтоид Inline C# Scripting.
Скриптовый функтоид:
public string GetEmptyString()
{
return System.String.Empty;
}
Вы можете просто связать этот функтоид со всеми выходными узлами, где вы хотите видеть пустой узел.
Пример:
Входная схема:
<xs:schema xmlns="http://person" targetNamespace="http://person" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Person">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string" />
<xs:element name="Surname" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Выходная схема:
<xs:schema xmlns="http://employee"
targetNamespace="http://employee"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Employee">
<xs:complexType>
<xs:sequence>
<xs:element name="FirstName" type="xs:string" />
<xs:element name="MidName" type="xs:string" />
<xs:element name="LastName" type="xs:string" />
<xs:element name="Age" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Входное сообщение:
<ns0:Person xmlns:ns0="http://person">
<Name>John</Name>
<Surname>Snow</Surname>
</ns0:Person>
Ожидаемое выходное сообщение:
<ns0:Employee xmlns:ns0="http://employee">
<FirstName>John</FirstName>
<MidName />
<LastName>Snow</LastName>
<Age />
</ns0:Employee>
Решение:
- Связать Person.Name с Employee.FirstName
- Связать Person.Surname с Employee.LastName
- Создайте скриптовый функтоид, который возвращает пустую строку
- Связать функтоид сценариев с Employee.MidName
- Связать функтоид сценариев с Employee.Age
person
FCR
schedule
16.07.2013