Nota de Traducción

Traducción al español: Carlos Iglesias Moro, Oficina Española del W3C.

Este documento es una traducción al español de HTML and XHTML Frequently Answered Questions que puede encontrarse en http://www.w3c.org/MarkUp/2004/xhtml-faq. El documento original del W3C es la única referencia oficial y normativa válida.

Este documento puede contener errores de traducción, los cuales deben ser comunicados a Carlos Iglesias Moro.

Lo que sigue es la traducción del documento original.

W3C

Preguntas frecuentes sobre HTML y XHTML

Editor: Steven Pemberton, W3C/CWI

Fecha de la versión: 21 Julio 2004

Otros FAQs relacionados:

Para hacer comentarios, o sugerir nuevas preguntas para el FAQ, envíe un correo electrónico a www-html-editor@w3.org, incluyendo la palabra FAQ en el asunto.

Tabla de contenidos

  1. ¿Por qué es necesario XHTML?, ¿no es HTML lo suficientemente bueno?
  2. ¿Cuáles son las ventajas de usar XHTML en lugar de HTML?
  3. ¿Es posible poner simplemente la declaración XML al inicio de los documentos HTML ya existentes?, ¿se pueden entremezclar documentos HTML 4.01 y XHTML?
  4. ¿Cuál es la manera más sencilla de convertir documentos HTML a XHTML?
  5. ¿Por qué los navegadores son tan rigurosos con el XML y eran más permisivos con el HTML?
  6. ¿Por qué debería prestar especial atención a que mi documento sea HTML válido si ya se muestra correctamente en mi navegador?
  7. ¿Dónde puedo verificar que mi documento usa el etiquetado correctamente?
  8. ¿Por qué se hace referencia continuamente a los "agentes de usuario" en lugar de a los "navegadores"?
  9. ¿Por qué tengo que usar en XHTML eso que llamáis "namespace" (espacio de nombres)?
  10. ¿Por qué está permitido servir documentos XHTML 1.0 como text/html?
  11. ¿Qué navegadores aceptan el tipo de medio application/xhtml+xml?
  12. ¿Acepta Internet Explorer de Microsoft el tipo de medio application/xhtml+xml?
  13. CSS tiene un montón de reglas especiales que sólo se aplican a HTML, ¿Se aplican también a XHTML?
  14. ¿Funciona document.write en XHTML?
  15. ¿Por qué no está permitido servir documentos XHTML 1.1 como text/html?
  16. ¿Por qué se eliminó el atributo "target" (destino) en XHTML 1.1?
  17. ¿Cuál es la utilidad de la Modularización de XHTML?
  18. ¿Por qué es XHTML 2 necesario?, ¿no es XHTML 1 lo suficientemente bueno?
  19. ¿Se sustituye <img> por <object> en XHTML 2?
  20. ¿Por qué XHTML 2 no utiliza XLink?
  21. ¿Por que XHTML 2 no es compatible con versiones previas?
  22. ¿Por qué está xml:space establecido como "preserve" (conservar) en todos los elementos de XHTML? No quiero que se vean espacios extras en mis documentos.

¿Por qué es necesario XHTML?, ¿no es HTML lo suficientemente bueno?

HTML es probablemente el lenguaje de etiquetado de documentos más exitoso del mundo. Pero cuando se presentó XML, se organizó un taller de dos días de duración para analizar si era necesaria una nueva versión de HTML basada en XML. La opinión general del taller fue un rotundo "Sí": con un HTML basado en XML, otros lenguajes XML podrían incluir porciones de XHTML, y los documentos XHTML podrían incluir porciones de otros lenguajes de etiquetado. Incluso se podría aprovechar el rediseño para limpiar algunas de las partes más descuidadas de HTML, y añadir algunas funcionalidades nuevas y necesarias, tales como mejores formularios.

¿Cuáles son las ventajas de usar XHTML en lugar de HTML?

Si sus documentos son XHTML 1.0 puro (sin incluir otros lenguajes de etiquetado) entonces las diferencias no serán muy significativas actualmente. Sin embargo, a medida que proliferan las herramientas XML, como XSLT para la transformación de documentos, las ventajas de usar XHTML serán más visibles. XForms por ejemplo, permitirá editar documentos XHTML (u otros tipos de documentos XML) de forma sencilla. Las aplicaciones de Web Semántica serán capaces de sacar provecho de los documentos XHTML.

