que - metadatos html5
¿Práctica recomendada para metadatos en un documento html? (4)
Trabajo en una aplicación web pública de gran volumen y gran volumen. El funcionamiento exitoso de la aplicación es muy importante para el negocio, por lo que hay una serie de herramientas MI que se ejecutan en su contra.
Una de estas herramientas de MI básicamente examina el html que se envía al navegador para cada solicitud de página (lo he simplificado bastante, pero a los fines de esta pregunta, es una herramienta que realiza algunos análisis sobre el html)
Para que esta herramienta MI obtenga los datos que necesita, colocamos metadatos en el elemento principal. Actualmente lo hacemos como comentarios 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-->
...
Y la herramienta simplemente busca un comentario de metadatos dado con una expresión regular
Como estos datos son metadatos, me gustaría cambiarlos a metaetiquetas html porque se siente semánticamente correcto. Algo como esto:
<!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" />
...
Esto se siente más semántico, y puedo hacer que la herramienta MI funcione sin problemas, solo un caso de cambio de expresiones regulares. Sin embargo, ahora me da un problema con el validador w3c. No validará porque los meta nombres que estoy usando no son reconocidos. Aparece el error "Detalles del valor incorrecto para el nombre del atributo en el elemento meta: los detalles de la palabra clave no están registrados". y sugiere que registre estos valores de nombre en la wiki WHATWG.
Aunque podría hacer esto, no me siento bien. Algunas de mis etiquetas meta son ''genéricas'' (como error y dirección de correo electrónico) por lo que probablemente podría encontrar un valor de nombre ya registrado y usarlo. Sin embargo, la mayoría de ellos son específicos de la industria / organización. Se siente mal registrar un valor de nombre público llamado subsessionid o partyId ya que estos son específicos de mi organización y la aplicación.
Entonces, la pregunta es: ¿qué se considera la mejor práctica en este caso? ¿Debo dejarlos como comentarios html? ¿Debo usar metaetiquetas como las anteriores y no preocuparme de que la validación de w3c falle? (aunque eso es cada vez más importante para la organización) ¿Debería intentar registrar mis valores de metadatos en WHATWG wiki, pero sabiendo que no son muy genéricos? ¿O hay otra solución?
Aprecia tus pensamientos, aplausos
Nathan
Editado para mostrar la solución final:
La respuesta completa con la que voy es la siguiente. Está basado en la respuesta de Rich Bradshaws, por lo que es aceptado, pero con esto voy a completar:
<!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"
/>
...
Esto valida, por lo que todas las casillas marcaron :)
¿Qué sucede si intentas usar el formato de datos para agregarles un atributo personalizado, como data-type o data-name y omitir el atributo de nombre real o tal vez configurarlo como "abstracto" o algo así (no sé si el validador dar problemas para meta nombres repetidos):
<meta data-name="details" content="52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009]" />
Entonces podrías hacer referencia a ese nombre de datos para trabajar con tus meta cosas ...
Cualquiera de las opciones funcionaría técnicamente, aunque la solución podría reducirse a cómo se siente su organización con respecto a la validación de la página.
Como dices, agregar información a las etiquetas de metadatos personalizados invalidará tu marcado.
Para mi organización, la validación de páginas es parte de la accesibilidad técnica y se considera muy importante. No se permitirá hacer nada que impida la validación de páginas.
No intentaría registrar nuevos nombres y valores de metadatos, ya que son específicos de su organización y no para uso público.
Probablemente dejaré esta información como comentarios HTML si esto ya está funcionando para su organización.
La validación W3C no tiene sentido. HTML! = XML, por lo que no hay ningún esquema para validarlo. Ningún navegador se bloqueará porque haya agregado un elemento meta con un nombre no registrado. Si realmente está preocupado, podría usar el atributo de datos en un meta elemento como:
<meta data-details="52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009]" data-policyId="0123456789" />
al menos entonces sabes que ninguna especificación futura dará sentido a tus datos.
Para obtener más información, lea: whatwg.org/specs/web-apps/current-work/multipage/…
Si bien su ejemplo puede funcionar, tenga en cuenta que la palabra clave application-name
es solo para aplicaciones web .
Para las páginas web habituales que no sean aplicaciones web, o si no se debe proporcionar ningún application-name
, consulte algunas alternativas:
Usar atributos data-*
en la head
No hay necesidad de un meta
elemento.
<!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>
Usando microdatos
Puede crear un vocabulario, pero no es necesario para uso local .
<!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>
Usar datos en una script
El elemento script
se puede usar para bloques de datos . Puede elegir cualquier formato que se adapte a sus necesidades. Ejemplo con texto simple:
<!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>