markdown - 用于 Markdown 的 SGML 解析器可能吗?

标签 markdown sgml

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

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

最佳答案

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

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

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

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

关于markdown - 用于 Markdown 的 SGML 解析器可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54020477/

相关文章:

rest - 是否有可用于创建标记语言的文本编辑器(如 markdown、rest 等?)

HTML5不是基于SGML,那它是基于什么的呢?

xml - DTD 解析 : Parameter entity reference name including another parameter entity reference - is it well formed?

markdown - "data-"前缀被添加到自定义属性,如何防止这种情况?

javascript - Markdown 在 javascript 中将双星号转换为粗体文本

r - 在 R markdown 中生成下标

image - 在 Markdown 中包含图像时如何转义文件名中的空格?

python - 解析 EDGAR 文件

xml - 声明 DTD 元素类型时 "- O"是什么意思?