miércoles, 27 de mayo de 2015

2.2. Representación de documentos.

2.2. Representación de documentos.











Los lenguajes de marcas, también denominados lenguajes de marcado o lenguajes de descripción de documentos, construyen un conjunto de reglas que definen todo aquello que es parte de un  documento pero que no pertenece al texto del mismo. Los lenguajes de marcas no son lenguajes de formato similares a los lenguajes que se usan en internet como los de descripción de páginas ( archivo PostScript, archivos pdfetc.) ni son lenguajes de programación (java ,perl C++…), sino que se trata de lenguajes orientados a definir la estructura y la semántica de un documento. En realidad, más que de lenguajes, podríamos hablar de metalenguajes o sistemas formales mediante los cuales se añade información o codificación a la forma digitall de un documento bien para controlar su procesamiento, bien para representar su significado.

En un documento existen distintos niveles de información: por un lado, los datos que conforman el contenido de un documento (caracteres de contenido), y por otro, una información superpuesta al contenido, que es lo que constituye el etiquetado, marcado o “markup” (caracteres de etiquetado).

Un lenguaje de marcado cumple con dos objetivos esenciales a la hora de diseñar y procesar un docuementos digitales :


Especifica las operaciones tipográficas y las funciones que debe ejecutar el programarnavegador ,visualizador sobre dichos elementos. Las operaciones tipográficas son instrucciones de formato que se aplican a cada uno de los elementos de un documentos digital como, por ejemplo, imprimir un título en negrita y a un determinado tamaño.


Separa un texto en los elementos de los que se compone, como por ejemplo un párrafo, un capítulo, un encabezamiento, etc.

Así, pues, hay 2 tipos de marcación:


específica: describe cómo ha de formatearse el documento: fuente, tamaño, color, etc.


estructural: describe la estructura del documento: titular, párrafo, etc.

En general los lenguajes de marcado siguen una sintaxis basada en el uso de marcas o etiquetas: una etiqueta que indica el principio de un elemento y otra el final del mismo.

Por regla general, la mayor parte de autores distinguen 2 tipos básicos de lenguajes de marcado:


Lenguaje de marcado de procedimiento o procesado: Las anotaciones o marcas de los lenguajes de procedimiento describen la forma y el significado de las operaciones tipográficas que van a ser aplicadas a cada uno de los elementos del documento. Por ejemplo, una regla de un lenguaje de procedimiento indicaría que el título de la sección de un texto debe ser impreso en una sola línea con una fuente de seis puntos más grande que el resto del texto, con objeto de que los lectores puedan inferir que es el título. Se refiere, pues, a la apariencia física o formato (fuente, estilo de letra, tamaño, etc.) tanto del documento en pantalla como del documento impreso.
Lenguaje de marcado estructural o descriptivo: En los lenguajes estructurales las marcas o anotaciones únicamente describen la estructura lógica del documentos digitales y/o la descripción del contenido, no su tipografía.
Referencias de caracteres

Una codificación de caracteres dada puede no ser capaz de expresar todos los caracteres del conjunto de caracteres del documento. Para tales codificaciones, o cuando las configuraciones de hardware o de software no permitan a los usuarios introducir algunos caracteres del documento directamente, los autores pueden usar referencias de caracteres SGML. Las referencias de caracteres son un mecanismo independiente de la codificación de caracteres para introducir cualquier carácter del conjunto de caracteres del documento.

Las referencias de caracteres en HTML pueden aparecer de dos maneras:
Referencias numéricas de caracteres (bien decimales, bien hexadecimales).
Referencias a entidades de caracteres.
El Conjunto de Caracteres del Documento

Para promover la interoperabilidad, SGML requiere que cada aplicación (incluyendo al HTML) especifique su conjunto de caracteres del documento. Un conjunto de caracteres del documento consiste en:
Un Repertorio : Un conjunto de caracteres abstractos, tales como la letra latina "A", la letra cirílica "I", el carácter chino que significa "agua", etc.
Posiciones de códigos: Un conjunto de referencias enteras a los caracteres del repertorio.

