2013-10-15 4 views
0

Зная, что & является значением сущности html & - как это делают валидаторы, такие как w3c? Даже когда я смотрю на исходный код, он уже разбирается в правильном значении.Как валидаторы различают «&» и «& amp»?

+3

Это не значение ascii, это объект html. –

+0

@ Co_42 Думаю, я не знаю разницы между двумя. < –

ответ

1

Ваш вопрос основан на ложном посылке - как отметил Co_42, &amp; не является «значением ASCII» '&'. Это HTML character reference, представляющий символ '&'. Значение ASCII '&': 38 (или 0x26).

Исходный код почти наверняка состоит из текстовых файлов ASCII или Unicode. Те не используют объекты HTML. Если у вас есть строка с амперсандом, хранящаяся в исходном коде, она, вероятно, будет храниться с голосом "&". Если есть литерал строки где-то содержащий фактические данные HTML, он может содержать "&amp;".

Когда вы используете какой-либо инструмент или функцию для преобразования строк в текст, готовый к отправке в HTML или XML-документ, любой "&" будет (должен быть!) Преобразован в "&amp;".

Когда программа, которая читает HTML-документы, встречает ASCII "&", она может предположить, что это начало ссылки на символ HTML. Это нормально, потому что все амперсанды в фактическом тексте должны были быть преобразованы в "&amp;".

Как несколько извращенной Например, если вы открываете исходный код в текстовом редакторе и сохраните его как HTML-документ, вы увидите, что в самом файле, "&" был преобразован в "&amp;""&amp;" был преобразован в "&amp;amp;"). Если вы затем откройте этот документ в браузере, вы увидите, что амперсанды отображаются так же, как и при просмотре исходного кода в текстовом редакторе. Шаг кодирования, который произошел при сохранении документа HTML, соответствует шагу декодирования, которое происходит, когда браузер отображает его.

Если вы положили что-то вроде "Fish & chips" непосредственно в фактический HTML-документ, ваш HTML-документ будет недействительным. Усложнением является тот факт, что программы, такие как браузеры, как правило, пытаются восстановить из ошибок в документе и в любом случае отобразить документы. Таким образом, ваш браузер может по-прежнему отображать "Fish & chips" на экране при открытии недействительного документа. Однако программа, такая как валидатор W3C, которая специально предназначена для обнаружения ошибок в документах HTML, уведомит вас о том, что ваш документ недействителен.

Смежные вопросы