HTML / XML中是否存在无法完全包含标记的有效案例?

时间:2015-03-13 15:27:02

标签: html xml sgml

我认为在XML和HTML中不允许使用跨域标记。也许SGML允许它。但是在XML / HTML中,是否存在可能发生这种情况的有效和允许的情况?

类似的东西:

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

这可能会产生如下输出:“这是一些示例 文字就在这里!”

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

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

3 个答案:

答案 0 :(得分:2)

HTML或XML不允许这样做。有关处理非分层标记的方法的调查,维基百科文章是一个很好的起点:

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

答案 1 :(得分:1)

  

我认为在XML和HTML中不允许使用跨域标记。

正确

  

也许SGML允许它。

它没有。

  

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

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

  

&#34;这是一些示例 文字就在这里!&#34;

呈现为:

<p>"This is <em>some <strong>example</strong></em><strong> text</strong> right here!"</p>

答案 2 :(得分:1)

这样的重叠标签只有在文本中只有标签才有可能。只要将文本解析为元素(HTML或XML),就无法表示这样的结构。

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

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