Обработка пробелов в XHTML - PullRequest
4 голосов
/ 14 мая 2010

Есть ли информация о том, как правильно обрабатывать пробелы в XHTML (1.0 Transitional)? Похоже, что XHTML не использует стандартную обработку пробелов XML.

Редактировать: Mayby Я был немного неточен в том, что именно искал. Меня больше интересует, как элемент визуализируется, чем как он будет обрабатываться процессором XML. Например, следующее будет отображаться с 1 пробелом между ними:

<em> em content </em> following text

Ситуация усложняется, если пространство фактически имеет свое собственное форматирование, например, <a href="http://www.google.de"> content of the hyperlink </a> content after the hyperlink будет иметь подчеркнутый пробел в конце гиперссылки, а <a href="http://www.google.de"> content of the hyperlink</a> content after the hyperlink<br /> не будет подчеркивать пробел.

Похоже, что пробел всегда добавляется к предыдущей области форматирования, а пробелы обрабатываются поверх (встроенных) элементов начала и конца тегов. Но это основано исключительно на тестировании, и мне было интересно, есть ли какая-то спецификация, как точно это ведет себя.

Ответы [ 2 ]

3 голосов
/ 14 мая 2010

Из рекомендации W3C :

4,7. Обработка пробелов в значениях атрибутов

Когда пользовательские агенты обрабатывают атрибуты, они делают это в соответствии с разделом 3.3.3 из [XML]:

  • Полоска ведущая и висячая белая пространство.
  • Последовательности карт одного или нескольких символы пробела (включая строку разрывы) в одно межсловное пространство.

Для пробелов между тегами см. раздел 3.2 критерий 9:

3,2. Соответствие пользовательского агента

[1-8 отрублено]

9. Пробелы обрабатываются в соответствии со следующими правилами. Следующие символы определены в пробелах [XML]:

  • ПРОБЕЛ (&#x0020;)
  • ГОРИЗОНТАЛЬНАЯ ТАБУЛЯЦИЯ (&#x0009;)
  • Возврат каретки (&#x000D;)
  • LINE FEED (&#x000A;)

Процессор XML нормализует коды конца строки разных систем в один отдельный символ LINE FEED, который передается приложению.

Пользовательский агент должен использовать определение из CSS для обработки пробельных символов [CSS2]. Обратите внимание, что рекомендация CSS2 явно не решает проблему обработки пробелов в нелатинских наборах символов. Эта проблема будет решена в будущей версии CSS, и эта ссылка будет обновлена.

Также см. Раздел C.15 :

С.15. Пробельные символы в HTML и XML

Некоторые символы, допустимые в документах HTML, являются недопустимыми в документе XML. Например, в HTML символ Formfeed (U + 000C) обрабатывается как пробел, в XHTML из-за определения символов в XML он недопустим.

1 голос
/ 17 июня 2010

Кажется, что нет реальной документации о том, как пробелы отображаются в XHTML. Вот что я узнал экспериментально:

  1. Пробелы уменьшаются в один пробел даже над начальным и конечным тегами в одном блоке
  2. Пробел будет помещен в область форматирования содержащего тега. Если он охватывает два тега, он будет добавлен к первому тегу.
  3. Пробелы в начале и конце элементов блока или элементов span, которые являются первым дочерним элементом / последним дочерним элементом в их блоке, игнорируются.
  4. Пробелы вне элементов блока игнорируются.

Это все, что я мог понять. Прискорбно, что спецификация XHTML не содержит информации о рендеринге пробелов.

...