【问题标题】:How to extract textual content from an SGML DTD using Perl?如何使用 Perl 从 SGML DTD 中提取文本内容?
【发布时间】:2014-04-04 19:21:20
【问题描述】:

我正在考虑使用 Perl 从 DTD 中提取所有内容,但我不确定哪种方法最好。我知道有用于处理 XML 的模块,但我不确定是否有用于 SGML 的此类工作的模块,或者我是否应该尝试为这项工作创建正则表达式?

我是 SGML 和 Perl 的新手,除了非常简单的模式匹配外,对正则表达式没有太多经验。

【问题讨论】:

  • 提供一些示例输入和您的预期输出。
  • 请阅读faqHow to Ask,了解如何在此处正确提问。
  • 这里有一个问题,它是“我应该用正则表达式解析 xml”。但既然你当然不应该这样做是惯用的,在这个网站上已经回答了 5,678 次,投反对票。
  • ↑↑↑ 有时我希望我能对 cme​​ts 投反对票。 ↑↑↑
  • 我最终使用了 SGML::DTDParse::DTD。它是 perlSGML 的更新模块,在 CPAN 上不再可用。

标签: regex perl sgml


【解决方案1】:

你有两个选择:

  • 使用旧的perlSGML 发行版,我在过去(远程!)使用过。这是 perl 它仍然应该在现代 perl 上运行,

  • 使用 osx 将您的 SGML 转换为 XML,它是 openSP 的一部分,至少可用于 Debian/Ubuntu(软件包称为 opensp)和最有可能的其他平台,然后使用 XML 等 XML 工具::LibXML,或 XML::Twig

如今,XML 工具比 SGML 工具多得多,但当然您可能会丢失一些信息,因为 XML 中的 DTD 比 SGML 中的稍微简单一些

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    • 2012-11-28
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    相关资源
    最近更新 更多