Re: Исправление HTML
От: Кодт Россия  
Дата: 23.01.08 15:48
Оценка:
Здравствуйте, korzh.pavel, Вы писали:

KP>Вообще задача такая:


Вот с этого и надо было начинать.
А я, дурень, забыл спросить, просто набросился на прикольный этюд.

KP>Есть очень большой набор html, который собирался в результате нескольких лет эксплуатации системы.

KP>Встречается Html совершенно "дикий". Надо всю эту базу преобразовать в абсолютно валидный html.

KP>На него напускается htmltidy, но всё равно, даже после htmltidy, встречаются достаточно много html, который не проходит валидацию.


KP>Одна из проблем это content specification validate and recovery.

KP>Например для table имеем такой content specification: <!ELEMENT table (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>

А в чём засада — нужно пропатчить эвристики у tidy; или сделать ещё одну прогу, которая после tidy дорабатывает; или что ещё?

Кстати, а как насчёт такого варианта:
— взять DOM-парсер HTML, нечувствительный к дикости (ну скажем, из мозиллы)
— всосать в него дикий HTML
— как-бы-рендерить — сериализовать обратно в валидный HTML с правильной структурой и сбалансированными тэгами

Медленное удовольствие, конечно... зато (имхо) надёжное.
Правда, есть заподлянка: дикость-то исправлена будет, а вот ошибки легализуются. Например, одинокий <p>...<b>...</p> сделает жирным весь документ до конца (а после легализации появится куча <p><b>...</b></p>).

С другой стороны, — судя по документации tidy, она излишне бдит.
<p>Plain <b>bold <i>bold-italic</b> italic</i> text</p>

который рендерится как
Plain bold bold-italic italic text

она превращает в
<p>Plain <b>bold <i>bold-italic</i> italic</b> text</p>

что даёт
Plain bold bold-italic italic text
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.