2015-03-13 68 views
0

我認爲在XML和HTML中不允許有跨範圍標記。也許SGML允許它。儘管如此,在XML/HTML中,是否有任何有效且允許的情況發生?HTML/XML中是否存在標籤不能完全包含的有效情況?

喜歡的東西:

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

這將可能產生的輸出一樣: 「這是一些例如文本就在這裏」

(旁註:在SO降價解析器顯然可以處理它,誰知道)

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

回答

1

我覺得在XML和HTML具有跨範圍的標記是不允許的。

正確

也許SGML允許它。

它沒有。

儘管在XML/HTML中,是否存在任何可能發生這種情況的有效和允許的情況?

不是。標記只是描述了一個DOM節點樹。一個節點只能有一個父節點。

「這是一些例如文本就在這裏!」

即呈現爲:

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

哦,我知道,我寫上去的文字就不會真正被渲染以這種方式HTML。這只是一個簡單的例子,以防我的術語錯誤。我想知道是否存在任何此類結構化有效的情況,但聽起來好像你所說的絕對不是由於DOM的底層樹結構。 – CodexArcanum 2015-03-13 15:34:06

1

這樣的重疊標籤,纔可能只要它是唯一的標籤的文本。只要文本被解析爲元素(HTML或XML),就不可能表示這樣的結構。

元素的概念是它是一個單一的實體,它不是文本中的起點和終點。

正如您的SO降價示例所示,只要它只是文本中的標籤,就可以使用類似這樣的標籤。正如Quentin所示,SO文本解析器必須將其轉換爲非重疊結構才能爲其創建有效的HTML代碼。