簡體   English   中英

HTML Tidy-添加開始標簽,而不是刪除結束標簽?

[英]HTML Tidy - Add opening tags, instead of removing closing tags?

是否可以通過以下方式配置HTML Tidy:

給定html:

lorem ipsum</em> dolar sit amet.</p>

產生它

<p><em>lorem ipsum</em> dolar sit amet.</p>

不僅僅是剝離結束標簽?

非常感謝

馬特

否。HTMLTidy不提供該選項。

您會期望簡單整潔的解析器推斷出先前的意圖。

解析器可以使用html規則確定何時必須關閉標簽,以及是否打算在該時間點關閉標簽。

我基本上同意Sky Sanders的回答。 除了:

您會期望簡單整潔的解析器推斷出先前的意圖。

您可以編寫一個提供上述功能的解析器,而不必推斷任何意圖,而只是確定性地工作。 可以很容易地(是的,或多或少容易地:))編寫一種可以完成這項工作的算法。 這個想法是:

添加結束標簽

畢竟,這已經可以使用HTML Tidy完成,並且每個瀏覽器/解析器都已經隱式地執行了此操作(這里我不是在談論有效的XHTML):

<div>some <span><em>text</span> here</div>

得到

<div>some <span><em>text</em></span> here</div>

添加開始標簽

現在,我們可以做一些算法來分析以下內容,從字符串的末尾開始,然后反向搜索:

<div>some <span>text</em></span> here</div>

生成以下內容,因為它看到em標記嵌入在span標記中。

<div>some <span><em>text</em></span> here</div>

結合這兩個

現在,我們必須編寫一個既添加缺失的關閉標簽也要添加打開標簽的算法。 現在,讓我們看一下這個html片段:

<div>some <span>text</em> here</div>

首先應用“添加所有缺少的結束標記”方法:

<div>some <span>text</em> here</span></div>

該算法在此假設<span>之后的每個關閉和打開標簽都嵌入span 它只有在看到<span>之前的某個開始標簽的結束標簽時才停止。 在這種情況下,這是</div> ,之前有一個有效的開始標簽<div> 然后在反向搜索中應用相同的語義,如前所述:

<div>some <span><em>text</em> here</span></div>

等。

這一切有意義嗎?

我認為:不。從技術上講是可行的,但不值得付出努力。 您將必須實現自己的解析器以及上述偽智能方法。 另外,這將對仍然存在的html應用一種語義:每個瀏覽器/解析器都只會忽略孤立的結束標記,那么為什么還要注意它們呢?

如果我不能說服您,請考慮html的語義:

some <b>text</b> here看起來像是:“打印'some'。開始呈現粗體。打印'text'。停止呈現粗體。打印'here'。”

而:

some text</b> here看起來像是:“打印'一些文本'。停止以粗體顯示。” “什么?我什至沒有開始渲染任何粗體!?我只是忽略那個……” :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM