2014-01-14 42 views
0

在VisualStudio2010的BizTalk(2010)映射文件的functoid腳本中編寫一些InlineXslt腳本(它僅支持版本1.0)。在BizTalkMapper中使用xslt的日期時間

我需要在我的xslt腳本的許多地方使用當前的日期時間。爲了獲得當前日期時間,我使用了Date-time functoid或在一個腳本functoid中編寫了一些C#代碼,並將其作爲參數傳遞給另一個腳本函數functoid(其中編寫了XSLT腳本)。

但是現在如果我用mapper生成XSL文件,它包含C#命名空間和C#代碼。

現在我只想使用XSLT來完成它。我想包含EXSLT命名空間(http:/exslt.org/dates-and-times)和extension-element-prefixes =「date」,並使用函數「date:date-time()」來獲取當前的日期和時間。

而不是修改生成的XSL文件,我想在更早的階段實現這一點,以便當我生成BizTalk映射器的xsl文件時,它只包含XSLT腳本。

是否可以在腳本functoid的InlineXslt或Inlinexslt模板中包含此名稱空間,以便在functoid中編寫XSLT腳本時使用函數date-time()?

+0

格式化您的問題。 – Igle

回答

0

從這個博客How the extend a custom Xslt in BizTalk using EXSLT and the Mvp.Xml project由Richard Hallgren

你必須創建一個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到第一個,Custom XSL到第二個。這意味着您需要在XSL文件中執行所有映射,而不是在具有functoids的映射器網格上進行映射,因爲這些映射將被忽略。