Функции xslt MathSubtract, MathAdd и т. Д. Соответствуют предопределенным Functoids, которые использует ваша карта (в xmlns 'userCSharp').
Большинство функтоидов - это просто встроенные функции C # XSLT - BizTalk добавляет скрипт C # для функтоида в нижней части xslt, когда карта компилируется. (Я думаю, что некоторые простые функтоиды также могут использовать примитивы xslt). В этот блок также будут добавлены ваши собственные скриптообразные функтоиды.
Чтобы узнать, что делает BizTalk, скомпилируйте свою сборку, содержащую карты, а затем с помощью команды «Показать все файлы» посмотрите соответствующий файл .btm.cs, чтобы увидеть, что было добавлено.
Сайт BizBert дает довольно хорошую справку о внедрении каждого из функтоидов.
(Двойное "" экранирование происходит потому, что XSLT хранится в строковой константе)
private const string _strMap = @"<?xml version=""1.0"" encoding=""UTF-16""?>
<xsl:stylesheet xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" xmlns:msxsl=""urn:schemas-microsoft-com:xslt""
...
xmlns:userCSharp=""http://schemas.microsoft.com/BizTalk/2003/userCSharp"">
, а затем блок сценария CDATA внизу
<msxsl:script language=""C#"" implements-prefix=""userCSharp""><![CDATA[
public bool IsNumeric(string val)
{
if (val == null)
{
return false;
}
double d = 0;
return Double.TryParse(val, System.Globalization.NumberStyles.AllowThousands | System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out d);
}
public string MathAdd(string param0, string param1)
{
System.Collections.ArrayList listValues = new System.Collections.ArrayList();
... и т. Д.