Si sus documentos son algo más que XHTML 1.0, por ejemplo si incluyen MathML, SMIL, o SVG, entonces las ventajas son inmediatas: ese tipo de combinaciones no son posibles con HTML.

¿Es posible poner simplemente la declaración XML al inicio de los documentos HTML ya existentes?, ¿se pueden entremezclar documentos HTML 4.01 y XHTML?

No. HTML no tiene formato XML. Hay que realizar los cambios necesarios para hacer que el documento sea conforme a XML antes de que se pueda aceptar como XML.

¿Cuál es la manera más sencilla de convertir documentos HTML a XHTML?

HTML Tidy ofrece la opción de transformar cualquier documento HTML en uno XHTML. Amaya es un navegador/editor que guarda documentos HTML como XHTML.

¿Por qué los navegadores son tan rigurosos con el XML y eran más permisivos con el HTML?

Está hecho a propósito. Los navegadores HTML aceptan cualquier entrada, ya sea correcta o no, e intentan mostrar algo perceptible con lo que reciben. Dicha corrección de errores hace que los navegadores sean muy difíciles de implementar, especialmente si se espera que todos los navegadores actúen de igual manera. Esto también supone que una enorme cantidad de documentos HTML sean incorrectos, ya que, al mostrarse correctamente en el navegador, el autor no es consciente de los errores. Todo ello hace que sea realmente complicado implementar nuevos agentes de usuario, puesto que los documentos que se supone son HTML, frecuentemente tienen errores.

¿Por qué debería prestar especial atención a que mi documento sea HTML válido si ya se muestra correctamente en mi navegador?

Todos los navegadores saben interpretar HTML correcto. Sin embargo, si no es correcto, el navegador tiene que reparar el documento, y como los navegadores reparan los documentos de distintas formas, esto da lugar a diferencias, con lo cual el documento podría mostrarse y funcionar de diferente manera en navegadores distintos. Puesto que hay cientos de navegadores diferentes, y continuamente aparecen nuevos (no únicamente para PCs, también para PDAs, teléfonos móviles, televisores, impresoras, e incluso frigoríficos), es imposible probar los documentos en todos los navegadores. Si se utiliza HTML no válido y el documento no funciona en un navegador en particular, es un problema del autor; si se utiliza HTML válido y no funciona, entonces es un fallo del navegador.

¿Dónde puedo verificar que los documentos usen el etiquetado correctamente?

El W3C ofrece un servicio de validación en http://validator.w3.org/. El navegador/editor Amaya también se asegurará de que el etiquetado sea correcto.

¿Por qué se hace referencia continuamente a los "agentes de usuario" en lugar de a los "navegadores"?

Aunque los navegadores son de hecho usuarios importantes de HTML y XHTML, hay otros programas y sistemas que leen esos documentos. Los motores de búsqueda por ejemplo, leen documentos pero no son navegadores. Utilizando el término "agente de usuario", intentamos recordar a la gente la diferencia.

Por ejemplo, al hacer una búsqueda en Google frecuentemente veremos en alguno de los resultados de la búsqueda algo como "Esta página Web contiene marcos, pero su navegador no los soporta", lo que desanima a los usuarios a hacer clic en ese vínculo. El autor del sitio Web en cuestión no se ha dado cuenta de que no todo son navegadores, y de que se debe incluir un texto mejor en la sección <noframes>, para que de esta forma no se muestren tan carentes de sentido cuando los usuarios hagan búsquedas en su sitio Web.

¿Por qué tengo que usar en XHTML eso que llamáis "namespace" (espacio de nombres)?

En los primeros tiempos del HTML diferentes grupos y compañías añadieron nuevos elementos y atributos al HTML. Esto amenazaba con provocar un caos de diferentes versiones de HTML no interoperables. XML (la X significa eXtensible) permite a cualquiera utilizar elementos de diferentes lenguajes, pero, para que un navegador u otro agente de usuario conozca qué elementos pertenecen a qué lenguajes, hay que indicárselo. Eso es la función de las declaraciones de los espacios de nombres.

¿Por qué está permitido servir documentos XHTML 1.0 como text/html?

