2014-04-17 63 views
0

即時函數試圖調用xsl中的c#函數。我必須將一些值映射到xml中。有3種主成分如何調用xsl中的c#函數

-xsl

<?xml version="1.0" encoding="UTF-8" ?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
xmlns:var="http://schemas.microsoft.com/BizTalk/2003/var" 
xmlns:ns0="http://iti/serv/dataloader" 
xmlns:HelpersNS0="http://ri/clus/mapperhelpers/v1.0/I/F/C/CustomComponents "> 
<xsl:output omit-xml-declaration="yes" method="xml" version="1.0" /> 
<xsl:template match="/*[local-name()='InvokeDataLoader']"> 
<ns0:scriptToExecute> 
<xsl:value-of select="HelpersNS0:GetDataLoaderPath()"/> 
</ns0:scriptToExecute> 
</xsl:template> 
</xsl:stylesheet> 

-xml從哪裏獲得的C#組件

<?xml version="1.0" encoding="UTF-8" ?> 

<ExtensionObjects> 
<ExtensionObject 
    Namespace="http://ri/clus/mapperhelpers/v1.0/I/F/C/CustomComponents" 
    AssemblyName="G.T.I_Fatt.CustomComponents, Version=1.0.0.0,Culture=neutral, PublicKeyToken=6ecedb456a4a8c16" 
    ClassName="G.T.I_Fatt.CustomComponents.MapperHelpers" /> 
</ExtensionObjects> 

-xml改造

<?xml version="1.0" encoding="UTF-8" ?> 

<InvokeDataLoader xmlns="http://iti/serv/dataloader"> 
<scriptToExecute/> 
<inputFile/> 
</InvokeDataLoader> 

但是當我嘗試改變我得到這個錯誤:「命名空間不包含任何功能」

+0

您使用哪種XSLT處理器?下面列出了Microsoft'XslCompiledTransform'的擴展機制:http://msdn.microsoft.com/en-us/library/6datxzsd%28v=vs.110%29.aspx。您可以使用內嵌C#或VB代碼的「腳本」塊,也可以在需要使用http://msdn.microsoft.com/zh-CN/library/system.xml.xsl傳遞擴展對象的地方使用擴展對象.xsltargumentlist.addextensionobject%28V = vs.110%29.aspx。您發佈的代碼段不使用這兩種機制中的任何一種。那麼您使用哪種XSLT處理器? –

+0

其實我用Xtrans工具來測試它,但是不好使用visual studio和Biztalk地圖使它工作 – user3489663

回答

0

我注意到在另一個文件中,XSLT中有xmlns:HelpersNS0="http://ri/clus/mapperhelpers/v1.0/I/F/C/CustomComponents ts">,而Namespace="http://ri/clus/mapperhelpers/v1.0/I/F/C/CustomComponents"(沒有ts)。所以命名空間不匹配。

+0

這是一個輸入錯誤,很抱歉 – user3489663

+0

即使在編輯之後,你有不同的URL,至少在你發佈的樣本中,'' http://ri/clus/mapperhelpers/v1.0/I/F/C/CustomComponents「vs」「http://ri/clus/mapperhelpers/v1.0/I/F/C/CustomComponents」「其中前者在最後有一個空白。這足以使URL有所不同。除此之外,我沒有看到明顯的問題,但我對Xtrans和Biztalk都不熟悉。您可能想要編輯問題的標籤,以便具有這些區域專業知識的人員可以查看樣本。 –

+0

我解決了它。我創建了地圖和擴展對象直接到Biztalk,所以我可以將xslt關聯到擴展對象並加載dll。我試圖找到另一種方法來做到這一點沒有Biztalk,但我沒有找到它。感謝你的幫助 – user3489663