使用 XSLT 生成文件时的正确因式分解
Proper factoring when generating files with XSLT
在我正在处理的系统的特定部分,我们正在使用 XSLT(用于电子邮件、打印和显示)生成 PDF 和 HTML 文件。正在打印的业务模型在代码中 (c# ).
在设计模式时,我特别考虑了打印文档的要求,因为 XSLT 比 C# 更难使用(可能只是对我而言?)。例如,我从业务模型生成聚合值和表格以显示在文档上。这些决定不能很好地转化为可能使用类似 Xml 的其他领域。
我现在面临其他人也使用 Xml 的问题,因此破坏了 SoC。
我倾向于拍摄他们最初锁定的 Xml 的快照,并为他们提供一种新方法。我个人认为这没有问题(面对 DRY),但其他人可能很难理解权衡。我的推理有缺陷吗?有没有更好的方法?
我知道这是个人问题,但我的选择始终是将尽可能多的逻辑放在 XSLT 代码中而不是 C# 代码中——与您所做的相反。这意味着您正在使用一种更高级的声明性语言,并且是一种专门为操纵 XML 而设计的语言。当然,有一条学习曲线,但在学习曲线的顶端,您会发现阳光普照的高地。并且不要让自己被 XSLT 1.0 的限制所拖延:2.0 将所有这些问题抛在脑后,您只需要准备好抛弃 Microsoft 并使用第三方技术(Microsoft 在 XML space 大约十年前,但这并不意味着你必须停留在过去)。
在我正在处理的系统的特定部分,我们正在使用 XSLT(用于电子邮件、打印和显示)生成 PDF 和 HTML 文件。正在打印的业务模型在代码中 (c# ).
在设计模式时,我特别考虑了打印文档的要求,因为 XSLT 比 C# 更难使用(可能只是对我而言?)。例如,我从业务模型生成聚合值和表格以显示在文档上。这些决定不能很好地转化为可能使用类似 Xml 的其他领域。
我现在面临其他人也使用 Xml 的问题,因此破坏了 SoC。
我倾向于拍摄他们最初锁定的 Xml 的快照,并为他们提供一种新方法。我个人认为这没有问题(面对 DRY),但其他人可能很难理解权衡。我的推理有缺陷吗?有没有更好的方法?
我知道这是个人问题,但我的选择始终是将尽可能多的逻辑放在 XSLT 代码中而不是 C# 代码中——与您所做的相反。这意味着您正在使用一种更高级的声明性语言,并且是一种专门为操纵 XML 而设计的语言。当然,有一条学习曲线,但在学习曲线的顶端,您会发现阳光普照的高地。并且不要让自己被 XSLT 1.0 的限制所拖延:2.0 将所有这些问题抛在脑后,您只需要准备好抛弃 Microsoft 并使用第三方技术(Microsoft 在 XML space 大约十年前,但这并不意味着你必须停留在过去)。