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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
No. Las reglas CSS que se aplican únicamente a HTML, se aplican sólo a los
documentos que se sirven como text/html.
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.
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.
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.
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.
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.
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:
alt.
Este hecho ha dificultado la adopción de las imágenes PNG, las cuales son
mejores que GIF y JPG en muchos aspectos, ya se ha seguido usando la
forma en la que todo el mundo podía ver las imágenes.
alt
no puede ser
etiquetado, por tanto si se utiliza sólo obtendremos un texto sin formato.
longdesc
a
una descripción de la imagen, para ayudar a los invidentes, pero se utiliza en muy pocos ocasiones.
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.
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.
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.
Copyright © 2000-2003 W3C ® ( MIT , ERCIM , Keio), Todos los Derechos Reservados. Son aplicables las reglas de responsabilidad, marcas registradas, utilización de documentos y licencias de software. Las interacciones con este sitio están de acuerdo con nuestra declaración de privacidad de usuarios y miembros.