XHTML es un formato XML; esto quiere decir que, estrictamente hablando, debería ser enviado con un tipo de medio afín a XML (application/xhtml+xml, application/xml, o text/xml). Sin embargo, XHTML 1.0 fue cuidadosamente diseñado para que pudiera funcionar tal cual incluso en agentes de usuario HTML antiguos. Si se siguen algunas directrices simples se puede conseguir que muchos documentos XHTML 1.0 funcionen en navegadores antiguos. No obstante, los navegadores antiguos sólo entienden el tipo de medio text/html, así que es necesario utilizar ese tipo de medio si se les envía documentos XHTML 1.0. Pero se debe ser consciente de que si enviamos los documentos XHTML a los navegadores como text/html, éstos verán los documentos como documentos HTML, no XHTML.

¿Qué navegadores aceptan el tipo de medio application/xhtml+xml?

Que sepamos, todos los navegadores basados en Mozilla, tales como Mozilla, Netscape 5 y superiores, Galeon y Firefox, así como Opera, Amaya, Camino, Chimera, DocZilla, iCab, Safari, y todos los navegadores de teléfonos móviles que acepten WAP 2. De hecho, cualquier navegador moderno. La mayoría aceptan los documentos XHTML como application/xml. Véase el test de tipo de medio XHTML para más detalles.

¿Acepta Internet Explorer de Microsoft el tipo de medio application/xhtml+xml?

No. No obstante, hay un truco que permite servir documentos XHTML 1.0 a Internet Explorer como application/xml.

Hay que incluir al inicio del documento la siguiente línea en negrita:

<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="copy.xsl"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

donde copy.xsl es un fichero que contiene lo siguiente:

<stylesheet version="1.0"
     xmlns="http://www.w3.org/1999/XSL/Transform">
    <template match="/">
        <copy-of select="."/>
    </template>
</stylesheet>

Téngase en cuenta que este fichero debe estar en la misma localización que el documento que lo referencia.

Aunque se está sirviendo el documento como XML, y se analiza cómo XML, el navegador piensa que ha recibido text/html, y por ello el documento XHTML 1.0 debe seguir las directrices para servir a navegadores antiguos.

Los documentos XHTML continuarán funcionando en los navegadores que acepten XHTML 1.0 como application/xml.

CSS tiene un montón de reglas especiales que sólo se aplican a HTML, ¿se aplican también a XHTML?

No. Las reglas CSS que se aplican únicamente a HTML, se aplican sólo a los documentos que se sirven como text/html.

¿Funciona document.write en XHTML?

No. Debido a la manera en que XML se define, no es posible hacer trucos como este, en el que el etiquetado es generado por scripts al mismo tiempo que el analizador está analizando el etiquetado.

Todavía se pueden conseguir los mismos efectos, pero hay que hacerlo utilizando DOM para añadir y borrar elementos.

¿Por qué no está permitido servir documentos XHTML 1.1 como text/html?

XHTML 1.1 es XML puro, y pensado para ser únicamente XML. No puede ser enviado a navegadores antiguos con seguridad. Por tanto los documentos XHTML 1.1 deben ser enviados con un tipo de medio afín a XML, tal como application/xhtml+xml.

¿Por qué se eliminó el atributo "target" (destino) en XHTML 1.1?

No ha sido eliminado. Hay tres versiones de XHTML 1.0: strict (estricta), transitional (transicional), y frameset (con marcos). Las tres versiones fueron mantenidas a propósito lo más semejantes a HTML 4.01 dentro de lo que permite XML. XHTML 1.1 es una versión puesta al día de XHTML 1.0 estricto, y ninguna versión de HTML estricta ha incluido nunca el atributo target. Las otras dos versiones , transicional y con marcos, no fueron puestas al día, ya que no había nada que actualizar. Si se desea utilizar el atributo target, debe usarse XHTML 1.0 transicional.

¿Cuál es la utilidad de la Modularización de XHTML?

La modularización de XHTML no se dirige a los usuarios normales de XHTML, sino a los diseñadores de lenguajes basados en XHTML. Se ha observado que las compañías y grupos tienen la tendencia a diseñar sus propias versiones de HTML y XHTML, y éstas a menudo no son interoperables en los niveles básicos. La modularización XHTML divide XHTML en una serie de módulos que pueden seleccionarse individualmente cuando se define un nuevo lenguaje; de esta manera se garantiza que cualquier lenguaje basado en XHTML que utilice por ejemplo tablas, utilice la misma definición de tablas, y no otra versión divergente. La modularización también aclara dónde es correcto añadir nuevos elementos y dónde no lo es.

¿Por qué es XHTML 2 necesario?, ¿no es XHTML 1 lo suficientemente bueno?

