Когда-то сравнительно давно, в #82SN7E, спрашивал я про точные координаты тегов в XML и как их достать из Питона. Я для этого использовал SAX, и @stiletto мне то же самое советовал, но SAX выдавал слишком мало информации о привязке по координатам к исходному тексту.
Дык вот. Если хотите до хрена информации, то юзайте Pygments. Забавно, да? Он вообще-то совсем не для того нужен, но в итоге с задачей справляется лучше, чем специально предназначенные для XML парсеры (хотя по моим прикидкам работать он будет заметно медленнее, но меня почти любая `O(n)` устроит, а там она). В частности, Pygments позволяет очень хорошо различать `<тег></тег>` и `<тег/>`, с чем я при использовании SAX трахался до полусмерти.