2013-05-17 3 views
0

Я пытаюсь преобразовать XSLT документ InfoPath из XML в HTML, и я получаю следующую ошибку:Не удается найти сценарий или объект расширения, связанный с пространством имен «http://schemas.microsoft.com/office/infopath/2003/xslt/xDocument»

Cannot find a script or an extension object associated with namespace 'http://schemas.microsoft.com/office/infopath/2003/xslt/xDocument'. 

Возможно ли даже преобразование документа? Я отмечаю, что XSL использует такие функции, как xdXDocument:GetDOM, которые выглядят как старый синтаксис MSXML. Можете ли вы добавить поддержку MSXML во время преобразования?

Для справки является пространство имен:

xmlns:xdXDocument="http://schemas.microsoft.com/office/infopath/2003/xslt/xDocument" 

This article предполагает, что вы просто использовать для печати Просмотр в 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); 

Так основной вопрос остается - как вы преобразуете XSLT-преобразование в документ InfoPath?

ответ

2

xdXDocument:GetDOM() - это функция расширения, которая используется для доступа к данным из вторичных источников данных в InfoPath. Я работал с задачей использования XSLT для представления InfoPath для преобразования документов XML InfoPath в HTML, и единственный способ, с помощью которого я могу справиться с этими функциями расширения, - написать объекты расширения, которые их реализуют (вы могли бы реализовать фиктивные объекты расширения, которые просто возвращают пустые nodesets для этих функций, если вы не нуждаетесь в них.

в качестве альтернативы можно создать представление, которое не имеет каких-либо ссылок на вторичные источники данных формы.

+0

у вас есть информация о создании объектов расширения? – PeterX

+0

Я предполагаю, что вы используете .NET, и если это так, я думаю, что в MSDN есть несколько статей об этом. Вот один из них: http://support.microsoft.com/kb/321702 – JLRishe

+0

Спасибо, поэтому появляется ключевая строка. 'xsltArgList.AddExtensionObject (" urn: XYZ ", XYZ)'. – PeterX