<!DOCTYPE html>
...
<link rel='stylesheet' id='basecss-css' href='http://www.someurl.com/modules/14ce1e21/peadig-eucookie.css' type='text/css' media='all' />
¿Por qué el validador ( http://validator.w3.org/ ) rechaza esto? ¿Qué atributo es "obligatorio" del que no tenga conocimiento?
El error:
Línea de error 408, columna 142: Falta la propiedad de atributo requerida en el enlace del elemento. … / Modules / 14ce1e21 / peadig-eucookie.css 'type =' text / css 'media =' all '/> Atributos para el enlace del elemento: atributos globales href crossorigin rel media hreflang tamaños de tipo Además, el atributo title tiene una semántica especial en este elemento.

<link rel='stylesheet' id='someId' href='folder/file.css' type='text/css' media='all' property='' />Funciona en todos los navegadores y valida. Se trata del atributoproperty.Respuestas:
El consejo de @stevelove es aparentemente la solución práctica, pero aquí hay una respuesta teórica a la pregunta del "por qué":
Aunque un
linkelemento es incondicionalmente inválido enbodyespecificaciones HTML anteriores, HTML5 tiene reglas más permisivas. De acuerdo con HTML 5.1 Nightly (que es más o menos lo que el validador intenta mantenerse al día), ellinkelemento también está permitido en el cuerpo del documento (siempre que se permita el contenido de redacción), siempre que tenga unitempropatributo. Esto parece hacer que el mensaje de error sea aún más desconcertante. Parte de la explicación es que el validador en realidad está validando contra HTML5 + RDFa, y RDFa define elpropertyatributo. El problema sigue siendo qué definición específica de RDFa está comprobando el validador, ya que la definición también necesitaría redefinir las reglas para HTML.De todos modos, la información del mensaje de error está desactualizada. Aparentemente, los mensajes de error no se actualizan tan rápido como la funcionalidad básica del validador.
fuente
Añadir
property='stylesheet'si no desea mover su enlace al
<head>del documento.<link rel='stylesheet' property='stylesheet' id='basecss-css' href='http://www.someurl.com/modules/14ce1e21/peadig-eucookie.css' type='text/css' media='all' />fuente
¿Estás
<link>dentro del<body>? Si es así, intente ponerlo<head>en la parte superior del documento.fuente
<style>en la parte superior del documento en la parte superior del documento y colocar el resto en la parte inferior. Esta es la mejor forma de abrir una página más rápido. Puede encontrar documentos en la web sobre esto, PERO no siempre es posible hacerlo (y, a menudo, la eficiencia del código empresarial> rendimiento).Responsable del validador W3C HTML5 aquí. Como se señaló en otra respuesta, además de verificar los requisitos en la especificación HTML5 en sí, el validador también verifica los requisitos en la especificación HTML + RDFa 1.1:
http://www.w3.org/TR/html-rdfa/
Y aunque la especificación HTML en sí dice
linkque normalmente no está permitido en el cuerpo *, la especificación RDFa dice que si unlinkelemento tiene unpropertyatributo, está permitido en el cuerpo.Entonces, el mensaje del validador básicamente dice: 「El
linkelemento solo se permite aquí si tiene unpropertyatributo. Pero estelinkelemento en particular no tiene ningúnpropertyatributo. 」* La especificación HTML en sí misma también dice que el
linkelemento está permitido en el cuerpo si tiene unitempropatributo, pero solo si ellinkelemento no tiene unrelvalor. (itempropes el atributo “Microdata” cuyo propósito es básicamente el mismo que elpropertyatributo RDFa ).Entonces, tenemos dos atributos diferentes que afectan de forma independiente en qué lugar de un documento
linkse permite que aparezca el elemento, y eso complica la lógica de verificación en el validador de una manera que dificulta la emisión de un mensaje de error mejor y más útil para este caso.fuente
Solo para necesidades futuras, aquí está mi comentario:
En la página de w3c tenemos el siguiente comentario:
Entonces, el error se puede resolver cambiando
relporitemprop, porquerelse usará en la cabeza yitempropse puede usar en el cuerpo.Espero que ayude a alguien.
fuente
<link rel='stylesheet' property='stylesheet' href='custom.css' type='text/css' media='screen' />Quiere que esté en tu cabeza. Sin embargo, si el CSS no es demasiado importante para cargarlo de inmediato, obtendrá la herramienta de velocidad de página de Google que le indicará que lo coloque en la parte inferior del cuerpo.
Como ejemplo, uso uno de los temas de jquery (redmond) para diseñar mi autocompletar. No es necesario poner esto en la parte superior de mi página, ya que ralentizará todo lo demás.
Por lo tanto, no se preocupe demasiado por la validación perfecta de w3c.
fuente