Является ли RDFa `‹meta›` без атрибута `name` совместимым с HTML5?

RDFa представила property атрибут для элемента <meta>, а W3C даже < href="https://www.w3.org/TR/html-rdfa/#extensions-to-the-html5-syntax" rel="nofollow noreferrer">рекомендует это как расширение для HTML5. Протокол Facebook Open Graph, например, использует такой атрибут RDFa property (пример с сайта Open Graph):

<html prefix="og: http://ogp.me/ns#">
<head>
<title>The Rock (1996)</title>
<meta property="og:title" content="The Rock" />
<meta property="og:type" content="video.movie" />
<meta property="og:url" content="http://www.imdb.com/title/tt0117500/" />
<meta property="og:image" content="http://ia.media-imdb.com/images/rock.jpg" />
…

Однако спецификация HTML5, похоже, запрещает такое использование. Я не говорю о том, разрешает ли он атрибут property; Я имею в виду явный запрет атрибута content без атрибута name для элемент <meta>:

Если указано name или http-equiv, то необходимо также указать атрибут content. В противном случае его следует опустить.

Разве это не противоречит текущему использованию RDFa, например, в Open Graph? Спецификация HTML5, по-видимому, также требует наличия здесь атрибута name.


person Garret Wilson    schedule 16.12.2019    source источник


Ответы (1)


Рекомендация W3C "HTML+RDFa 1.1" расширяет спецификацию HTML (вы можете найти все расширения в примечание W3C).

Это расширение изменяет требования соответствия HTML для элемента meta:

Если атрибут RDFa @property присутствует в элементе meta, то ни атрибуты @name, ни @http-equiv, ни @charset не требуются, а атрибут @content ДОЛЖЕН быть указан.


Итак, эти два элемента HTML+RDFa допустимы:

<meta property="og:title" content="The Rock" />
<meta property="og:type" content="video.movie" />

(Два других элемента meta недопустимы, поскольку они имеют значения URL, для которых вместо этого должен использоваться элемент link.)

person unor    schedule 16.12.2019
comment
Я понимаю концепцию расширения спецификации, но я не понимаю, как можно изменить абсолютное требование (должно быть опущено) спецификации; в противном случае невозможно проверить соответствие спецификации, поскольку любое расширение может изменить любую часть спецификации. Это похоже на класс Java, указывающий, что метод fooBar() имеет public видимость, а затем появляется подкласс и пытается переопределить метод с видимостью private (см. LSP). Может ли расширение отменить запрет? - person Garret Wilson; 16.12.2019
comment
@GarretWilson: потребители HTML (например, средства проверки соответствия) не обязаны поддерживать расширения. Если они поддерживают расширение, они полностью адаптируют требования соответствия; если они не поддерживают расширение, они будут считать документ недействительным даже только потому, что он имеет атрибут property, независимо от того, указан также атрибут name или нет. -- Под расширениями можно понимать необязательные изменения всей спецификации HTML, для которых было решено (например, по причинам организационного характера/удобства использования/стабильности) лучше иметь их в отдельных документах. - person unor; 16.12.2019