【问题标题】:How to support not well formed XHTML for XSLT如何为 XSLT 支持格式不正确的 XHTML
【发布时间】:2014-02-21 17:12:58
【问题描述】:

我有一个通常格式不正确的任意 XHTML 文档,因为可以这样制作网站并且浏览器会显示它。如何支持格式不正确的 XHTML 代码的 XSLT 翻译?有什么办法可以避免那些成型不好的部分吗?

我有这段 Java 代码,但正如我所说,它不支持格式不正确的 XHTML:

try {
            TransformerFactory tFactory=TransformerFactory.newInstance();

            Source xslDoc=new StreamSource("path1");
            Source xmlDoc=new StreamSource("path2");

            String outputFileName="path3";

            OutputStream htmlFile=new FileOutputStream(outputFileName);
            Transformer trasform=tFactory.newTransformer(xslDoc);
            trasform.transform(xmlDoc, new StreamResult(htmlFile));
        } 
catch (Exception e) {...}

【问题讨论】:

  • 您可以尝试使用 JTidy 修复格式不正确的 XHTML。
  • 难道没有办法用 Transformer 支持“格式不正确的 XHTML 翻译”吗?这与“我的”XHTML 无关——我可以使我的 XHTML 格式正确,但由于我正在解析站点,所以我不能期望这些 XHTML 总是格式正确。另外,我不知道这个 JTidy 将如何进行与浏览器相同的“整理”,并且对性能而言不会太多。
  • 本地 Java XML 解析器要求 XML 格式正确,而 XSLT 解析器假定源是格式正确的 XML。如果格式不正确,您可以使用 HTML 解析器。

标签: java xslt xhtml


【解决方案1】:

您可以使用 JSoup 库来解析和修复您的 HTML,然后使用 XSLT。

【讨论】:

  • 我试过了,还是不行。我使用了 Cleaner.clean() 和 JSoup.clean() 但两者都不想解析未关闭的元素。
【解决方案2】:

您可以尝试使用像 http://about.validator.nu/htmlparser/ 或 TagSoup 这样的 HTML 解析器。

【讨论】:

  • 我正在尝试使用 TagSoup,但它无法正常工作。你有例子吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-12
  • 1970-01-01
  • 2018-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多