Поиск

Правила обработки ошибок, возникающих на этапе синтаксического анализа

В некоторых случаях агенты пользователей должны игнорировать часть некорректной таблицы стилей. В данной спецификации термин игнорировать означает следующее. Агент пользователя осуществляет синтаксический анализ некорректной части таблицы для того, чтобы определить ее начало и конец, а затем действует так, как если бы этой части не существовало в таблице.

Для обеспечения возможности добавления новых свойств и новых значений для уже существующих свойств агенты пользователей в перечисленных ниже ситуациях должны выполнять следующие правила:

  • Неизвестные свойства. Агенты пользователей должны игнорировать объявления, содержащие неизвестные свойства. Например, следующую таблицу стилей:
  • H1 { color: red; rotation: 70minutes }

    агент пользователя должен обрабатывать, как если бы она выглядела так:

    H1 { color: red }
  • Недопустимые значения. Агенты пользователей должны игнорировать объявления, содержащие недопустимые значения. Например:
  • IMG { float: left } /* корректное объявление */
    IMG { float: left here } /* "here" не является значением */
    /* свойства 'float' */
    IMG { background: "red" } /* ключевое слово заключено в кавычки */
    IMG { border-width: 3 } /* не определена единица измерения */
    /* для значения длины */
    Анализатор CSS2 должен применить первое правило и проигнорировать остальные:
    IMG { float: left }
    IMG { }
    IMG { }
    IMG { }

    Возможно, что агент пользователя, соответствующий спецификации CSS более высокого уровня, сможет обрабатывать большее количество правил.

  • Некорректные ключевые слова at. Агенты пользователей должны игнорировать некорректные ключевые слова at и весь следующий за ними текст до первой точки с запятой (";") или первого {}-блока включительно, в зависимости от того, что встретится первым. Рассмотрим следующий пример:
  • @three-dee {
    @background-lighting {
    azimuth: 30deg;
    elevation: 190deg;
    }
    H1 { color: red }
    }
    H1 { color: blue }

    Правило at '@three-dee' не принадлежит языку CSS2. Поэтому все правило до третьей правой фигурной скобки включительно игнорируется. Агент пользователя с поддержкой CSS2 проигнорирует его, сократив таблицу стилей до следующего вида:
    H1 { color: blue }