我需要从XML数据文件生成多个HTML报告文件,而我正在使用C#(.NET 3.5)。我基本上需要为XML文件中的每个子树提供HTML报告(但它们必须包含一些父信息)。
我决定使用XSLT,因为它似乎是我问题最优雅的解决方案。然后,我可以使用.NET XslTransform.Transform方法创建我的HTML文件......或者我可以吗?
从MSDN上阅读,似乎即使在.NET 3.5中,XslTransform也只支持XSLT 1.0,即使2.0已经存在了一段时间。只能在XSLT 2.0中从单个XSLT文件输出多个文档。
您能解决我的问题是否有解决办法?
答案 0 :(得分:1)
我建议使用AltovaXML来处理这个问题,也就是说,如果允许你使用外部类库。我个人对此没什么好说的。至于生成多个文档作为输出的代码,您的XSLT文件应如下所示:
<xsl:template match="/">
<xsl:for-each select="Item">
<xsl:variable name="filename" select="concat($solutionRoot,'\',$v1,'\',$v2,'.html')" />
<xsl:value-of select="$filename"/>
<xsl:result-document href="{$filename}" format="html-format">
--Place document construction code here--
</xsl:result-document>
</xsl:for-each>
</xsl:template>
基本上将文件名转换为变量,为每个数据部分创建一个新文件名。
答案 1 :(得分:0)
是。让您的XSLT在根目录下生成一个带有“n”元素的文档。让您的代码对这些代码进行后期处理以生成“n”个文档。
答案 2 :(得分:0)
Saxon(.net版本)是XSLT 2实现的黄金标准。它不仅是XSLT 2.0标准的参考实现,而且是高度优化和开源的,作为托管代码运行(通过IKVM库),并支持通常的.net接口。
您可以毫无问题地使用<xsl:result-document>
元素。