[英]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.