We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 872
    • 22 Posts
    > следует указывать "text/html", а не "application/xhtml+xml"

    Какое отношение стандарт xhtml имеет к "text/html"? В w3c (и у разработчиков браузеров) чётко прописано, для доктайпа xhtml нужен "application/xhtml+xml", иначе страница парсится как html и все эти "/>" парсеру абсолютно ненужны, т.е. это ошибка, которую html-парсер вынужден "пропускать".

    То, что в доктайпе указан стандарт xhtml, а страница выдаётся и парсится как html - не вижу в этом никакого смысла.

    Кстати, в html 5 сделали так: доктайп там один, но если надо вывести html, то передаём заголовок "text/html", а если надо вывести xhtml, то передаём заголовок "application/xhtml+xml". Вполне логичное решение.

    А насчёт IE, в девятой версии появился xhtml, так что в будущем вполне возможно перейти на xhtml-вёрстку.

    Пример ошибочного xhtml-кода с правильным xhtml-заголовком (не закрыл
    , нужно было так
    ) -

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="ru">
    <head>
    <title>Test</title>
    </head>
    <body>
    <div>test<br>test test</div>
    </body>
    </html>
    


    Результат -

      • 785
      • 2,113 Posts
      Quote from: Alcorn at Dec 11, 2010, 08:08 PM

      В w3c (и у разработчиков браузеров) чётко прописано, для доктайпа xhtml нужен "application/xhtml+xml", иначе страница парсится как html и все эти "/>" парсеру абсолютно ненужны, т.е. это ошибка, которую html-парсер вынужден "пропускать".
      В официальной документации XHTML 1.0 сказано:
      XHTML Documents which follow the guidelines set forth in Appendix C, "HTML Compatibility Guidelines" may be labeled with the Internet Media Type "text/html" [RFC2854], as they are compatible with most HTML browsers. Those documents, and any other document conforming to this specification, may also be labeled with the Internet Media Type "application/xhtml+xml" as defined in [RFC3236].

      То есть "text/html" – не ошибка, а допустимое значение, если требуется совместимость с HTML-браузерами. Кстати, это подтверждается также тем, что такое значение проходит валидацию.

      Quote from: Alcorn at Dec 11, 2010, 08:08 PM

      То, что в доктайпе указан стандарт xhtml, а страница выдаётся и парсится как html - не вижу в этом никакого смысла.
      Смысл в том, чтобы правильно отображалось в разных браузерах. А сам по себе XHTML более строгий и четкий, позволяющий меньше неоднозначностей, так что даже если он парсится как HTML, все равно его лучше использовать.

      А по поводу ошибки – я не знаю, как это было достигнуто, но у меня Opera, как и другие современные браузеры, отображают приведенный фрагмент нормально, без каких-то сообщений об ошибках. Возможно, потому, что сервер в заголовке ответа в строке Content-Type также выдает text/html, и это правильно. Может вместо того, чтобы переводить все имеющиеся в MODx сниппеты с XHTML на HTML, проще настроить сервер?
        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
        Статьи о MODx, регулярно новые публикации
        • 872
        • 22 Posts
        Ещё раз... Наиважнейшим критерием для браузера является Content-Type. Доктайп можно хоть свой собственный придумать, хоть вообще его удалить, страница всё равно невзирая на доктайп будет парситься по тому значению, которое указано в Content-Type.

        В случае с html, код "<meta ... />" невалиден, т.е. несоответствует стандарту. Желающие могут проверить html 4.01 на валидаторе - "<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />", код приведёт к ошибке.

        Символ "/" в html и символ "/" в xhtml - это две разные вещи. В xhtml - "/>" это закрытие тега, а в html - это короткий тег (null ends tag). По стандарту html, запись вида "<div/xxx/>" полностью валидна и является сокращённой записью от "<div>xxx</div>", запись <br/ равна
        , соответственно
        будет равен
        >. Но браузеры уже не поддерживают данный html-синтаксис, поэтому все эти html-слэши просто отбрасываются как ошибочные. В html, в отличие от xhtml, браузер сам должен исправлять/не обращать внимания на ошибки.

        Если указан text/html, значит это html и нет там никакого xhtml.
        Если указан application/xhtml+xml, то это xhtml. А раз это xhtml, значит в коде нельзя допускать ошибок, все атрибуты должны быть в кавычках, теги закрыты и т.д., иначе браузер не должен обрабатывать такие страницы, что собственно и происходит, пример привёл выше с Оперой.

        Образно говоря, передавая text/html и доктайп xhtml, мы подсовываем браузерам ошибочный код, который они всё равно переводят в html, тратя время на исправление ошибок (хотя эти "наносекунды" особой роли не играют).

        Правильно свёрстаная html-страница отличается от xhtml-страницы только наличием "/>" и другого доктайпа, если под "/>" понимается строгость, то тогда да, xhtml строже smiley Не трудно ведь верстать под html так же как под xhtml, не применяя старые атрибуты, расставляя кавычки, вынося js в отдельные файлы (прощай [cdata] и прочие вещи).

        Про application/xhtml+xml, на том же w3c http://www.w3.org/TR/2002/NOTE-xhtml-media-types-20020801/#application-xhtml-xml.


        ’application/xhtml+xml’ SHOULD be used for serving XHTML documents to XHTML user agents. Authors who wish to support both XHTML and HTML user agents MAY utilize content negotiation by serving HTML documents as ’text/html’ and XHTML documents as ’application/xhtml+xml’. Also note that it is not necessary for XHTML documents served as ’application/xhtml+xml’ to follow the HTML Compatibility Guidelines.

        Из цитаты - для xhtml должен(большими буквами) передаваться application/xhtml+xml. Но можно этого не делать для совместимости со старыми браузерами. Но тогда все будут обрабатывать html-контент, вместо xhtml.

        Как писал выше, отдавать браузеру html с синтаксисом xhtml - не вижу смысла, поэтому и хочется переделать под html.
          • 9085
          • 630 Posts
          Я и не знал, что существуют такие проблемы ))) Горе от ума что ли?

          1. TinyMce, FCKeditor+ (наиболее популярные WYSIWYG редакторы) по умолчанию вставляют тэги в XHTML-формате. Их использует куча народу. Не наводит на мысли тот факт, что по поводу тэгов-валидности итд особой паники нет?

          2. Пробежаться по нескольким сайтам (можно взять одну-две из популярных веб-студий, заглянуть в портфолио)... Как оно у них работает?

          3. HTML-редакторы (Dreamweaver, например - еще MX-версия от Macromedia) предлагают "болванки"-шаблоны для документов... Как правило, там XHTML-шаблон тоже имеется...

          А насчёт IE, в девятой версии появился xhtml, так что в будущем вполне возможно перейти на xhtml-вёрстку.
          * Насчет "вскоре" - после появления "правильного" отображения того же PNG в IE 7, от PNG-фиксов отказались далеко не сразу smiley
          * А по теме - так те, кто верстал xhtml1, так и будут продолжать верстать %)


          То, что в доктайпе указан стандарт xhtml, а страница выдаётся и парсится как html - не вижу в этом никакого смысла.
          Смысл в том, что можно не "делать себе моСк", а делать что-то полезное.. тем более, что альтернатива работает smiley Причём не "абы как", а валидно. А вот мета-тэг http-equiv в коде Вашем бы не помешал.. ) - он не только "валидности" добавит, но и часть проблем решит, например так:
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


          Ваш код, кстати вполне нормально просматривается браузерами (ie, opera, mozila, safari), несмотря на
          line 7 column 13 - Ошибка: end tag for "br" omitted, but OMITTAG NO was specified



          Пример ошибочного xhtml-кода с правильным xhtml-заголовком (не закрыл
          , нужно было так
          ) -
          Ну так и "пишите" в XHTML.., закрывайте тэги; тем более, что редакторы сами подставляют "как надо" =) Первое время может быть непривычно, зато потом - очень удобно.. и даже логично. smiley

          Удачи Вам! smiley

          ps. каждый выбирает свой путь...
          Quote from: AKots at Dec 11, 2010, 11:02 PM

          Может вместо того, чтобы переводить все имеющиеся в MODx сниппеты с XHTML на HTML, проще настроить сервер?
          основываясь на собственных приоритетах...
            Правильно заданный вопрос повышает вероятность получения нужного ответа.
            Что-то не работает? Загляните в лог ошибок!
            Есть проблема? "Локализуйте" её!
            Ответы на большинство вопросов по MODx | MODx RTFM | API Evo Revo | галопом по Европам Азиям smiley wikibooks(ru) Ditto(en) | Wayfinder e-book | Заметки и о MODx
            • 872
            • 22 Posts
            html (text/html) так устроен, что я могу написать любую белиберду под любым доктайпом, а браузер постарается эту белиберду распарсить и хоть как-то отобразить страницу и неважно какой указан доктайп, всё равно это как был html, так он и остался. В качестве белиберды выступает любой не html-синтаксис, в том числе и закрывающие слэши.

            У xhtml (application/xhtml+xml) принцип другой - с ошибками писать нельзя, любой ошибочный код - сразу прекращение парсинга и вывод ошибки. Я считаю это правильным и с удовольствием бы верстал на xhtml, но IE мешает этому.

            Сейчас же и не туды и не сюды, синтаксис xhtml, а выводится как html.
            Но наконец-то html 5 всё расставил на свои места, пишем <!doctype html>, а html это или xhtml - зависит от серверного заголовка content-type и далее от него пишем либо в стиле xhtml, либо в стиле html.
              • 872
              • 22 Posts
              Пора уже прекращать дискуссию не по теме, будем только о modx smiley
                • 785
                • 2,113 Posts
                Quote from: Alcorn at Dec 12, 2010, 01:50 AM

                Ещё раз... Наиважнейшим критерием для браузера является Content-Type.
                А я что, другое утверждал? Поэтому и надо, чтобы сервер отдавал нужный Content-Type, что я и написал, хотя если Content-Type и Doctype разные, это как раз как-то не совсем верно. А по поводу различий – дело не только в />, но в некоторых других вещах, повышающих строгость и логичность кода. И, наконец, все средства автоматизации генерируют именно XHTML, но для совместимости его практически никогда не рассматривают как xml, а только как html – это сложившаяся ситуация. И это не является ошибкой, так как стандарт позволяет такое. А если захочется перейти к xml, не потребуется ничего менять в коде, надо только будет изменить тип контента.
                Конечно, если хочется использовать HTML (так как «не вижу смысла в ином») и исправлять под него все современные средства автоматизации, это можно делать, но мне такой подход представляется совершенно неразумным – но «на вкус и цвет…».
                А по ошибке – если взять предложенный код и поместить в файл с расширением xml, то да, современный браузер выдаст ошибку, а IE вообще не справится, но зачем так делать? Если же поместить абсолютно тот же код в файл с расширением html, все правильно обработается.

                Quote from: Alcorn at Dec 12, 2010, 03:56 AM

                html (text/html) так устроен, что я могу написать любую белиберду под любым доктайпом, а браузер постарается эту белиберду распарсить и хоть как-то отобразить страницу и неважно какой указан доктайп, всё равно это как был html, так он и остался
                Так устроен не html, а браузеры. И вообще, почему-то валидатор на W3C говорит:
                This document was successfully checked as XHTML 1.0 Transitional!
                Doctype: XHTML 1.0 Transitional

                Хотя в заголовке сервера и мета-тегах стоит Content-Type text/html. То есть КОРРЕКТНЫЙ документ XHTML, по мнению валидатора W3C, вполне может отдаваться в виде контента html. У Вас, судя по всему, иное мнение.
                  Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                  Статьи о MODx, регулярно новые публикации
                  • 872
                  • 22 Posts
                  > Хотя в заголовке сервера и мета-тегах стоит Content-Type text/html. То есть КОРРЕКТНЫЙ документ XHTML, по мнению валидатора W3C, вполне может отдаваться в виде контента html.

                  С точки зрения валидатора вот это - <meta http-equiv="Content-Type" content="vghjgghkkh;charset=UTF-8"> тоже будет валидно html 4.01, так как валидатор проверяет общий синтаксис (код страницы) относительно доктайпа, а не строит страницу как браузер, применяя content-type и прочее.
                    • 9085
                    • 630 Posts
                    Но наконец-то html 5 всё расставил на свои места, пишем <!doctype html>, а html это или xhtml - зависит от серверного заголовка content-type и далее от него пишем либо в стиле xhtml, либо в стиле html.
                    А тут ie6-7-8 не мешает? =)


                    Quote from: Alcorn at Dec 12, 2010, 05:28 AM

                    С точки зрения валидатора вот это - <meta http-equiv="Content-Type" content="vghjgghkkh;charset=UTF-8"> тоже будет валидно html 4.01, так как валидатор проверяет общий синтаксис (код страницы) относительно доктайпа, а не строит страницу как браузер, применяя content-type и прочее.
                    Точно?
                    в заголовке сервера и мета-тегах

                    В общем, дело Ваше... Я (совместно с Akots, если он не будет возражать против такой формулировки) всего лишь пытался показать, что есть точка зрения, отличная от Вашей...
                    * приняв которую можно упростить (как мне кажется) себе жизнь
                    * которую "поддерживают" web-разработчики, разработчики Dreamveawer-а, валидаторы w3c, "браузеры".. (тут можно список продолжать..)

                    Если Вы о ней не знали, или знали, но "не то" - можно так и сказать.. Или не говорить и принять к сведению
                    Если знали, знаете и продолжаете настаивать на своей - то снимаю шляпу.. rolleyes (однако, это выше моего понимания)

                    ps. Описание и примеры, поясняющие некоторые различия HTML и XHTML (пользователи IE для лучшего понимания могут обновиться до IE 9)
                    pps. Ещё немного о смысле text/html вместо application/xhtml+xml
                      Правильно заданный вопрос повышает вероятность получения нужного ответа.
                      Что-то не работает? Загляните в лог ошибок!
                      Есть проблема? "Локализуйте" её!
                      Ответы на большинство вопросов по MODx | MODx RTFM | API Evo Revo | галопом по Европам Азиям smiley wikibooks(ru) Ditto(en) | Wayfinder e-book | Заметки и о MODx
                      • 785
                      • 2,113 Posts
                      Мне кажется, некоторые могут почерпнуть что-то интересное из этой дискуссии, но продолжать ее не стоит. Каждый может использовать то, что ему больше нравится, а преимущества разных вариантов отмечены (хотя лично я не понял преимуществ варианта с HTML, но это мои личные трудности).
                        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                        Статьи о MODx, регулярно новые публикации