【问题标题】:Alternative to XSLT?XSLT 的替代品?
【发布时间】:2019-12-13 00:50:14
【问题描述】:

在我的项目中,我有一个用于将一些 XML 文件转换为 HTML 的 huuuuge XSLT。 问题是这个文件每天都在增长,很难阅读、调试和测试。 所以我正在考虑将所有的解析过程转移到 Java。

你认为这是个好主意吗?如果您建议使用哪些库来解析 XML 并生成 HTML(XML)?表现会更好还是更差?

如果这不是一个好主意,还有其他的主意吗?

谢谢

随机化

【问题讨论】:

  • XSLT 有可能被简化,这取决于它的实现方式。您能否解释一下为什么文件每天都在增长,并可能发布代码示例?
  • 我并不完全是 XSLT 专家,有时客户会要求从 XML 中上下提取数据以创建嵌套结构(如数据列表列表)并执行此操作使用 XSLT 并不完全是我的意思。也许我可以考虑混合使用 Java 和 XSLT?
  • 有很多方法可以让 XSLT 出错,然后它突然看起来很多比实际更难和更笨拙。如果您想先尝试,我想您的代码还有改进的空间。
  • XSLT 具有很好的模块化编程特性。将您的代码拆分为不同的样式表模块,并使用<xsl:import><xsl:include> 在主样式表模块中使用它们。您允许代码变成“huuuuge”这一事实仅表明您作为程序员的能力,而不是 XSLT 中的任何设计缺陷。

标签: java html xml parsing xslt


【解决方案1】:

看看CDuce - 它是一种严格类型化、静态编译的 XML 处理语言。

【讨论】:

    【解决方案2】:

    我曾经有一个客户遇到过类似的问题——成千上万行的 XSLT,一直在增长。我花了一个小时阅读它,越来越怀疑,然后用 20 行 XSLT 重写了它。

    重构往往是个好主意,代码越差,重构就越有价值。但是没有理由相信仅仅因为代码不好并且需要重构,您就需要更改为不同的编程语言。如果您知道如何正确使用 XST,它实际上非常擅长处理多样性和复杂性。

    有可能代码是对特殊情况的特殊处理的积累,每发现一个新的特殊情况,就会导致添加更多的规则。这是一个用任何语言都难以解决的问题,但 XSLT 可以比大多数语言更好地处理它,前提是您始终全神贯注地寻找包含所有特殊规则的抽象一般规则,因此您只需将特殊规则编码为例外。

    【讨论】:

      【解决方案3】:

      我会考虑 Velocity 作为替代方案。我更喜欢它而不是 XSL-T。转换比模板更难编写,因为后者看起来与我希望生成的 XML 完全一样。添加标记以映射到数据中是一件简单的事情。

      【讨论】:

      • 我们在项目中使用了 Velocity,但是解析是由 XSLT 执行的。你能告诉我一个关于你的意思的简单例子吗?谢谢
      • 不,XSL-T 不是解析器。它用于将 XML 从一种形式转换为另一种形式。 SAX 或 DOM 是解析器的示例。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-22
      • 2010-11-08
      • 2012-01-25
      • 2015-08-05
      相关资源
      最近更新 更多