Cada documento SGML (incluidos los documentos HTML) es una secuencia de caracteres del repertorio. Los sistemas informáticos identifican cada carácter según la posición de su código; por ejemplo, en el conjunto de caracteres ASCII, las posiciones de los códigos 65, 66 y 67 se refieren a los caracteres 'A', 'B' y 'C' respectivamente.

El conjunto de caracteres ASCII no es suficiente para un sistema de información global como la Web, de modo que HTML usa un conjunto de caracteres mucho más completo llamado Conjunto Universal de Caracteres (Universal Character Set, UCS), definido en iso10646 Este estándar define un repertorio de miles de caracteres usados por comunidades de todo el mundo.

El conjunto de caracteres definido en 
iso10646es equivalente carácter por carácter a Unicode ( unicode). Ambos estándares se actualizan de vez en cuando con nuevos caracteres, y las correcciones deberían consultarse en los sitios web respectivos. En la especificación actual, se utiliza "[ISO10646]" para hacer referencia al conjunto de caracteres del documento, mientras que "[UNICODE]" se reserva para hacer referencia al algoritmo de texto bidireccional tde Unicode.

El conjunto de caracteres del documento no es suficiente, sin embargo, para permitir a los agentes de usuario interpretar correctamente los documentos HTML del modo en que éstos se intercambian normalmente: codificados como una secuencia de bytes en un fichero o durante una transmisión en red. Los agentes de usuario deben conocer además la codificacion de caracteres específica que fue usada para transformar el flujo de caracteres del documento en un flujo de bytes.











Codificaciones de caracteres

Lo que en esta especificación se denomina codificación de caracteres se conoce con nombres diferentes en otras especificaciones (lo cual puede causar cierta confusión). Sin embargo, el concepto es básicamente el mismo en todo Internet. Asimismo, las cabeceras, atributos y parámetros del protocolo que se refieren a la codificación de caracteres comparten todos el mismo nombre -- "charset" -- y usan los mismos valores del registro  iana (ver  charsets para una lista completa).

El parámetro "charset" identifica una codificación de caracteres, que es un método para convertir una secuencia de bytes en una secuencia de caracteres. Esta conversión se adapta naturalmente al modo de funcionamiento de la Web: los servidores envían los documentos HTML a los agentes de usuario como un flujo de bytes; los agentes de usuario los interpretan como un flujo de caracteres. El método de conversión puede ir desde una correspondencia simple uno a uno hasta complejos algoritmos o procesos de intercambio.

Una técnica simple de codificación uno a uno no es suficiente para cadenas de texto con un repertorio tan amplio como el de
iso10646]. Hay varias codificaciones diferentes de partes de iso10646] además de codificaciones del conjunto completo de caracteres (como por ejemplo UCS-4).
Elección de una codificación

Las herramientas de creación (p.ej., editores de texto) pueden codificar documentos HTML con una codificación de caracteres de su elección, y dicha elección depende en gran medida de las convenciones usadas por el software del sistema. Estas herramientas pueden emplear cualquier codificación que cubra convenientemente la mayor parte de los caracteres contenidos en el documento, suponiendo que la codificación esté etiquetada correctamente  Algunos caracteres se saldrán fuera de esta codificación, pero aún pueden seguir siendo representados mediante  referencias de caracteres. Éstas siempre hacen referencia al conjunto de caracteres del documento, no a la codificación de caracteres.



Los servidores y los proxies pueden cambiar la codificación de caracteres (la llamada transcodificación) en tiempo real para atender a las demandas de los agentes de usuario (véase la sección 14.2 sobre  rfc2616, el encabezado de petición HTTP "Accept-Charset"). Los servidores y los proxies no tienen por qué servir un documento con una codificación de caracteres que cubra el conjunto completo de caracteres del documento.

Aunque lo cierto es que existen 3 utilizaciones básicas de los lenguajes de marcas: los que sirven principalmente para describir el contenido (por ejemplo, las base de datos), los que sirven para definir el formato (por ejemplo, los procesadores de textos) y los que realizan las dos funciones indistintamente (por ejemplo, el lenguaje html).

