C# 找不到与命名空间';关联的脚本或扩展对象;http://schemas.microsoft.com/office/infopath/2003/xslt/xDocument'

C# 找不到与命名空间';关联的脚本或扩展对象;http://schemas.microsoft.com/office/infopath/2003/xslt/xDocument',c#,xslt,infopath,msxml,C#,Xslt,Infopath,Msxml,我试图用XSLT将InfoPath文档从XML转换为HTML,但出现以下错误: Cannot find a script or an extension object associated with namespace 'http://schemas.microsoft.com/office/infopath/2003/xslt/xDocument'. 甚至可以转换文档吗?我注意到XSL使用了类似于旧MSXML语法的函数,如xdXDocument:GetDOM。您可以在转换过程中添加对MSXM

我试图用XSLT将InfoPath文档从XML转换为HTML,但出现以下错误:

Cannot find a script or an extension object associated with namespace 'http://schemas.microsoft.com/office/infopath/2003/xslt/xDocument'.
甚至可以转换文档吗?我注意到XSL使用了类似于旧MSXML语法的函数,如
xdXDocument:GetDOM
。您可以在转换过程中添加对MSXML的支持吗

作为参考,名称空间为:

xmlns:xdXDocument="http://schemas.microsoft.com/office/infopath/2003/xslt/xDocument" 
建议您只使用InfoPath文档的打印视图,但我认为这可能是InfoPath 2007所独有的(2010年后,您似乎可以打印任何视图)


另一方面,我还尝试使用MSXML,但我遇到了一个类似的错误:

Namespace 'http://schemas.microsoft.com/office/infopath/2003/xslt/xDocument' does not contain any functions.
以下是我的MSXML代码:

var xml = new MSXML2.DOMDocument60();
xml.load(txtXmlFilePath.Text);
var lines = File.ReadAllLines(txtXslFilePath.Text);

// Seemingly need to strip out first <?xml... /> line to work
string sXsl = string.Join("\n", lines.Skip(1).ToArray());

var xsl = new MSXML2.DOMDocument60();
xsl.loadXML(sXsl);

string html = xml.transformNode(xsl);
var xml=new MSXML2.DOMDocument60();
load(txtXmlFilePath.Text);
var lines=File.ReadAllLines(txtXslFilePath.Text);
//似乎需要脱掉第一条线才能工作
string sXsl=string.Join(“\n”,lines.Skip(1.ToArray());
var xsl=new MSXML2.DOMDocument60();
loadXML(sXsl);
字符串html=xml.transformNode(xsl);
因此,基本问题仍然存在——如何将XSLT转换为InfoPath文档?

xdXDocument:GetDOM()
是一个扩展函数,用于访问InfoPath中辅助数据源的数据。我曾经使用InfoPath view XSLT将InfoPath XML文档转换为HTML,我所知道的处理这些扩展函数的唯一方法是编写实现它们的扩展对象(如果不需要,可以实现只返回这些函数的空节点集的伪扩展对象)


另一种方法是创建一个不引用表单辅助数据源的视图。

您有关于创建扩展对象的任何信息吗?我假设您使用的是.NET,如果是,我想MSDN上有几篇关于它的文章。这里有一篇:谢谢,看来关键行是
xsltArgList.AddExtensionObject(“urn:XYZ”)是的,没错。还有一件事需要注意,那就是还有一个
xdXDocument:get-DOM()
函数,用于在当前上下文为辅助数据源时引用主数据源。C的一个限制是方法名称不能包含连字符,因此我发现的唯一解决方法是在XSLT上执行字符串查找替换,以替换
xdXDocument:get-DOM()
。您知道如何让它处理“”?