【问题标题】:SGML parser for Markdown possible?Markdown 的 SGML 解析器可能吗?
【发布时间】:2019-01-03 10:30:28
【问题描述】:

SGML 有许多可选特性允许标记最小化,例如可选或隐含的开始和结束标签,以及SHORTREF 用于更简单的标签别名。因此,是否有可能编写一个 DTD,一个完美的 SGML 实现可以用来成功解析任意 Markdown 文档?

现有 Markdown 解析器之间存在差异,Commonmark 试图将其标准化,因此基于 SGML 的解析器在边界情况下存在一些余地。

【问题讨论】:

  • 这是一个非常有趣的问题。但是,是/否问题,尤其是“是否可能”问题通常被认为是有问题的,因为答案从来都不是特别有用:如果是“否”,那么您仍然不知道如何解决您的问题,如果是“是的”,再说一遍,你只知道你可以解决,但离解决方案还差一步。您可以询问禁止或启用解析 Markdown 的 SGML 的特定功能,但列表问题也是题外话。您最好的选择是根据您遇到的特定问题重新构建问题......
  • ……这只能通过使用 SGML 解析 Markdown 来解决,即使问题是假设性的。

标签: markdown sgml


【解决方案1】:

虽然许多 Markdown 结构可以使用 SGML 短引用解析为 HTML,但 Markdown 的内联和引用链接却不能。

[link text](link URL) 这样的内联链接是有问题的,因为生成的a 元素的href 属性必须使用链接URL 作为值来填充,这对于SGML 短引用根本不起作用。此外,参考链接需要无限前瞻,因为它们可以在实际使用之前或之后放置在文本中的任何位置。

另一个问题是markdown自动转义和自动链接。

编辑:仅供参考,sgmljs.net(我的项目)包含嵌入在 SGML 解析器中的 HTML 翻译的完整降价(+ 通用扩展),但它只是通过公共“虚拟”公开降价短参考地图声明在文档的序言中引用时“神奇地”将降价转换为 HTML 翻译的标识符;实际的降价翻译和处理是使用 JavaScript 硬编码的(参见http://sgmljs.net/docs/markdown.html)。使用 SGML 中的 markdown 的一个问题是,markdown 需要一个“标记块”(HTML 块泛化为允许任何显式元素标签或其他标记结构),由换行符与前面或后面的 markdown 文本分隔,这是一个约束无法在 SGML 中捕获。

【讨论】:

    猜你喜欢
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-03
    相关资源
    最近更新 更多