2014-09-18 1 views
1

В W3C в HTML микроданных, it says (и это currently the same в WHATWG в HTML Living Standard):Разыменование микроданных URL-типа пункт: "не должны" против "не должен"

За исключением, если иное указанные в этой спецификации, URL-адреса, указанные как типы элементов, не должны автоматически разыменовываться.

Примечание: Спецификация может определять, что его тип элемента может быть заблокирован, чтобы предоставить пользователю справочную информацию, например. Фактически, авторы лексики рекомендуется предоставлять полезную информацию по данному URL-адресу.

И это непосредственно следует:

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

Я смущен об этом. В первом абзаце говорится, что URL-адреса в атрибуте itemtype «не должны автоматически разыменовываться» (должно быть, а не должно быть, поэтому в соответствии с настоящим абзацем пользовательским агентам разрешено разыменовывать). Но в последнем абзаце говорится, что пользовательские агенты «не должны разыменовывать неизвестные типы элементов».

Является ли это противоречием или что-то другое?

Может быть, это только известно против неизвестно (хотя в первом абзаце, не говоря уже о «известном» на всех, поэтому я предполагаю, что это относится ко всем словарям, будь то известные или нет) ? Но почему это должно иметь значение, если пользовательские агенты знают словарь? И что именно означает «знать» словарный запас в первую очередь?

Или, может быть, «чтобы определить, как обрабатывать элементы, которые ими пользуются», суть проблемы здесь? Таким образом, пользовательским агентам разрешено разыгрывать по какой-либо причине, кроме как если они пытаются определить, как обрабатывать элементы?

ответ

0

я думаю, но я не знаю точно ...

Различие известно против неизвестного. Что касается того, что означает «известно», помните, что это всего лишь данные, а пользовательские агенты не обязательно являются браузерами. Например, конкретный набор данных мог бы, по крайней мере теоретически, интерпретироваться для управления машиной реального мира.

В первой части говорится, что если UA знает тип данных, тогда ему не нужно разыгрывать его, потому что UA всегда будет знать, каким будет ресурс, полученный этим разыменованием. Таким образом, это просто накладные расходы сетевого трафика. То же, что и UA, не должны разыгрывать DTD, потому что они уже должны знать, что будет содержать ресурс DTD. Это необходимо, потому что невозможно сказать, что для произвольного типа данных, известных для UA, нет никаких обстоятельств, когда разыменование может дать полезный результат.

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