Подтвердить что ты не робот

Почему HTML1113: перезапуск режима документа из стандартов IE9 в Quirks

Я открываю веб-страницу в IE9 - и внезапно режим документа переключается в режим Quirks. Сама страница мертва проста - нет doctype, нет метатега, только часть (цель теста) javascript внутри xslt, образующего страницу.
См. http://home.arcor.de/martin.honnen/xslt/test2012041901.xml, используя указанный xsl в том же месте. Для удобства я скопировал содержание ниже.

Содержание страницы

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="test2012041901.xsl"?>
<test/>

И xsl содержит

<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0"
  xmlns:ms="urn:schemas-microsoft-com:xslt"
  xmlns:my="http://example.com/my"
  exclude-result-prefixes="ms my">

  <xsl:output method="html" version="5.0"/>

  <ms:script language="JScript" implements-prefix="my">
  <![CDATA[
  function tokenize (input) {
    var doc = new ActiveXObject('Msxml2.DOMDocument.6.0');
    var fragment = doc.createDocumentFragment();
    var tokens = input.split(';');
    for (var i = 0, l = tokens.length; i < l; i++)
    {
      var item = doc.createElement('item');
      item.text = tokens[i];
      fragment.appendChild(item);
    }
    return fragment.selectNodes('item');
  }
  ]]>
  </ms:script>

  <xsl:template match="/">
    <html>
      <head>
        <title>Example</title>
      </head>
      <body>
        <h1>Example</h1>
        <ul>
          <xsl:apply-templates select="my:tokenize('Kibology;for;all')"/>
        </ul>
      </body>
    </html>
   </xsl:template>

   <xsl:template match="item">
     <li>
       <xsl:value-of select="."/>
     </li>
   </xsl:template>

</xsl:stylesheet>

Почему это происходит? Это настройка интернет-параметров, которая запускает это? Как я могу запретить автоматический режим quirks в IE9?
И: ранее на той же странице этот автоматический режим quirks не возникал - я должен был что-то сделать, как изменение настроек, возможно, даже сразу и обратно к исходному значению снова, что привело к этому изменению поведения. Но что?

Инструменты разработчика F12 показывают на консоли следующее:

XML5001: Applying Integrated XSLT Handling. 
HTML1114: Codepage unicode from (UNICODE byte order mark) overrides conflicting codepage utf-8 from (10) 
test2012041901.xml
HTML1113: Document mode restart from IE9 Standards to Quirks 
test2012041901.xml
HTML1114: Codepage unicode from (UNICODE byte order mark) overrides conflicting codepage utf-8 from (10) 
test2012041901.xml

Не знаете, что такое сообщение о знаке байтового байта - возможно, это связано с проблемой?

Инструменты Oh и dev также показывают это в части script:

㼼浸敶獲潩㵮ㄢ〮•湥潣楤杮∽呕ⵆ∸㸿㰊砿汭猭祴敬桳敥⁴祴数∽整瑸砯汳•牨晥∽整瑳〲㈱㐰㤱㄰砮汳㼢ਾ琼獥⽴ਾ

Обратите внимание, что все это происходит только с недавно открытыми вкладками, а не с уже существующими в режиме quirks.

4b9b3361

Ответ 1

Поскольку никто не подпрыгивает до этого случая, я сам отвечу на вопрос.
Как указывает paulsm4 в комментарии к вопросу, это недостающий doctype, который вызывает режим quirks. См. http://hsivonen.iki.fi/doctype/ для превосходного обзора дотиформ, типов браузеров и результирующих режимов браузера.

Что касается забавной строки азиатских персонажей, я сделал несколько дальнейших исследований по этому вопросу и обнаружил, откуда он. Я открыл новый файл в UltraEdit, сначала конвертировал его с utf-8 в unicode, а затем скопировал текст. Результат в шестнадцатеричном представлении показывает все:

Little Endian

Как мы видим, это просто загруженный файл xml, а также предыдущий байтовый знак FF FE, который согласно wikipedia является utf-16 Little Endian:

byte order mark

Теперь для сообщений в консоли: порядок событий в браузере выглядит следующим образом:

  • получить XML файл
  • получить связанный XSL файл и применить преобразование (XML5001); результат процесса
  • BOM = FF FE, который utf-16 переопределяет utf-8, упомянутый в заголовке xml (HTML1114)
  • В IE9 отсутствует отсутствующий doctype, переключается в режим quirks (HTML1113) и снова загружается файл результатов.
  • Опять же, кодировка BOM переопределяет кодировку заголовка xml (HTML1114)
  • Отображаемый файл