Generalidades ************* Antes de comenzar a estudiar qué elementos constituyen |HTML|, sobre todo teniendo conocimiento previos sobre |XML| y |SGML| como es nuestro caso, es conveniente aclarar algunas de sus características. Etiquetas ========= Sintaxis -------- .. note:: Exponemos aquí la sintaxis |HTML| de |HTML|\ 5. También existe una sintaxis |XML|, que :ref:`comentaremos más abajo `. Las etiquetas |HTML| cumplen con bastante fidelidad con la forma que se espera que tengan en un dialecto |SGML| y que ya se han visto: * ```` para abrir y ```` para cerrar: .. code-block:: html

Esto es un párrafo.

* Las etiquetas tanto de apertura como de cierre pueden sobreentenderse y, en consecuencia, no ser necesario escribirlas explícitamente. * En los elementos vacíos, porque no pueden tener contenido, es válido tanto no cerrar como usar el modo de cierre abreviado típico de |XML|: .. code-block:: html * Los atributos se incluyen dentro de la etiqueta de apertura y los valores pueden estar o no entrecomillados. Son válidos los atributos abreviados, esto es, los que carecen de valor: .. code-block:: html * El lenguaje es indiferente al uso de mayúsculas o minúsculas. * Los comentarios se notan de forma idéntica a cómo se hacen en |XML|: .. code-block:: html * Existen entidades predefinidas. Puede consultar la `lista completa de entidades `_. .. _xhtml5: Sintaxis |XML| -------------- Si se conoce la sintaxis |HTML| es bastante sencillo producir una sintaxis |XML|. Las reglas las podemos resumir en las siguientes: #. Para asegurarnos de que el navegador interprete la sintaxis como |XML| el servidor web debe informarle de que el documento es *application/xhtml+xml*\ [#]_: .. code-block:: yaml Content-Type: application/xhtml+xml En su defecto (por ejemplo, porque leamos un archivo del disco local), podemos usar la extensión :file:`.xhtml`. #. El documento resultante debe ser un |XML| bien formado, de lo contrario el navegador generará un error y no generará ninguna visualización. Esto es muy importante respecto a la sintaxis |HTML| en la que la especificación prescribe al navegador que ante un fallo haga lo que buenamente pueda para mostrar algo. #. La declaración |XML|, o sea: .. code-block:: xml no es necesaria si la codificación usada es *UTF-8*. #. La declaración del tipo de documento no es obligatoria a diferencia de lo que ocurre con la sintaxis |HTML|. Deberíamos prescindir de ella, a menos que deseemos definir alguna entidad. Por ejemplo: .. code-block:: dtd ]> #. Es obligatorio indicar el espacio de nombres dentro de la etiqueta ````: .. code-block:: html #. Los nombres de las etiquetas y atributos siempre se deben escribir en minúsculas (la sintaxis |HTML| puede usar mayúsculas o minúsculas a voluntad). #. Es obligatorio el uso expreso de los elementos ````, ```` y ````. Por otro lado, no puede usarse ``