0

我认为在 XML 和 HTML 中不允许有跨范围的标签。也许 SGML 允许它。但是,在 XML/HTML 中,是否存在任何可能发生这种情况的有效且允许的情况?

就像是:

<p>This is <i>some <b>example</i> text</b> right here!</p>

这可能会生成如下输出:“这是这里的一些示例文本!”

(旁注:SO markdown 解析器显然可以处理它,谁知道?)

"This is *some **example* text** right here!"
4

3 回答 3

2

在 HTML 或 XML 中是不允许的。对于处理非分层标记的方法的调查,维基百科文章是一个很好的起点:

https://en.wikipedia.org/wiki/Overlapping_markup

于 2015-03-14T10:11:45.690 回答
1

我认为在 XML 和 HTML 中不允许有跨范围的标签。

正确的

也许 SGML 允许它。

它没有。

但是,在 XML/HTML 中,是否存在任何可能发生这种情况的有效且允许的情况?

不,标记只是描述了一个 DOM,它是一棵节点树。一个节点只能有一个父节点。

“这是这里的一些示例文本!”

呈现为:

<p>"This is <em>some <strong>example</strong></em><strong> text</strong> right here!"</p>
于 2015-03-13T15:28:40.080 回答
1

像这样的重叠标签只有在文本中只是标签的情况下才有可能。一旦文本被解析为元素(HTML 或 XML),就不可能表示这样的结构。

元素的概念是它是一个单一的实体,它不是文本中的起点和终点。

正如您的 SO markdown 示例所示,只要它只是文本中的标签,就可以使用这样的标签。正如 Quentin 所展示的,SO 文本解析器必须将其转换为非重叠结构,以便能够为其创建有效的 HTML 代码。

于 2015-03-13T15:46:56.933 回答