Algunos servidores examinan los primeros bytes del documento, o comprueban una base de datos de ficheros conocidos y sus codificaciones. Muchos servidores modernos dan a los administradores de páginas web más control sobre la configuración de la codificación que los servidores antiguos. Los administradores de páginas deberían usar estos mecanismos para enviar un parámetro "charset" siempre que sea posible, pero con cuidado de no identificar un documento con un valor del parámetro "charset" equivocado.

¿Cómo sabe un agente de usuario qué codificación de caracteres ha sido utilizada? El servidor debería proporcionar esta información. La manera más directa que tiene un servidor para informar al agente de usuario sobre la codificación de caracteres del documento es utilizando el parámetro "charset" del campo "Content-Type" de encabezado del protocolo HTTP ( RFC2616, secciones 3.4 y 14.17). Por ejemplo, el siguiente encabezado HTTP anuncia que la codificación de caracteres es EUC-JP:Content-Type: text/html; charset=EUC-JP


Consulte la sección sobre conformidad para la definición de text/html.

El protocolo HTTP RFC2616, sección 3.7.1) menciona ISO-8859-1 como la codificación de caracteres por defecto cuando el parámetro "charset" esté ausente del campo de encabezado "Content-Type". En la práctica, esta recomendación ha resultado ser inútil, ya que algunos servidores no permiten que se envíe un parámetro "charset", y otros pueden no estar configurados para enviar el parámetro. Por lo tanto, los agentes de usuario no deben suponer ningún valor por defecto para el parámetro "charset".

Para tener en cuenta las limitaciones de los servidores o de sus configuraciones, los documentos HTML pueden incluir información explícita sobre la codificación de caracteres del documento; el elemento meta puede utilizarse para proporcionar esta información a los agentes de usuario.

Por ejemplo, para especificar que la codificación de caracteres del documento actual es "EUC-JP", un documento debería incluir la siguiente declaración meta:<META http-equiv="Content-Type" content="text/html; charset=EUC-JP">


La declaración meta sólo debe utilizarse cuando la codificación de caracteres se organice de modo que los bytes con valores ASCII correspondan a caracteres ASCII (al menos hasta que se interprete el elemento meta). Las declaraciones META deberían aparecer lo antes posible dentro del elemento HEAD.

Para aquellos casos en que ni el protocolo HTTP ni el elemento META proporcionen información sobre la codificación de caracteres de un documento, HTML también proporciona el atributo charset para varios elementos. Combinando todos estos mecanismos, un autor puede asegurarse bastante de que cuando el usuario reciba un recurso, el agente de usuario reconocerá la codificación de caracteres.

En resumen, los agentes de usuario conformes deben tener en cuenta las siguientes prioridades a la hora de determinar la codificación de caracteres de un documento (de prioridad más alta a más baja):
Un parámetro "charset" HTTP en un campo "Content-Type".
Una declaración MEta con "http-equiv" establecido en "Content-Type" y un valor dado para "charset".
El atributo charset establecido en un elemento que designe un recurso externo.

Además de esta lista de prioridades, el agente de usuario puede usar una heurística y las preferencias del usuario. Por ejemplo, un agente de usuario puede utilizar una heurística para distinguir entre las varias codificaciones utilizadas para textos en japonés. Además, los agentes de usuario tienen normalmente una codificación de caracteres local por defecto y definible por el usuario, que pueden aplicar en ausencia de otros indicadores.



Los agentes de usuario pueden proporcionar un mecanismo que permita a los usuarios invalidar información incorrecta sobre el "charset". Sin embargo, si un agente de usuario ofrece este mecanismo, sólo debería hacerlo para navegar y no para editar, para evitar la creación de páginas web con un parámetro "charset" incorrecto.





fuente:
http://html.conclase.net/w3c/dom1-es/introduction.html

http://es.slideshare.net/Fastrer/c2-lenguaje-html

No hay comentarios.:

Publicar un comentario