XSLT 中是否有为 userCSharp 定义的 C# 函数列表?
我正在尝试调试 BizTalk 映射,其中包含一些使用 C# 的自定义 XSLT。我发现:
- userCSharp:MathSubtract
- userCSharp:MathAdd
- userCSharp:StringSize
- userCSharp:StringSubstring
和其他一些资源,但我发现很难在网上找到一些定义所有可用的预定义 c# 函数及其文档的资源。
我问的原因是因为它有一个“我有一个”userCSharp:StringFind”,它会爆炸说 StringFind() 是一个未知的 XSLT 函数。
I'm trying to debug a BizTalk map that has some custom XSLT in it that makes use of C#. I've found:
- userCSharp:MathSubtract
- userCSharp:MathAdd
- userCSharp:StringSize
- userCSharp:StringSubstring
and a few others but I'm finding it difficult to find some resources online defining all of the available predefined c# functions and their documentation.
The reason I ask is because it has a I have a "userCSharp:StringFind" which blows up saying StringFind() is an unknown XSLT function.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
xslt 函数 MathSubtract、MathAdd 等对应于地图使用的预定义 Functoid(在 xmlns 'userCSharp' 中)。
大多数 functoid 只是内联 XSLT C# 函数 - 当编译映射时,BizTalk 在 xslt 底部添加 functoid 的 C# 脚本。 (我认为一些简单的 functoid 也可以使用 xslt 原语)。您自己的脚本 functoid 也将添加到此块中。
您可以通过编译包含映射的程序集,然后使用“显示所有文件”命令查看相应的 .btm.cs 文件来了解已添加的内容,从而了解 BizTalk 正在执行的操作。
BizBert 网站 对每个 functoid 的实现提供了很好的参考。
(双“”转义是因为 XSLT 保存在字符串常量中)
然后是底部的脚本 CDATA 块
...等等
The xslt functions MathSubtract, MathAdd etc correspond to the predefined Functoids that your map uses (in the xmlns 'userCSharp').
Most of the functoids are just inline XSLT C# functions - BizTalk adds the C# script for the functoid at the bottom of the xslt when the map gets compiled. (I think some of the simple functoids can use xslt primitives as well). Your own script functoids will also be added to this block.
You can see what BizTalk is doing by compiling your assembly containing the maps, and then using the "Show all Files" command to look at the corresponding .btm.cs file to see what has been added.
BizBert site gives quite a good reference on the implementation of each of the functoids.
(The double "" escaping is because the XSLT is kept in a string constant)
and then a script CDATA block at the bottom
... etc