Lenguajes y protocolos de internet

Anuncio
Protocolos, Lenguajes y Estándares.
2
PROTOCOLOS, LENGUAJES Y ESTÁNDARES
2.1
Introducción
A continuación, se explica de forma teórica los temas que ha sido necesario
estudiar para desarrollar el proyecto:
Protocolo HTTP.
Lenguaje HTML.
Lenguaje XML.
Lenguaje XSL.
DTD.
Schemas.
Lenguaje Visual Basic.
DOM level 1.
Lenguaje Perl.
Estándar QTI (Questions & Test Interoperability) del IMS (Instructional
Management System) para la interoperabilidad de las pruebas.
2.2
Protocolo HTTP
HTTP (Hypertext Transfer Protocol) es el protocolo utilizado en las aplicaciones
Cliente-Servidor, que articula los intercambios de información normalmente entre
varios clientes y un servidor. Se basa en sencillas operaciones solicitud / respuesta que,
producen la comunicación entre un cliente (un navegador) y un servidor Web.
Un cliente establece la conexión con un servidor y envía un mensaje con los
datos de la solicitud. El servidor le responde con un mensaje similar, que contiene el
estado de la operación y su posible resultado. Todas las operaciones pueden adjuntar un
objeto o recurso (clasificado por su descripción MIME) sobre el que actúan; cada objeto
es conocido por su URL.
•
•
•
•
•
Las principales características del protocolo HTTP son :
Se puede transmitir cualquier tipo de documento, respetando su formato
original.
Es un protocolo de nivel de aplicación con la ligereza, rapidez y simplicidad
necesarias para sistemas de información distribuida y multimedia.
Existen varios métodos, que un cliente puede utilizar para dialogar con el
servidor: GET, para recoger un objeto; POST, para enviar información al
servidor; HEAD, para solicitar las características de un objeto.
Cada operación http implica una conexión con el servidor, que es liberada al
término de la misma. Es decir, en una operación se puede recoger un único
objeto.
Es un protocolo que no mantiene estado. Es decir, no mantiene ninguna
información sobre la conexión entre sucesivas transacciones. O lo que es lo
mismo, el servidor tratará cada petición como una operación independiente del
resto.
5
Protocolos, Lenguajes y Estándares.
•
Cada objeto al que se le aplican los verbos del protocolo está identificado a
través de la información de situación al final de la URL.
•
El formato de los mensajes es muy simple ([Marshall, 1997]): una cabecera
seguida de los datos con una línea en blanco separándolas. Los formatos de los
mensajes petición y respuesta HTTP son similares y constan fundamentalmente
de:
o Una línea inicial compuesta de la versión de HTTP utilizada y de los
siguientes campos dependiendo de su sentido:
§ Petición: Contiene el nombre del método utilizado (Get, Post,
Put, etc) y el path del recurso solicitado.
§ Respuesta: Código de estado como resultado de la petición y una
frase que lo describe.
o Cero
o
más
líneas
de
cabecera,
con
el
formato:
“nombre_cabecera:valor”.
o Una línea en blanco.
o El cuerpo del mensaje. Esta parte es opcional y en ella es donde viaja,
por ejemplo, el recurso que pidió el cliente al hacer la petición. Si un
mensaje HTTP incluye esta parte, suele haber líneas de cabecera. En
concreto, el protocolo HTTP utiliza un tipo de encabezado MIME
(Multiporpuse Internet Mail Extensions), tanto para las consultas al
servidor como para sus respuestas para transmitir meta-información entre
el cliente y el servidor. Si duda, el campo más importante en estas
cabeceras es la denominada ContentType que le indica al cliente qué tipo
de información está enviando el servidor: texto HTML, texto plano,
imagen GIF (Graphics Interchange Format), JPEG (Join Photographics
Experts Group), XML , sonido, etc.
2.3 Lenguajes de marcado para definir documentos hipertexto
2.3.1 Lenguaje HTML
Es un lenguaje simple utilizado para crear documentos de hipertexto, con un
formato de texto común, empleado para todos los sitios web y reconocible a través de
cualquier sistema operativo.
HTML no es un lenguaje de programación, sino un lenguaje de etiquetas
derivado de un metalenguaje denominado SGML (Standard Generalized Markup
Language) que fue aprobado por la ISO en 1986, pero empezó a gestionarse desde
principios de los 70, y a su vez basado en el GML creado por IBM en 1969.
HTML significa Hypertext Markup Language , “Hypertext” se refiere a que en
un documento HTML puede ser codificado de forma que permita al lector acceder a
otros documentos a través de enlaces en pantalla. El término “Markup” se refiere a la
manera de dar formato a un texto, es decir, a través de marcas.
6
Protocolos, Lenguajes y Estándares.
HTML estaba formado en origen, por un conjunto de instrucciones basado en
etiquetas que permite definir la estructura del contenido de una página, es decir, para
controlar cómo un texto es mostrado al cliente. Sin embargo, este lenguaje ha
evolucionado permitiendo, por ejemplo, la incorporación de tablas, applets, la
manipulación de imágenes, sonido, hojas de estilo, compatibilidad con los principales
navegadores del mercado (Navegador de Netscape y Explorer de Microsoft), la
integración con otras tecnologías, puesto que permite la inserción directa de código en
lenguaje scripting como JavaScript.
2.3.2
Lenguaje XML
El HTML es el cimiento de la Web. Cada página Web hace uso de HTML, ya
que es el lenguaje que hace posible la compatibilidad de las prestaciones de hipertexto e
hipermedia. El HTML se encuentra en la actualidad por su versión 4, pero tiene una
serie de limitaciones.
Con la finalidad de paliar las limitaciones de HTML el W3 Consortium ha
desarrollado el XML (eXtensible Mark up Language) que es un metalenguaje (lenguaje
para definir lenguajes) que aprovecha las innegables ventajas del HTML pero que
permite realizar otras adicionales.
La idea que subyace bajo el XML es la de crear un lenguaje muy general que
sirva para muchas cosas. El HTML está diseñado para presentar información
directamente a los humanos, y esto es sin duda algo bueno, pero es un lenguaje
complicado de procesar para los programas informáticos. El HTML no es bueno porque
no indica lo que esta representando, se preocupa principalmente de la presentación, sin
indicar o diferenciar lo que está mostrando. El XML hace precisamente esto: describe el
contenido de lo que etiqueta.
La principal ventaja del XML es que etiqueta o identifica la información dejando
de lado la presentación. Al estar identificada la información se pueden realizar
operaciones con la misma, es decir, procesarla. Para procesar la información de un
fichero XML se puede utilizar otro lenguaje de programación XSL. Este lenguaje
permite transformar el contenido de un documento XML en formato de presentación
HTML, o formatos de impresión como PDF (Postscript Data File).
Ya que el XML es un metalenguaje que nos permite definir lenguajes, para
definir la estructura y contenidos de los documentos se utiliza una DTD (Document
Type Definition) ¿??? En ella se definen los elementos que conforman el documento y
cómo deben estar organizados para que sea correcto.
2.3.3
Lenguaje XSL
Es un lenguaje que nos permite definir una presentación o formato para un
documento XML. Un mismo documento XML puede tener varias hojas de estilo XSL
que lo muestren en diferentes formatos (HMTL, PDF, RTF, VRML, PostScript, sonido,
etc)
7
Protocolos, Lenguajes y Estándares.
La aplicación de una hoja de estilo XSL a un documento XML puede ocurrir
tanto en un origen (por ejemplo un CGI que convierta XML en HTML para que este sea
mostrado en un navegador conectado a un servidor de web), o en el mismo navegador
(como es el caso del MS IE5 y Netscape 6)
Básicamente XSL es un lenguaje que define una transformación entre un
documento XML de entrada, y otro documento XML de salida.
Una hoja de estilo XSL es una serie de reglas que determinan cómo va a ocurrir
la transformación. Cada regla se compone de un patrón (pattern) y una acción o
plantilla (template).
XSL = XSLT + Xpath
XSLT ( XSL Transformations) Define las acciones o transformaciones a
realizar.
Xpath Se encarga de localizar los elementos en el documento XML.
Los elementos de XSLT son:
<xsl:stylesheet></xsl:stylesheet> Se trata del elemento raíz de la hoja de
estilos. Contiene a los elementos xml:templatey xml:script.
<xsl:template match=”pattern”></xsl:template> Define la plantilla para un
determinado conjunto de nodos de un cierto tipo o en un contexto determinado.
<xsl:apply-template select=”patttern”/> Indica al procesador que busque la
plantilla adecuada para el tipo y contexto de cada nodo seleccionado.
<xsl:value -of select=”pattern”/> Inserta el valor del nodo seleccionado como
texto.
<xsl:attribute name=”nombre”>valor</xsl:attribute> Crea un atributo y lo
añade al nodo de salida.
<xsl:element name=”nmbre”></xsl:element> Crea un
elemento con el
nombre indicado. Esto es útil para evitar conflictos de nombres.
<xsl:for-each order-by=”criterio” select=”pattern”> Repite una plantilla de
forma iterativa.
<xsl:if test=”expresión booleana”></xsl:if> Realiza un test, y ejecuta un
template condicionalmente.
<xsl:choose>
<xsl:when test=”expresion1”>…</xsl:when>
<xsl:when test=”expresion1”>…</xsl:when>
<xsl:otherwise>…</xsl:otherwise>
</xsl:choose> Selección de templates con condicionales múltiples.
Especificación de plantillas (Xpath)
/
//
.
*
@
@*
Especifica el “hijo” inmediato. Puede referirse al raíz.
Selecciona a “cualquier profundidad” en el árbol.
Selecciona el contexto actual.
Selecciona todos los elementos en el contexto actual.
Selecciona el atributo.
Selecciona todos los atributos del contexto actual.
8
Protocolos, Lenguajes y Estándares.
2.3.4
DTD
DTD (Document Type Definitions). La creación de una definición de tipo de
documento es como crear nuestro propio lenguaje de marcado, para una aplicación
específica.
La DTD define los tipos de elementos, atributos y entidades permitidas, y puede
expresar algunas limitaciones para combinarlos.
La DTD puede residir en un fichero externo, y quizá compartido por varios
(puede que miles) de documentos. O bien, puede estar contenida en el propio
documento XML, como parte de su declaración de tipo de documento.
Los documentos XML que se ajustan a su DTD, se denominan “válidos”. El
concepto de “validez” no tiene nada que ver con el de estar “bien formado”. Un
documento “bien formado” simplemente respeta la estructura y sintaxis definidas por la
especificación de XML. Un documento “bien formado” puede ser además “válido” si
cumple las reglas de una DTD determinada. También existen documentos XML con una
DTD asociada, en este caso no son “válidos”, pero tampoco “inválidos” ... Simplemente
“bien-formados” o no.
Declaraciones de tipo elemento: Los elementos son la base de las marcas
XML, y deben de ajustarse a un tipo de documento declarado en una DTD para que el
documento XML sea considerado válido. Las declaraciones de tipo elemento deben
empezar con “<!ELEMENT” seguidas por el identificador genérico del elemento que se
declara. A continuación tienen una especificación de contenido.
<!ELEMENT receta(titulo, ingredientes, procedimiento)>
Las especificaciones de contenido pueden ser de cuatro tipos: EMPTY, ANY,
Mixed y Element.
•
•
•
•
EMPTY: Puede no tener contenido.
ANY: Puede tener cualquier contenido.
Mixed: Puede tener caracteres de tipo datos o una mezcla de caracteres y subelementos especificados.
Element: Solo puede contener sub-elementos especificados en la especificación
de contenido.
Para declarar que un tipo de elemento tenga contenido de elementos se
especifica un modelo de contenido en lugar de una especificación de contenido mixto o
una de las claves ya descritas.
Así, si en
elemento.
,
aparece un solo elemento, la definición sólo permite tener un solo
Si aparece una coma, denota una secuencia de elementos.
9
Protocolos, Lenguajes y Estándares.
|
?
*
+
La barra vertical indica una opción.
Indica Opcional (0 o 1 vez)
Opcional y repetible (0 o más veces)
Necesario y repetible ( 1 o más veces)
Declaraciones de la lista de atributos
Los atributos permiten añadir funcionalidad a los elementos de un documento.
La principal diferencia entre los elementos y los atributos, es que los atributos no
pueden contener sub-atributos. Se usan para añadir información corta sencilla y
desestructurada.
Otra diferencia entre los atributos y los elementos, es que cada uno de los
atributos sólo se puede especificar una vez, y en cualquier orden.
La declaración de los atributos empiezan con “<!ATTRLIST”, y a continuación
del espacio en blanco viene el identificador del elemento al que se aplica el atributo,
después el nombre del atributo, su tipo y su valor por defecto. Se puede obligar a que se
defina el valor del atributo con la palabra #REQUIRED. En el caso de que no se desee
que aparezca un valor por defecto se debe utilizar la palabra #IMPLIED
•
•
•
•
Tipos de atributos: CDATA, NMTOKEN, Enumerados, ID e IDREF.
CDATA: (character data) son los más sencillos y pueden almacenar cualquier
cosa.
NMTOKEN solo aceptan los caracteres válidos para mostrar cosas (letras,
números, puntos, guiones, subrayados y los dos puntos.)
Enumerados. Son aquellos que solo pueden contener un valor entre un número
reducido de opciones.
ID e IDREF: permite que un atributo tenga un nombre único que podrá ser
referenciado por un atributo de otro elemento que sea de tipo IDREF.
Declaraciones de Entidades
XML hace referencia a objetos (ficheros, páginas Web, imágenes, cualquier
cosa) que no deben ser analizados sintácticamente según las reglas de XML, mediante el
uso de entidades. Se declaran en la DTD mediante el uso de <!ENTITY”. Una entidad
puede no ser más que una abreviatura que se utiliza como una forma corta de algunos
textos. Al usar una referencia a esta entidad, el analizador sintáctico reemplaza la
referencia con su contenido. En otras ocasiones es una referencia a un objeto externo o
local.
Los tipos de entidades pueden ser: Internas o Externas, Analizadas o No
Analizadas y Generales o Parámetro.
Las entidades generales internas son básicamente abreviaturas definidas en la
sección de la DTD del documento XML. Son siempre entidades analizadas, es decir,
una vez reemplazada la referencia a la entidad por su contenido, pasa a ser parte del
documento XML y como tal, es analizada por el procesador XML.
Las entidades generales externas analizadas obtienen su contenido en cualquier
otro sitio del sistema, ya sea otro archivo del disco duro, una página web o un objeto de
10
Protocolos, Lenguajes y Estándares.
una base de datos. Se hace referencia al contenido de una entidad así mediante la
palabra SYSTEM seguida de un URI (Universal Resource Identifier)
Entidades no analizadas. Evidentemente si el contenido de la entidad es un
archivo MPEG o una imagen GIF o un fichero ejecutable EXE, el procesador XML no
debería interpretarlo como si fuera texto XML. Este tipo de entidades siempre son
generales y externas.
Entidades parámetro internas. Se denominan así a aquellas que solo pueden
usarse en la DTD, y no en el documento XML. Para hacer referencia a ellas, se usa el
símbolo “%” en lugar de “&” tanto para declararlas como para utilizarlas.
Entidades parámetro externas estas pueden estar definidas externamente.
2.3.5
Schemas XML
Un “Schema XML” es algo similar a un DTD porque define qué elementos
puede contener un documento XML, cómo están organizados, qué atributos y de qué
tipo pueden tener sus elementos.
Las ventajas de los schemas frente a los DTDs son:
•
•
•
Usan sintaxis de XML, al contrario que los DTDs.
Permiten especificar los tipos de datos.
Son extensibles.
La sintaxis de los schemas utiliza las siguientes definiciones:
•
•
•
•
ElementType: Define el tipo y el contenido de un elemento, incluyendo los subelementos que pueda contener.
AttributeType: Asigna un tipo y condiciones a un atributo.
Attribute: Declara que un atributo previamente definido por AttributeType
puede aparecer como atributo de un elemento determinado.
Element: Declara que un elemento previamente definido por ElementType
puede aparecer como contenido de otro elemento.
Tal como se han definido es necesario empezar el schema definiendo los elementos
más profundamente anidados dentro de la estructura jerárquica de los elementos del
documento XML. Es decir se tiene que trabajar “de dentro hacia fuera”.
2.3.6
DOM Level 1
DOM ( Document Object Model) es un modelo que especifica la forma de acceder a
los datos de un documento XML.
DOM especifica un árbol jerárquico de nodos (elementos, comentarios, atributos,
etc).
DOM especifica un conjunto de primitivas para moverse por el árbol
11
Protocolos, Lenguajes y Estándares.
Para utilizar MSXML.DLL se utiliza básicamente la interfaz IXMLDOMNode,
aunque también se ha utilizado la interfaz IXMLDOMNodeMap. Estas interfaces
permiten acceder a los diferentes nodos (elementos, atributos, texto, etc)
Tipos de nodos: Existen 13 tipos de nodos que se definen con las siguientes
etiquetas:
NODE_ATTRIBUTE,
NODE_CDATA_SECTION,
NODE_COMMENT,
NODE_DOCUMENT,
NODE_DOCUMENT_FRAGMENT,
NODE_DOCUMENT_TYPE,
NODE_ELEMENT,
NODE_ENTITY
NODE_ENTITY_REFERENCE,
NODE_INVALID,
NODE_NOTATION,
NODE_PROCESSING_INSTRUCTION,
NODE_TEXT.
Los métodos y propiedades de DOM importantes son:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
nodeName : se trata de la propiedad que indica el nombre del nodo.
nodeValue: devuelve el valor que contiene el nodo.
childNodes: contiene una colección de nodos “hijos” del nodo considerado. Esta
colección puede ser iterada por una construcción for each de Visual Basic.
hasChildNodes: Propiedad booleana que indica si un nodo tiene “hijos”.
firstChild / lastChild : Contienen referencias al primer y último “hijo” de un
nodo.
parentNode : Devuelve una referencia al “padre” del nodo.
nextSibling / previusSibling : devuelve una referencia al siguiente o anterior
“hermano” del nodo.
attributes: devuelve una colección de nodos tipo NODE_ATTRIBUTE del
nodo.
appendChild: Añade un “hijo” sobre un nodo.
closeNode : duplica un nodo “hijo”.
getAttribute: Obtiene el valor de un atributo por su nombre.
getElementsByTagName : Recupera los nodos que tienen por nombre uno dado.
insertBefore : Permite insertar un nodo antes de otro dado.
removeAttribute: Borra el atributo de un nodo definido por su nombre.
removeChild: Elimina un nodo “hijo” dada la referencia.
replaceChild: Reemplaza un nodo “hijo” por otro dada la referencia.
selectNodes: Selecciona los nodos que dependen de uno dado por un patrón de
búsqueda.
selectSingleNode : Selecciona la primera ocurrencia de la búsqueda por un
patrón.
setAttribute: Establece el valor de un atributo dado el nombre.
12
Descargar