Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, 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 дорабатывает; или что ещё?
нужно сделать прогу которая после tidy дорабатывает
К>Кстати, а как насчёт такого варианта:
К>- взять DOM-парсер HTML, нечувствительный к дикости (ну скажем, из мозиллы)
К>- всосать в него дикий HTML
К>- как-бы-рендерить — сериализовать обратно в валидный HTML с правильной структурой и сбалансированными тэгами
К>Медленное удовольствие, конечно... зато (имхо) надёжное.
К>Правда, есть заподлянка: дикость-то исправлена будет, а вот ошибки легализуются. Например, одинокий <p>...<b>...</p> сделает жирным весь документ до конца (а после легализации появится куча <p><b>...</b></p>).
да не, я лучше после tidy подчищу.
К>С другой стороны, — судя по документации 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
К>
да, с tidy не всё идельно, но в общем случае она нормально отрабатывает