假设:
我是否可以使用XSLT,因为我需要在数据库中引用其他数据?如果是这样,支持使用XSLT而不是简单的旧对象映射和转换的参数是什么?我认为以下标准可能会影响这一决定:
该项目将以C#为基础。
感谢。
答案 0 :(得分:4)
使用C#,您始终可以为XSLT转换提供扩展对象,因此这不是问题。
很难在没有模式和XML的情况下定性地说,但我想编译变换将比对象映射更快,因为你将不得不做相当多的轮重新发明。
此外,XSLT的一大优势是它的可维护性和可移植性。您可以通过模式更改快速调整XSLT文档,并且即使在监视文件的情况下也无需进行任何重建和删除。
可以根据你给我们的内容进行任何一种方式。
答案 1 :(得分:2)
我的问题是改变变换的可能性有多大?
如果它们不会有太大变化,我赞成在一个源代码中完成所有这些 - 这里就是C#。我会将XSD.exe(.NET XSD工具)生成的序列化类与数据层一起用于此类事情。
另一方面,如果转换集可能会发生变化 - 或者安装后可能需要'更正' - 那么我倾向于将XSLT和C#扩展组合到XSLT中。扩展机制很简单,如果使用XslCompiledTransform类型,性能非常好。
答案 2 :(得分:1)
如果数据不在xml中,则xslt会很痛苦。您可以使用xsl:document()
提供其他文档,也可以使用xslt扩展方法(但供应商之间不支持)。因此,除非你在xslt上设置为死,否则在这种情况下听起来不是一个好选择(尽管我正确地使用了xslt的忠实粉丝)。
所以:如果可能的话,我可能会使用常规的命令式代码 - 流式传输(IEnumerable<T>
)。当然,除非你有很多数据,否则这种细微差别是没有实际意义的。