HTML y XHTML han realizado un buen servicio, pero hay muchas cosas que pueden ser mejoradas. Las áreas que han recibido una atención particular incluyen mejoras en las posibilidades de estructuración, eliminación de características repetidas en XML, usabilidad, accesibilidad, internacionalización, independencia de dispositivo, mejores formularios y reducción de la necesidad de scripts.

¿Se sustituye <img> por <object> en XHTML 2?

No. <img> es sustituida en XHTML2, pero por algo más completo (aunque se podría usar <object> si se desease).

El diseño de <img> tiene muchos problemas en HTML:

Lo que hace XHTML 2 es indicar que todas las imágenes son equivalentes a alguna parte de contenido; esto se consigue permitiendo el uso de un atributo src en los elementos. Esto quiere decir que: si la imagen está disponible, y el navegador puede procesarla, se utiliza; si no es así, se utilizará el contenido del elemento. Por ejemplo:

<p src="mapa.png">Sal de la estación, gira a la izquierda, 
   sigue recto por la <strong>calle Uría</strong>, y gira a la derecha</p>

La ventaja de este método es que si la imagen no está disponible por alguna razón (como un problema de red) o el navegador no puede mostrar ese tipo de imagen, el documento todavía se puede utilizar. Si se desea proporcionar más de un tipo de imagen, se puede hacer:

<p src="mapa.png"><span src="mapa.gif">Sal de la estación...</span></p>

aunque es mejor usar la negociación de contenido si el servidor lo soporta (la mayoría lo soporta):

<p src="mapa">Sal de la estación...</p>

lo cual provocará la negociación del servidor con el navegador sobre el tipo de imagen que acepta, y se servirá el tipo preferido. Si no hay imagen disponible, entonces se utilizaría el contenido del elemento. Esto presenta una ventaja añadida, ya que posteriormente se podrán añadir nuevos tipos de imágenes en el servidor y no será necesario cambiar la página para que funcione correctamente.

XLink y XHTML tenían diferentes requisitos para los enlaces que no fueron compatibles.

¿Por que XHTML 2 no es compatible con versiones anteriores?

Lo es, pero de una manera diferente a cómo lo eran versiones anteriores de HTML.

Debido a que versiones anteriores de HTML eran lenguajes de propósito especial, fue necesario asegurar un nivel de compatibilidad hacia atrás con nuevas versiones, de manera que los documentos nuevos fueran todavía utilizables por los navegadores antiguos. Por ejemplo, es por ello por lo que el elemento <meta> tiene su contenido en un atributo en lugar de en el mismo elemento, puesto que de ser así podría haberse mostrado en navegadores antiguos.

Sin embargo, gracias al XML y las hojas de estilo, esta compatibilidad estricta de elementos con versiones anteriores ya no es necesaria, debido a que los navegadores basados en XML, que en el momento de escribir este documento suponen más del 95% de los navegadores en uso, pueden procesar nuevos lenguajes de etiquetado sin tener que ser actualizados. Gran parte de XHTML 2 funciona ya en los navegadores actuales, navegadores que no han sido pre-programados para aceptar XHTML 2. Gran parte funciona, pero no todo: cuando los formularios y las tablas fueron añadidos a HTML, la gente tuvo que esperar a que salieran nuevas versiones de los navegadores; de igual manera, algunas partes de XHTML 2, tales como XForms y XML Events (eventos XML), todavía necesitan nuevos agentes de usuario que entiendan su funcionalidad.

¿Por qué está xml:space establecido como "preserve" (conservar) en todos los elementos de XHTML? No quiero que se vean espacios extras en mis documentos.

El atributo xml:space se refiere a la entrada: lo que quiere decir que controla si los espacios estarán presentes en el DOM (es decir, en la versión interna del documento que tienen el navegador); no especifica nada sobre lo que aparecerá en la pantalla. El espaciado de la salida es controlado por la propiedad "whitespace" de CSS. Estableciéndola como " pre " los espacios del DOM serán conservados en la salida; estableciéndola como "normal" los espacios en blanco se agruparán en uno solo (CSS 3 tendrá más propiedades para permitir un mayor control).

Ésta es la razón por la que todos los elementos están establecidos como xml:space="preserve" (conservar) en XHTML 2, de otro modo la propiedad "whitespace" de CSS no tendría ningún efecto, y no habría control sobre la visibilidad de los espacios en blanco. La hoja de estilo por defecto establecerá "whitespace" (espacio en blanco) como "normal" para todos los elementos excepto <pre>, pero se puede cambiar.