Как говорили большинство людей, оба способа действительно работают, но я думаю, что только первый должен. Будучи семантически строгим, метка не «содержит» входные данные. На мой взгляд, отношение удержания (родитель / потомок) в структуре разметки должно отражать удержание в визуальном выводе . т.е. элемент, окружающий другой в разметке , должен быть нарисован вокруг этого в браузере . В соответствии с этим, метка должна быть родственной, а не родительской. Таким образом, вариант номер два является произвольным и запутанным. Каждый, кто прочитал Zen of Python , вероятно, согласится (Flat лучше, чем вложенный, Sparse лучше, чем плотный, Должен быть один - и желательно только один - очевидный способ сделать это ... ).
Из-за решений, подобных этому от W3C и основных поставщиков браузеров (позволяющих «любым способом, который вы предпочитаете делать» вместо того, чтобы «делать это правильно»), Интернет сегодня настолько запутан, и мы, разработчики, должны иметь дело с запутанным и столь разнообразным устаревшим кодом.