2012-03-21 23 views
22

Acabo de leer las especificaciones del autor HTML5. Indica que las etiquetas <html>, <head> y <body> son opcionales. ¿Eso significa que puede dejarlos completamente fuera y aún tener un documento HTML5 válido?¿Qué es un documento HTML5 válido?

Si estoy interpretando esto correctamente, significa que esto debería ser completamente válido:

<!DOCTYPE html> 
<p>Hello!</p> 

¿Es esto correcto?

Usted puede comprobar fuera de la especificación aquí:

http://dev.w3.org/html5/spec-author-view/syntax.html#syntax

"8.1.2.4 etiquetas opcionales" es el bit a cabo acerca de que sea bien omitir <html>, <head> y <body>

+0

sólo trató en http: //validator.w3.org/#validate_by_input No me gusta, leyendo spec now .... – Adam

+0

@ Adam, si agrega un conjunto vacío de etiquetas '' en la segunda línea, pasa la validación. –

+0

DEBE tener la etiqueta '', tal como está escrita en su enlace: "Los documentos deben constar de [...] El elemento raíz, en forma de un elemento html". Para '' y '', voy a echar un vistazo. – zessx

Respuesta

18

Ésta es la mínima documento HTML5 válido:

<!doctype html><title> </title> 
+1

Según [ MDN] (https://developer.mozilla.org/en/docs/Web/HTML/Element/head) incluso la etiqueta del título se puede omitir "si el elemento es un' s12c'srcdoc, o si la información del título está disponible en un protocolo de nivel superior ". Por lo tanto, el documento mínimo válido para HTML5 depende del contexto. (He oído que alega que la 'información del título está disponible desde un protocolo de nivel superior' cubre el correo electrónico.) –

+5

Ya no es válido, ya que ahora los borradores HTML5 requieren que el elemento 'title' tenga contenido no vacío. Cualquier personaje (incluso un espacio) allí lo hará. (Hasta que, tal vez, vuelvan a cambiar las reglas.) –

+5

Según [Validator.nu] (https://html5.validator.nu/) y el [Validador W3C] (https://validator.w3.org/# validate_by_input) la etiqueta '' con un espacio en blanco se considera como vacía. Tiene que haber algún personaje no espacial dentro. – <span class="text-secondary"> <small> <a rel="noopener" target="_blank" href="https://stackoverflow.com/users/4642212/">Xufox</a></span> <span></span> </small> </span> </p> </div> </div> </div> </div> </div> </article> <div> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6208739752673518" data-ad-slot="1038284119" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <article class="board-top-1 padding-top-10"> <div class="post-col vote-info"> <span class="count">6<i class="fa fa-thumbs-up"></i></span> </div> <div class="post-offset"> <div class="answer fmt"> <p>Mientras que el <code class="prettyprint-override"><html></code>, <code class="prettyprint-override"><head></code> y <code class="prettyprint-override"><body></code> las etiquetas de inicio y final son opcionales, se requieren las etiquetas <code class="prettyprint-override"><title></code>, excepto en circunstancias especiales, por lo que no, su muestra no es (ordinariamente) válida.</p> </div> <div class="post-info"> <div class="post-meta row"> <p class="text-secondary col-lg-6"> <span class="source"> <a rel="noopener" target="_blank" href="https://stackoverflow.com/q/9797086">Fuente</a> </span> </p> <p class="text-secondary col-lg-6"> <span class="float-right date"> <span>2012-03-21 00:39:50</span> <a rel="noopener" target="_blank" href="https://stackoverflow.com/users/42585/">Alohci</a></span> </p> <p class="col-12"></p> <p class="col-12"></p></div> </div> </div> </article> <article class="board-top-1 padding-top-10"> <div class="post-col vote-info"> <span class="count">1<i class="fa fa-thumbs-up"></i></span> </div> <div class="post-offset"> <div class="answer fmt"> <p>Creo que lo está leyendo correctamente. Aunque los navegadores incluso renderizarán HTML incorrecto (intente romper las reglas y FF lo renderizará).</p> </div> <div class="post-info"> <div class="post-meta row"> <p class="text-secondary col-lg-6"> <span class="source"> <a rel="noopener" target="_blank" href="https://stackoverflow.com/q/9797128">Fuente</a> </span> </p> <p class="text-secondary col-lg-6"> <span class="float-right date"> <span>2012-03-21 00:44:24</span> <a rel="noopener" target="_blank" href="https://stackoverflow.com/users/834424/">dbrin</a></span> </p> <p class="col-12"></p> <p class="col-12"></p></div> </div> </div> </article> <article class="board-top-1 padding-top-10"> <div class="post-col vote-info"> <span class="count">24<i class="fa fa-thumbs-up"></i></span> </div> <div class="post-offset"> <div class="answer fmt"> <p>El elemento <a href="https://www.w3.org/TR/html5/document-metadata.html#the-title-element" rel="noreferrer"><code class="prettyprint-override">title</code></a> es de hecho necesario, pero como <a href="https://stackoverflow.com/questions/9797046/whats-a-valid-html5-document#comment38285420_9797085">Jukka Korpela</a> notas, también debe ser no vacío. Además, el modelo de contenido del elemento de <code class="prettyprint-override">title</code> es:</p> <blockquote> <p><a href="https://www.w3.org/TR/html5/dom.html#text-content" rel="noreferrer">Text</a> que no es <a href="https://www.w3.org/TR/html5/dom.html#inter-element-whitespace" rel="noreferrer">inter-element whitespace</a>.</p> </blockquote> <p>Por lo tanto, tener solo un carácter de espacio en el elemento <code class="prettyprint-override">title</code> no se considera HTML válido. Puede verificar esto en <a href="https://validator.w3.org/nu/?doc=data%3Atext%2Fhtml%3Bcharset%3Dutf-8%2C%3C%21doctype+html%3E%3Ctitle%3E+%3C%2Ftitle%3E" rel="noreferrer">W3C validator</a>.</p> <p>Así, un ejemplo de un documento válido mínimo y HTML5 es la siguiente:</p> <pre><code class="prettyprint-override"><!doctype html><title>a</title> </code></pre> </div> <div class="post-info"> <div class="post-meta row"> <p class="text-secondary col-lg-6"> <span class="source"> <a rel="noopener" target="_blank" href="https://stackoverflow.com/q/26304776">Fuente</a> </span> </p> <p class="text-secondary col-lg-6"> <span class="float-right date"> <span>2014-10-10 17:20:35</span> <a rel="noopener" target="_blank" href="https://stackoverflow.com/users/1128737/">Smi</a></span> </p> <p class="col-12"></p> <p class="col-12"></p></div> </div> </div> </article> <div> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6208739752673518" data-ad-slot="1038284119" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <article class="board-top-1 padding-top-10"> <div class="post-col vote-info"> <span class="count">8<i class="fa fa-thumbs-up"></i></span> </div> <div class="post-offset"> <div class="answer fmt"> <p>validador del W3C HTML mantenedor aquí. Para su información con respecto al comportamiento de validación, a partir de hoy, el validador ahora hace cumplir el requisito establecido en la especificación HTML que debe contener el elemento <code class="prettyprint-override">title</code> al menos uno no está en blanco personaje -</p> <p><a href="http://validator.w3.org/nu/?doc=data%3Atext%2Fhtml%3Bcharset%3Dutf-8%2C%3C%2521doctype%2520html%3E%3Ctitle%3E%2520%2520%2520%3C%252Ftitle%3E" rel="noreferrer">http://validator.w3.org/nu/?doc=data%3Atext%2Fhtml%3Bcharset%3Dutf-8%2C%3C%2521doctype%2520html%3E%3Ctitle%3E%2520%2520%2520%3C%252Ftitle%3E</a></p> </div> <div class="post-info"> <div class="post-meta row"> <p class="text-secondary col-lg-6"> <span class="source"> <a rel="noopener" target="_blank" href="https://stackoverflow.com/q/28688879">Fuente</a> </span> </p> <p class="text-secondary col-lg-6"> <span class="float-right date"> <span>2015-02-24 05:40:15</span> <a rel="noopener" target="_blank" href="https://stackoverflow.com/users/441757/">sideshowbarker</a></span> </p> <p class="col-12"></p> <p class="col-12"></p></div> </div> <!-- comments --> <div class="comments"> <div itemprop="comment" class="post-comment"> <div class="row"> <div class="col-lg-1"><span class="text-secondary">+1</span></div> <div class="col-lg-11"> <p class="commenttext">¿Es cierto que la especificación lo requiere? Veo "Modelo de contenido: texto que no es espacio en blanco entre elementos". Pero el espacio en blanco entre elementos se define como ciertas formas de nodos de Texto. '<title>' no tiene hijos de nodo de texto, por lo que no tiene espacios en blanco entre elementos. El texto por otro lado se define como nada o como nodos de texto. "Nada" coincide, por lo que una lectura estricta dice que el modelo de contenido está satisfecho. Sin duda, ese no es el * intento * de las definiciones, pero tal vez haya un error específico allí. – Alohci

Cuestiones relacionadas