BizTalkMapper中使用xslt的日期时间



Am正在VisualStudio2010中BizTalk(2010)映射文件的脚本functoid中编写一些InlineXslt脚本。(它只支持1.0版)。

我需要在xslt脚本的许多地方使用当前日期时间。为了获得当前的日期时间,我使用了"日期时间"functoid,或者在一个脚本functoid中写入一些C#代码,并将其作为参数传递给另一个脚本(编写XSLT脚本的地方)。

但现在,如果我用mapper生成XSL文件,它包含C#名称空间和C#代码。

现在我只想使用XSLT。我想包括EXSLT名称空间(http://EXSLT.org/dates and times)和扩展元素前缀="date",并使用函数"date:date-time()"来获取当前日期和时间。

我不想修改生成的XSL文件,而是希望在早期阶段实现这一点,这样当我从BizTalk映射程序生成XSL文件时,它只包含XSLT脚本。

是否可以将此命名空间包含在脚本functoid的InlineXslt或InlineXslt模板中,以便在functoid中编写XSLT脚本时使用函数date-time()?

来自本博客Richard Hallgren 如何使用EXSLT和Mvp.Xml项目在BizTalk中扩展自定义Xslt

您必须创建一个XML扩展

<?xml version="1.0" encoding="utf-8"?>
<ExtensionObjects>
<ExtensionObject
Namespace="http://exslt.org/dates-and-times"
AssemblyName="Mvp.Xml,
Version=2.3.0.0, Culture=neutral,
PublicKeyToken=6ead800d778c9b9f"
ClassName="Mvp.Xml.Exslt.ExsltDatesAndTimes"/>
</ExtensionObjects>

创建自定义XSLT

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:S1="http://ExtendedMapping.Schema1"
xmlns:S2="http://ExtendedMapping.Schema2"
xmlns:exslt="http://exslt.org/dates-and-times"
version="1.0"> 
<xsl:template match="/">
<S2:Root>
<Field>
<xsl:value-of select="exslt:dateTime()"/>
</Field>
</S2:Root>
</xsl:template>
</xsl:stylesheet>

然后配置映射,将自定义扩展XML指向第一个,将自定义XSL路径指向第二个。这意味着您需要在XSL文件中进行所有映射,而不是在具有functoid的映射器网格上进行映射,因为这些functoid将被忽略。

相关内容

  • 没有找到相关文章

最新更新