Подтвердить что ты не робот

Лучшая практика для метаданных в html-документе?

Я работаю над крупномасштабным, большим объемом, публичным веб-приложением. Успешная работа приложения очень важна для бизнеса, и поэтому существует множество инструментов MI, которые работают против него.

Один из этих инструментов MI по существу смотрит на html, который отправляется в браузер для каждого запроса на страницу (я упростил его довольно много, но для целей этого вопроса его инструмент, который делает некоторый анализ на HTML)

Для этого инструмента MI для получения требуемых данных мы помещаем метаданные в элемент head. В настоящее время мы делаем это как html-комментарии:

<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" class="">
<head>
    <!-- details = 52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009] -->
    <!-- policy id = 1234567890 -->
    <!-- party id = 0987654321 -->
    <!-- email address = [email protected] -->
    <!-- error = 49 -->
    <!-- subsessionid = bffd5bc0-a03e-42e5-a531-50529dae57e3-->
    ...

И инструмент просто ищет заданный комментарий метаданных с регулярным выражением

Поскольку эти данные являются метаданными, я хотел бы изменить их на метатеги html, потому что он чувствует семантическую правильность. Что-то вроде этого:

<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" class="">
<head>
    <meta name="details" content="52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009]" />
    <meta name="policyId" content="1234567890" />
    <meta name="partyId" content="0987654321" />
    <meta name="emailAddress" content="[email protected]" />
    <meta name="error" content="49" />
    <meta name="subsessionid" content="bffd5bc0-a03e-42e5-a531-50529dae57e3" />
    ...

Это кажется более смысловым, и я могу заставить инструмент MI работать с ним без проблем - просто случай изменения регулярных выражений. Однако теперь это дает мне проблему с валидатором w3c. Это не проверяет, потому что мета-имена, которые я использую, не распознаются. Я получаю сообщение об ошибке "Информация о плохом значении для имени атрибута в метатеге элемента: данные ключевого слова не зарегистрированы". и он предлагает зарегистрировать эти значения имен в wiki WHATWG.

Пока я мог это сделать, это не кажется правильным. Некоторые из моих мета-тегов являются "generic" (например, error и emailAddress), поэтому я мог бы, вероятно, найти уже зарегистрированное имя и использовать его. Однако большинство из них относятся к отрасли/организации. Неправильно регистрировать общедоступное имя, называемое subsessionid или partyId, поскольку оно относится к моей организации и к приложению.

Итак, вопрос в том, что в этом случае считается лучшей практикой? Должен ли я оставить их в качестве комментариев html? Должен ли я использовать метатеги, как указано выше, и не беспокоиться о том, что проверка w3c не удалась? (хотя это становится все более важным для организации) Должен ли я попытаться зарегистрировать свои значения метазнаний в wiki WHATWG, но зная, что они не очень общие? Или есть другое решение?

Цените свои мысли, приветствия

Натан


Отредактировано, чтобы показать окончательное решение:

Полный ответ, который я собираюсь сделать, следующий. Его основанный на Rich Bradshaws отвечает, поэтому он принят, но это то, что я собираюсь сделать для полноты:

<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" class="">
<head>
    <meta name="application-name" content="Our app name" 
        data-details="52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009]" 
        data-policyId="1234567890"
        data-partyId="0987654321"
        data-emailAddress="[email protected]"
        data-error="49"
        data-subsessionid="bffd5bc0-a03e-42e5-a531-50529dae57e3"
    />
    ...

Это подтверждается, поэтому все поля отмечены галочкой:)

4b9b3361

Ответ 1

Валидация W3C не имеет смысла. HTML!= XML, поэтому для его проверки нет никакой схемы. Ни один браузер не задохнется, потому что вы добавили мета-элемент с незарегистрированным именем. Если вы действительно беспокоитесь, вы можете использовать атрибут data на метаэлементе, например:

<meta data-details="52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009]" data-policyId="0123456789" />

по крайней мере, тогда вы не узнаете, что будущие спецификации не придадут значения вашим данным.

Подробнее читайте: http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#custom-data-attribute

Ответ 2

Пока ваш пример может работать, обратите внимание, что ключевое слово application-name предназначено только для веб-приложений.

Для обычных веб-страниц, не являющихся веб-приложениями, или если нет application-name, см. некоторые альтернативы:

Использование атрибутов data-* в head

Нет необходимости в элементе meta.

<!DOCTYPE html>
<html>
<head
    data-details="52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009]" 
    data-policyId="1234567890"
    data-partyId="0987654321"
    data-emailAddress="[email protected]"
    data-error="49"
    data-subsessionid="bffd5bc0-a03e-42e5-a531-50529dae57e3">
</head>

Использование микроданных

Вы можете создать словарь, но thats не требуется для локального использования.

<!DOCTYPE html>
<html>
<head itemscope>
  <meta itemprop="details" content="52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009]" />
  <meta itemprop="policyId" content="1234567890" />
  <meta itemprop="partyId" content="0987654321" />
  <link itemprop="emailAddress" href="mailto:[email protected]" /> <!-- or use a meta element if you don’t want to provide a full URI with "mailto:" scheme -->
  <meta itemprop="error" content="49" />
  <meta itemprop="subsessionid" content="bffd5bc0-a03e-42e5-a531-50529dae57e3" />
</head>

Использование данных в script

Элемент script может использоваться для блоков данных. Вы можете выбрать любой формат, который соответствует вашим потребностям. Пример с открытым текстом:

<!DOCTYPE html>
<html>
<head>
  <script type="text/plain">
    details = 52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009]
    policyId = 1234567890
    partyId = 0987654321
    emailAddress = [email protected]
    error = 49
    subsessionid = bffd5bc0-a03e-42e5-a531-50529dae57e3
  </script>
</head>

Ответ 3

Что делать, если вы попытаетесь использовать формат данных для добавления к ним настраиваемого атрибута, например, типа данных или имени данных, и опустить атрибут реального имени или, возможно, установить все на "абстрактный" или что-то (я не знаю, если валидатор даст проблемы для повторных имен мета):

<meta data-name="details" content="52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009]" />

Итак, вы можете ссылаться на это имя-имя для работы с метафайлом...

http://html5doctor.com/html5-custom-data-attributes/

Ответ 4

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

Как вы говорите, добавление информации в пользовательские теги метаданных приведет к аннулированию вашей разметки.

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

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

Я бы, вероятно, оставил эту информацию в виде комментариев HTML, если это уже работает для вашей организации.