04.01.2010 16:00

  1. Для примера возьмём страничку из книги Марка Пилгрима «Dive Into Python 3»: http://diveintopython3.org/whats-new.html

    Пропущены все возможные теги: head, body, почти все закрывающие теги. Хотелось бы получить документ с закрытыми тегами.

    Наверняка, это стандартная проблема имеющая решение. Или нет?

  2. Да, вполне. Надо взять html5lib, распарсить документ HTML-парсером. Получится полное дерево (со всеми <html>, <head> и прочим). Потом это дерево сериализовать XHTML-сериализатором из этой же библиотеки.

    Код на Питоне будет примерно такой:

    from html5lib import HTMLParser, treewalkers, serializer
    parser = HTMLParser()
    doc = parser.parse(u'<title>Example</title><p>Hello, World!')
    tw = treewalkers.getTreeWalker('simpletree')
    print u''.join(serializer.XHTMLSerializer().serialize(tw(doc)))
    

    Выведет такое:

    <html><head><title>Example</title></head><body><p>Hello, World!</p></body></html>
    

    Это, собственно, очень вкусная штука, которая изначально заложена в HTML5: для одного и того же дерева существуют равноправные сериализации в HTML и XHTML.

  3. То, что нужно! И, действительно, очень красиво!

    Большое спасибо!

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.