我不是信息路径开发人员,这是我第一次真正遇到 XSLT。最近我不得不在一个项目上工作,我需要将上传到 Sharepoint 的 infopath 表单转换为 html。一旦进入 html,我们就可以使用任何第三方库来输出我们想要的任何所需/支持的格式。
我们在代码中所做的:
- 我们创建一个 XslCompiledTransform 对象。这是通过解析上传到 sharepoint 的 Xsn 然后使用其中的 Xsl 来完成的。我们使用 View1.xsl。这里没有问题发生。
- Xml 表单作为流返回到我们的转换方法,在该方法中,我们创建一个需要使用流应用转换的 XmlDocument。
- 然后,我们将 XmlDocument 连同为我们填充 StringWriter 对象的 XmlTextWriter 对象一起传递给 transform() 方法。然后我们可以使用 StringWriter 将 html 作为字符串或流提供给我们,并将其传递给第三方库以更改为任何格式,例如 PDF/MHT 等...
改造后出现的问题:
- 我失去了日期格式。最初设置为 1-12-2009 的日期将变为 2009-1-12
- 我丢失了图像,而不是图像,我们得到带有“X”的空图像占位符。
- 我失去了主细节部分。
- 所有 html 控件都通过。我目前将 htmlstream 转换为字符串,并有一个通用方法可以过滤掉任何不需要的 html。我的代码还有一部分会过滤掉下拉列表中的选定值。这样做我遇到了一个场景,即 html 中没有“Selected”属性,但在下拉列表中选择了一个值。这整个字符串解析不是优雅的,它是一个黑客。有一个更好的方法吗?
- 如果 XSN 文件中有多个视图,我如何检测视图。
- 是否有一种更简单的转换方法,其中传递 xml 文档就足够了,类似于 XmlForm.CurrentView.Export() 方法来处理我的特定场景。
任何建议,指针等将不胜感激。我很高兴发送原始 Xml 和转换后的 Html 以及我的方法清理后留下的 Html。
提前致谢。
穆罕默德。