ParseError: неожиданный конечный тег — как очистить HTML-теги?

Я начинаю изучать веб-разработку и использую пирамиду с хамелеоном. Я просто взял html-код некоторых сайтов в качестве шаблона в Dreamweaver, а затем скопировал код в файл-хамелеон .pt.

HTML-код отлично отображается в Dreamweaver, но я получаю эту ошибку при запуске его в пирамиде:

chameleon.exc.ParseError
ParseError: Unexpected end tag.

 - String:     "</div>"

Я попробовал функцию очистки Dreamweavers, и она сказала, что удалила 2 пустых тега, но я все еще получаю эту ошибку. Моя трассировка связана с ошибками в хамелеоне и не показывает конкретную строку, с которой у нее проблемы в самом моем шаблоне.

Есть ли способ определить фактическую строку, в которой возникает ошибка?

Я не уверен, есть ли конкретное решение для пирамиды или хамелеона или есть общие методы поиска ошибок в теге HTML.


person Lostsoul    schedule 26.06.2012    source источник
comment
вместо этого вы всегда можете запустить его через mako или jinja2, так как они гораздо менее строги в отношении правильности HTML.   -  person Michael Merickel    schedule 27.06.2012
comment
@MichaelMerickel Спасибо за предложение. Я думал о разных шаблонизаторах, но не был уверен, потому что казалось, что Pyramid склоняется к Chameleon. Я только начал учиться, поэтому мне все равно, что я изучаю, пока это работает хорошо и какое-то время будет поддерживаться. Как вы думаете, лучше выбрать mako или jinga2? если да, то есть ли один, который вы могли бы предложить?   -  person Lostsoul    schedule 27.06.2012
comment
@MichaelMerickel, кстати... код отлично работает в Jinja2, но до сих пор не уверен, какой из них я хочу использовать. Я читал обзоры производительности, и они кажутся похожими, но не уверен, какой из них имеет большее сообщество или будет поддерживаться дольше (у jinja2 есть 300 вопросов на этом сайте, а у mako - 150, но не уверен, что это хороший показатель).   -  person Lostsoul    schedule 27.06.2012
comment
Все 3 стабильны и хорошо поддерживаются, а пирамиде совершенно безразлично, какой движок вы используете.   -  person Michael Merickel    schedule 27.06.2012


Ответы (2)


Chameleon ожидает, что шаблоны будут правильно сформированы, и менее прощает несбалансированные теги и неправильную разметку атрибутов, чем DreamWeaver.

Обратите внимание, что ошибка не обязательно означает, что тега </div> слишком много. Если открывающий <div> имеет синтаксическую ошибку, например, отсутствует = в объявлении атрибута (например, <div class"foobar">), то открывающий тег не распознается, и соответствующий закрывающий тег также будет помечен.

Вы можете запустить свой шаблон через средство проверки XML, несколько из которых доступны в Интернете (например, http://www.validome.org/xml/, http://www.xmlvalidation.com/ и http://xmlgrid.net/, Google перечисляет гораздо больше). Они обязательно дадут вам немного более полезное сообщение о том, что не так с вашим шаблоном.

person Martijn Pieters    schedule 27.06.2012

Никогда раньше не использовал пирамиду/хамелеон, но похоже, что вам нужно просмотреть код и удалить лишний тег </div>. Когда вы получаете сообщение о том, что он удалил два пустых тега, это, вероятно, означает, что он удалил открытие и закрытие набора тегов.

e.g. <div></div> or <p></p>

Просмотрите свой код, и для каждого <div> должно быть </div>.

person Duniyadnd    schedule 26.06.2012
comment
Этот код очень большой (более 15 000 строк). Я прошу способ избежать необходимости вручную просматривать столько строк кода. Я понимаю, что браузеры снисходительны, но надеюсь, что где-то будет сгенерирован номер ошибки/строки. - person Lostsoul; 27.06.2012