Про "мягкость" html

kruzer25

У меня тут был парсер на пхп - строго говоря, произвольных текстов, просто он в них некоторые инструкции обрабатывал - типа foreach, if, вывод значений итп. Был он написан на регэкспах и глючил не по-детски (была куа хитростей, типа, элементы элементов массива, обрабатываемого по foreach, не могут называться так же, как и внешние переменные итп да ещё и тормозил страшно (можно было бы, конечно, написать посимвольный разбор, но тогда код вырос бы ну просто ужасно, и никто бы в нём не смог разобраться).
Но обрабатываемые файлы были, по сути, просто html-ками с напиханными инструкциями (типа <table><foreach %row%><tr><td>{%val1%}</td><td>{%val2%}</td></tr></foreach></table>). И я решил (т.к. всё равно шаблоны эти писал и ещё один человек, для которого это тоже не составило бы труда) переписать парсер под разбор xml (точнее, под разбор дерева, полученного от xml_parse_into_struct) - сразу всё стало работать правильно, на порядок быстрее (хотя, мб, это я регэкспы так плохо оптимизировал появилась возможность добавить кучу новых фич без большой возни (которой я и воспользовался) - сейчас в шаблоны можно даже вынести довольно большую часть функционала из самих php-скриптов (которой, на самом деле, с самого начала было место в шаблонах)... всё ну просто отлично.
А тред этот я завёл вот по какой причине - тут КОНТРА говорил, каким должен быть правильный html - мне сегодня пришло в голову написать дополнительно "причёсыватель" html-документов, чтобы и из обычных "непричёсанных" html-ек можно было получать такие xml-файлы, которые обработает мой парсер. Я не буду давать КОНТРЕ повод обвинять меня в лени, и напишу этот обработчик сам - вот толкьо хотелось бы свод правил "причёсывания" увидеть, чтобы не изобретать велосипед, который, к тому же, будет работать не так, как чужие. То есть, я хочу знать, когда какой тэг можно закрывать, когда - нельзя, когда надо, итп - типа "если начался новый абзац, старый кончился; если началась таблица, абзац (если он был) закончился" итп.
Ну и ещё, конечно, хотелось бы, чтобы этот свод предоставил КОНТРА. Как самый осведомлённый. Полностью. Чтобы там были описаны все ситуации, которые только могут встретиться в текстовом документе, где беспорядочно напиханы html-тэги.

Landstreicher

Чем не устроил tidy?

kruzer25

Отличный сайт.
A quorum of developers have pitched in on a SourceForge project to maintain and further develop Dave Raggett's excellent HTML Tidy program. We have two primary goals. First, to provide a home where all the patches and fixes that folks contribute can be collected and incorporated into the program. Second, a library form of Tidy has been created to make it easier to incorporate Tidy into other software.
Table of Contents
News
Documentation
Support
Executable binaries
License
Source code
Test cases
Release Process
И ни слова о том, что это такое и для чего оно надо.

Helga87

Ты все же присмотрись к tidy. Правда, решает он совсем не твою задачу, он предназначен скорее для парсинга html форм, но вещь полезная.

kruzer25

Не, W3C не рулит, я тут посмотрел - КОНТРА говорит, что там сидят одни идиоты.

Landstreicher

> News
> Documentation
> Support
Сделать тычок мышкой религия не позволяет?

kruzer25

Сделать тычок мышкой gprs не позволяет, а Documentation - это немного нестандартно, всё равно, что говоришь ты девушке "линукс - это круто", она спрашивает "что такое линукс?" - а ты ей сразу "man".

Ivan8209

> У меня тут был парсер на пхп - строго говоря, произвольных текстов,
> просто он в них некоторые инструкции обрабатывал - типа foreach, if, вывод значений итп.
Парсер, совмещённый с препроцессором? Нахрена?
Ты уверен, что это именно парсер?
> вот только хотелось бы свод правил "причёсывания" увидеть,
> чтобы не изобретать велосипед, который, к тому же, будет работать не так, как чужие.
Хочешь, чтобы я учил тебя правилам вёрстки, что ли?
Для этого уже написаны книги --- бери да читай.
Написал много и непонятно, возникает больше ответных вопросов.
Какая задача, вообще, решается?
Парсер --- это полупродукт, пользователю он не нужен.
---
...Я работаю антинаучным аферистом...
Оставить комментарий
Имя или ник:
Комментарий: