Действительно ли необходимы имена тегов XML/HTML внутри закрывающих тегов?

На самом деле это не вопрос программирования сам по себе, но мне было интересно, почему имя тега требуется в закрывающем теге в XML. Например, не мог

<a>
    <b>stuff</b>
</a>

Быть написанным

<a>
    <b>stuff</>
</>

Чтобы каждый закрывающий тег </> просто завершал последний открытый тег?

Итак, мои вопросы

  1. Будет ли это работать (т.е. есть ли какие-то крайние случаи, о которых я не думаю, в которых это было бы неоднозначно/неудачно)?
  2. Если бы это сработало, почему «они» не разработали его таким образом?

person Seth Carnegie    schedule 22.07.2011    source источник
comment
Пахнет СГМЛ. SGML также допускает такие вещи, как <t/stuff/, но SGML был упрощен для получения XML, чтобы с ним было легче работать и анализировать.   -  person mu is too short    schedule 22.07.2011
comment
Я согласен с мю слишком короткий. Чтобы добавить, он должен следовать концепции правильности XML, разделу 2.1 рекомендации XML 1.0 (w3.org/TR/REC-xml/#sec-starttags).   -  person Michel Hébert    schedule 22.07.2011
comment
В дополнение к моему последнему комментарию, SGML предназначался для написания вручную, поэтому было много сокращений, XML предназначен для создания с программной поддержкой (либо редактором XML, либо полностью сгенерированным программным обеспечением), поэтому важнее более простой/быстрый анализатор. чем ярлыки.   -  person mu is too short    schedule 22.07.2011
comment
Какая польза от использования </> вместо фактического закрывающего тега?   -  person Daniel Haley    schedule 22.07.2011
comment
Я не согласен с голосами за закрытие. Это и конструктивный, и реальный вопрос, и хороший.   -  person user207421    schedule 27.08.2011
comment
возможный дубликат Почему XML имеет такие подробные закрывающие теги?   -  person unor    schedule 18.07.2013


Ответы (2)


Если бы это сработало, почему «они» не разработали его таким образом?

Одна из причин заключается в том, что SGML/XML также предназначены для чтения человеком. Ваш пример /a/b читабелен, но интерпретировать гораздо более сложную структуру было бы кошмаром.

Это особенно верно для смешанного содержимого (PCDATA и смешанные структуры элементов).

person Daniel Haley    schedule 22.07.2011

Это сработает, но было бы ужасно отлаживать проблему вложенности. Например:

<one><two><nine></><ten></><eight><three></><four>
<five></><six></></>
<seven></>To what element does this text belong?</></></>

Если вы убедитесь, что XML имеет правильный отступ, проблема вложенности не будет проблемой (ниже приведен тот же код с правильным отступом. Однако, поскольку отступ незначителен, нам нужен другой механизм, чтобы XML был удобочитаемым для человека. В этом примере, человеко-читаемый означает, что человек может легко увидеть, какой контент относится к какому элементу.Решение состоит в том, чтобы назвать, к какому элементу относится каждый закрывающий тег.

<one>
<two>
    <nine>
    </nine>
    <ten>
    </ten>
    <eight>
        <three>
        </>
        <four>
            <five>
            </>
            <six>
            </>
        </>
        <seven>
        </>
        To what element does this text belong?
    </>
</>
</>

Когда мы даем имена закрывающим тегам, даже в XML с неправильным отступом ясно видно, что текст принадлежит элементу <eight>.

<one><two><nine></nine><ten></ten><eight><three></three><four>
<five></five><six></six></four><seven>
</seven>To what element does this text belong?</eight></two></one>
person Rose Perrone    schedule 27.05.2012