Vous êtes sur la page 1sur 250

Programacin WEB

Unidad
Temas
1
Introduccin a las
tecnologas Web.

Subtemas

1.1
1.2

Perspectiva histrica del Internet .

Protocolo http (protocolo de


transferencia de hipertexto).
1.2.1 Arquitectura del WWW.

1.2.2 URLs.
1.2.3 Mtodos http.
1.3

Persistencia en http
Cookies.
Introduccin al HTML.
Lenguaje de despliegue del

web

1.3.1 HTML como un tipo SGML.


1.3.2 Elementos del lenguaje
HTML.
1.3.3 Tablas en HTML.

1.3.4 Formularios.
1.4
1.5

Evolucin del desarrollo de


aplicaciones Web.
Hojas de estilo en cascada e
introduccin al XML.

Desarrollo de
aplicaciones Web

2.1 Arquitectura de las aplicaciones


Web.
2.2 Lenguajes de programacin del lado
del cliente.
2.3 Lenguajes de programacin del lado
del servidor.
2.4 Ambientes para el desarrollo de
aplicaciones Web.
2.5 Metodologas para el desarrollo de
aplicaciones Web.
2.6 Aspectos de seguridad.

Programacin del lado


del servidor.

3.1 Procesamiento del lado del servidor.


3.2 Conceptos bsicos de la herramienta
de desarrollo.
3.3 Operadores.
3.4 Sentencias.
3.5 Arreglos.
3.6 Funciones y libreras.
3.7 Ejemplos prcticos.
3.8 Procesado de formularios.
3.9 Sesiones.

Procesamiento del lado


del cliente.

Servicios Web XML.

3.10 Conectividad entre el servidor Web y


el servidor de base de datos.
3.11 Manejo de archivos.
3.12 Seguridad.
4.1 Lenguaje Script del cliente.
4.2 Modelo de objetos con lenguaje Script.
4.3 Objetos lenguaje Script nter
construidos.
4.4 Eventos con lenguaje Script.
4.5 Validacin de entrada de datos del
lado del cliente.
4.6 Consideraciones del soporte del
navegador.
5.1 Visin general de servicios Web
XML.
5.2 Tecnologas subyacentes.
5.2.1 SOAP
5.2.2 WSDL
5.2.3 UDDI
5.3 Publicacin de un servicio WEB.
5.4 Consumo de un servicio WEB.

Unidad 1. Introduccin a las


tecnologas Web.
1.6 Perspectiva histrica del Internet .
Para los usuarios y para las instituciones educacionales, Internet se ha convertido
en un objeto de atencin y de trabajo. Todava no sabemos exactamente cmo es
que dicha "red de redes" afecta nuestra forma de pensar, pero ya comprendemos
que nuestra computadora no es nada si no est conectada a la Red.
La historia de Internet comenz en la dcada de los 60 en Estados Unidos, con un
carcter militar y como una respuesta al problema de mantener las
comunicaciones si se produjera un ataque nuclear. La solucin propuesta fue
dividir el mensaje en pequeas porciones denominadas paquetes, que llevaran
determinadas referencias. La ruta especfica que cada paquete tomara no era
relevante, lo importante era que se alcanzara el objetivo, es decir, el punto que
deba ser el receptor del mensaje. Se pens que una red de comunicacin utilizando
computadoras sera ms efectiva y menos costosa que si se utilizaban las
estaciones tradicionales de comunicacin. Estas ideas se materializaron en la
primera red de computadoras.

Esta primera red, denominada ARPANET, brindaba los servicios de transferencia


de ficheros, conexin con servidores remotos y mensajera a travs del correo
electrnico. Al mismo tiempo que surgi ARPANET, compaas comerciales
comenzaron a desarrollar redes locales de computadoras (LAN). Uno de los
problemas que se enfrent fue la conexin entre computadoras, debido a las
diferencias entre ellas en tecnologas y arquitectura. Ethernet de los laboratorios
Xerox logr salvar esos problemas y se convirti en un estndar. Este estndar es
ampliamente utilizado en estos momentos.
Aos ms tarde, las redes locales (LAN) se interconectaron con ARPANET. En
1986 se comenz la ampliacin de la red para intercambios acadmicos e
investigacin (Universidades e Instituciones). El protocolo de transmisin
desarrollado por ARPANET: TCP/IP se comenz a utilizar para conectar las redes,
naci con ello una nueva red: NSFNET (National Science Foundation) en Estados
Unidos. Con el nacimiento de redes similares en otros pases y su conexin
posterior entre s, es que podemos hablar ya de Internet.
Internet se ha basado fundamentalmente en textos, es decir, la mensajera, la
localizacin y recuperacin de documentos han descansado en el lenguaje escrito y
an hoy en da, impera el texto escrito.
En 1989 se present un proyecto para interconectar documentos y recursos
audiovisuales a Internet, en el Laboratorio Europeo de Fsica de las Partculas
(CERN), radicado en Suiza. Este proyecto consista en un sistema de hipermedia
(hipertexto) distribuido. En 1991 se realiz la primera conexin del CERN a
Internet mediante dicho sistema, de esta forma naci la WWW (Word Wide Web)
conocida tambin como Web o W3, que no es ms que un subconjunto de los
servicios de Internet. La Web es un sistema hipermedia que est en estos
momentos ocupando el primer lugar de los servicios utilizados en Internet.
La Web represent un gigantesco paso de avance respecto a la forma inicial que
se utilizaba en Internet para vincular documentos. Esta consista en algo parecido
a como guardamos los documentos en nuestro disco duro, es decir, en forma de
carpetas o directorios (estructura de rbol) que contenan una coleccin de
documentos slo texto. En la W3 los documentos se entrelazan (hipervnculos) y
se utiliza para ello una interface grfica que permite aadir a los documentos
color, sonido, movimiento y vdeo.
http://www.uh.cu/facultades/edistancia/Cur/unidad_no1.htm

1.7 Protocolo http (protocolo de transferencia de


hipertexto).

El protocolo HTTP
El Protocolo de Transferencia de HiperTexto (Hypertext Transfer
Protocol) es un sencillo protocolo cliente-servidor que articula los
intercambios de informacin entre los clientes Web y los servidores
HTTP. La especificacin completa del protocolo HTTP 1/0 est recogida
en el RFC 1945. Fue propuesto por Tim Berners-Lee, atendiendo a las
necesidades de un sistema global de distribucin de informacin
como el World Wide Web.
Desde el punto de vista de las comunicaciones, est soportado sobre
los servicios de conexin TCP/IP, y funciona de la misma forma que el
resto de los servicios comunes de los entornos UNIX: un proceso
servidor escucha en un puerto de comunicaciones TCP (por defecto, el
80), y espera las solicitudes de conexin de los clientes Web. Una vez
que se establece la conexin, el protocolo TCP se encarga de
mantener la comunicacin y garantizar un intercambio de datos libre
de errores.
HTTP se basa en sencillas operaciones de solicitud/respuesta. Un
cliente establece una conexin con un servidor y enva un mensaje
con los datos de la solicitud. El servidor responde con un mensaje
similar, que contiene el estado de la operacin y su posible resultado.
Todas las operaciones pueden adjuntar un objeto o recurso sobre el
que actan; cada objeto Web (documento HTML, fichero multimedia o
aplicacin CGI) es conocido por su URL.

NOTA
Los recursos u objetos que actan como entrada o salida de un
comando HTTP estn clasificados por su descripcin MIME. De esta
forma, el protocolo puede intercambiar cualquier tipo de dato, sin
preocuparse de su contenido. La transferencia se realiza en modo
binario, byte a byte, y la identificacin MIME permitir que el receptor
trate adecuadamente los datos.
Las principales caractersticas del protocolo HTTP son:
Toda la comunicacin entre los clientes y servidores se realiza a
partir de caracteres de 8 bits. De esta forma, se puede transmitir
cualquier tipo de documento: texto, binario, etc., respetando su

formato original.
Permite la transferencia de objetos multimedia. El contenido de
cada objeto intercambiado est identificado por su clasificacin
MIME.
Existen tres verbos bsicos (hay ms, pero por lo general no se
utilizan) que un cliente puede utilizar para dialogar con el servidor:
GET, para recoger un objeto, POST, para enviar informacin al
servidor y HEAD, para solicitar las caractersticas de un objeto (por
ejemplo, la fecha de modificacin de un documento HTML).
Cada operacin HTTP implica una conexin con el servidor, que es
liberada al trmino de la misma. Es decir, en una operacin se
puede recoger un nico objeto.
No mantiene estado. Cada peticin de un cliente a un servidor no es
influida por las transacciones anteriores. El servidor trata cada
peticin como una operacin totalmente independiente del resto.
Cada objeto al que se aplican los verbos del protocolo est
identificado a travs de la informacin de situacin del final de la
URL.
NOTA
HTTP se dise especficamente para el World Wide Web: es un
protocolo rpido y sencillo que permite la transferencia de mltiples
tipos de informacin de forma eficiente y rpida. Se puede comparar,
por ejemplo, con FTP, que es tambin un protocolo de transferencia
de ficheros, pero tiene un conjunto muy amplio de comandos, y no se
integra demasiado bien en las transferencias multimedia.

Etapas de una transaccin HTTP


Para profundizar ms en el funcionamiento de HTTP, veremos primero
un caso particular de una transaccin HTTP; en los siguientes
apartados se analizarn las diferentes partes de este proceso.
Cada vez que un cliente realiza una peticin a un servidor, se
ejecutan los siguientes pasos:
1. Un usuario accede a una URL, seleccionando un enlace de un
documento HTML o introducindola directamente en el campo
Location del cliente Web.
2. El cliente Web descodifica la URL, separando sus diferentes
partes. As identifica el protocolo de acceso, la direccin DNS o
IP del servidor, el posible puerto opcional (el valor por defecto
es 80) y el objeto requerido del servidor.
3. Se abre una conexin TCP/IP con el servidor, llamando al puerto
TCP correspondiente.
4. Se realiza la peticin. Para ello, se enva el comando necesario
(GET, POST, HEAD,), la direccin del objeto requerido (el

contenido de la URL que sigue a la direccin del servidor), la


versin del protocolo HTTP empleada (casi siempre HTTP/1.0) y
un conjunto variable de informacin, que incluye datos sobre
las capacidades del browser, datos opcionales para el servidor,
5. El servidor devuelve la respuesta al cliente. Consiste en un
cdigo de estado y el tipo de dato MIME de la informacin de
retorno, seguido de la propia informacin.
6. Se cierra la conexin TCP.
Este proceso se repite en cada acceso al servidor HTTP. Por ejemplo,
si se recoge un documento HTML en cuyo interior estn insertadas
cuatro imgenes, el proceso anterior se repite cinco veces, una para
el documento HTML y cuatro para las imgenes.

NOTA
En la actualidad se ha mejorado este procedimiento, permitiendo que
una misma conexin se mantenga activa durante un cierto periodo de
tiempo, de forma que sea utilizada en sucesivas transacciones. Este
mecanismo, denominado HTTP Keep Alive, es empleado por la
mayora de los clientes y servidores modernos. Esta mejora es
imprescindible en una Internet saturada, en la que el establecimiento
de cada nueva conexin es un proceso lento y costoso.
Veamos el proceso completo con un ejemplo:
1. Desde un cliente se solicita la URL
http://www.unican.es/invest/default.html
2. Se abre una conexin TCP/IP con el puerto 80 del sistema
www.unican.es.
3. El cliente realiza la solicitud, enviando algo similar a esto:

GET /invest/default.html HTTP/1.0 Operacin solicitada+objeto+versin de HTTP


Accept: text/plain Lista de tipos MIME que acepta o entiende
Accept: text/html el cliente
Accept: audio/*
Accept: video/mpeg
.. .. ..
Accept: */* Indica que acepta otros posibles tipos MIME
User-Agent: Mozilla/3.0 (WinNT; I) Informacin sobre el tipo de cliente

Lnea en blanco, indica el final de la peticin

4. El servidor responde con la siguiente informacin:

HTTP/1.0 200 OK Status de la operacin; en este caso, correcto


Date: Monday, 7-Oct-96 18:00:00 Fecha de la operacin
Server: NCSA 1.4 Tipo y versin del servidor
MIME-version: 1.0 Versin de MIME que maneja
Content-type: text/html Definicin MIME del tipo de datos a devolver
Content-length: 254 Longitud de los datos que siguen
Last-modified: 6-Oct-96 12:30:00 Fecha de modificacin de los datos
Lnea en blanco
<HTML> Comienzo de los datos
<HEAD><TITLE>Recursos de investigacin en UNICAN</TITLE></HEAD>
<BODY>
.. .. ..
.. .. ..
</HTML>

5. Se cierra la conexin.

Estructura de los mensajes HTTP


El dilogo con los servidores HTTP se establece a travs de mensajes
formados por lneas de texto, cada una de las cuales contiene los
diferentes comandos y opciones del protocolo. Slo existen dos tipos
de mensajes, uno para realizar peticiones y otro para devolver la
correspondiente respuesta. La estructura general de los dos tipos de
mensajes se puede ver en el siguiente esquema:
Mensaje de
solicitud

Mensaje de
respuesta

Comando HTTP +
parmetros

Resultado de la solicitud
Cabeceras de la respuesta

Cabeceras del
requerimiento

(lnea en blanco)

(lnea en blanco)

Informacin opcional

Informacin opcional

La primera lnea del mensaje de solicitud contiene el comando que se


solicita al servidor HTTP, mientras que en la respuesta contiene el
resultado de la operacin, un cdigo numrico que permite conocer el
xito o fracaso de la operacin. Despus aparece, para ambos tipos
de mensajes, un conjunto de cabeceras (unas obligatorias y otras
opcionales), que condicionan y matizan el funcionamiento del
protocolo.
La separacin entre cada lnea del mensaje se realiza con un par CRLF (retorno de carro ms nueva lnea). El final de las cabeceras se
indica con una lnea en blanco, tras la cual se pueden incluir los datos
transportados por el protocolo, por ejemplo, el documento HTML que
devuelve un servidor o el contenido de un formulario que enva un
cliente .
Los siguientes apartados describen con ms detalle el contenido de
cada una de las secciones de los mensajes. El conocimiento y empleo
de los mensajes HTTP es necesario en las siguientes situaciones:
Para disear mdulos CGI, ya que es preciso construir una
respuesta similar a la que el servidor HTTP proporciona al cliente.
Para disear aplicaciones independientes que soliciten informacin a
un servidor (automatizar la recuperacin de documentos o construir
robots de bsqueda) se debe construir una cabecera HTTP con la
informacin de la peticin al servidor.

Comandos del protocolo


Los comandos o verbos de HTTP representan las diferentes
operaciones que se pueden solicitar a un servidor HTTP. El formato
general de un comando es:
Nombre del comando

Objeto sobre el
que se aplica

Versin de HTTP utilizada

Cada comando acta sobre un objeto del servidor, normalmente un


fichero o aplicacin, que se toma de la URL de activacin. La ltima
parte de esta URL, que representa la direccin de un objeto dentro de
un servidor HTTP, es el parmetro sobre el que se aplica el comando.
Se compone de una serie de nombres de directorios y ficheros,
adems de parmetros opcionales para las aplicaciones CGI (ver
Ejecucin de programas en un servidor HTTP en la pgina *).
El estndar HTTP/1.0 recoge nicamente tres comandos, que
representan las operaciones de recepcin y envo de informacin y
chequeo de estado:

GET Se utiliza para recoger cualquier tipo de informacin del


servidor. Se utiliza siempre que se pulsa sobre un enlace o se teclea
directamente a una URL. Como resultado, el servidor HTTP enva el
documento correspondiente a la URL seleccionada, o bien activa un
mdulo CGI, que generar a su vez la informacin de retorno.
HEAD Solicita informacin sobre un objeto (fichero): tamao, tipo,
fecha de modificacin Es utilizado por los gestores de cachs de
pginas o los servidores proxy, para conocer cundo es necesario
actualizar la copia que se mantiene de un fichero.
POST Sirve para enviar informacin al servidor, por ejemplo los
datos contenidos en un formulario. El servidor pasar esta
informacin a un proceso encargado de su tratamiento
(generalmente una aplicacin CGI). La operacin que se realiza con
la informacin proporcionada depende de la URL utilizada. Se
utiliza, sobre todo, en los formularios.
Un cliente Web selecciona automticamente los comandos HTTP
necesarios para recoger la informacin requerida por el usuario. As,
ante la activacin de un enlace, siempre se ejecuta una operacin
GET para recoger el documento correspondiente. El envo del
contenido de un formulario utiliza GET o POST, en funcin del atributo
de <FORM METHOD="...">. Adems, si el cliente Web tiene un cach
de pginas recientemente visitadas, puede utilizar HEAD para
comprobar la ltima fecha de modificacin de un fichero, antes de
traer una nueva copia del mismo.
Posteriormente se han definido algunos comandos adicionales, que
slo estn disponibles en determinadas versiones de servidores HTTP,
con motivos eminentemente experimentales. La ltima versin de
HTTP, denominada 1.1, recoge estas y otras novedades, que se
pueden utilizar, por ejemplo, para editar las pginas de un servidor
Web trabajando en remoto.
PUT Actualiza informacin sobre un objeto del servidor. Es similar a
POST, pero en este caso, la informacin enviada al servidor debe
ser almacenada en la URL que acompaa al comando. As se puede
actualizar el contenido de un documento.
DELETE Elimina el documento especificado del servidor.
LINK Crea una relacin entre documentos.
UNLINK Elimina una relacin existente entre documentos del
servidor.

Las cabeceras
Son un conjunto de variables que se incluyen en los mensajes HTTP,
para modificar su comportamiento o incluir informacin de inters. En
funcin de su nombre, pueden aparecer en los requerimientos de un

cliente, en las respuestas del servidor o en ambos tipos de mensajes.


El formato general de una cabecera es:
Nombre de la variable

Cadena ASCII con su valor

Los nombres de variables se pueden escribir con cualquier


combinacin de maysculas y minsculas. Adems, se debe incluir un
espacio en blanco entre el signo : y su valor. En caso de que el valor
de una variable ocupe varias lneas, stas debern comenzar, al
menos, con un espacio en blanco o un tabulador.
Cabeceras comunes para peticiones y respuestas
Content-Type: descripcin MIME de la informacin contenida en este
mensaje. Es la referencia que utilizan las aplicaciones Web para dar
el correcto tratamiento a los datos que reciben.
Content-Length: longitud en bytes de los datos enviados, expresado
en base decimal.
Content-Encoding: formato de codificacin de los datos enviados en
este mensaje. Sirve, por ejemplo, para enviar datos comprimidos
(x-gzip o x-compress) o encriptados.
Date: fecha local de la operacin. Las fechas deben incluir la zona
horaria en que reside el sistema que genera la operacin. Por
ejemplo: Sunday, 12-Dec-96 12:21:22 GMT+01. No existe un
formato nico en las fechas; incluso es posible encontrar casos en
los que no se dispone de la zona horaria correspondiente, con los
problemas de sincronizacin que esto produce. Los formatos de
fecha a emplear estn recogidos en los RFC 1036 y 1123.
Pragma: permite incluir informacin variada relacionada con el
protocolo HTTP en el requerimiento o respuesta que se est
realizando. Por ejemplo, un cliente enva un Pragma: no-cache para
informar de que desea una copia nueva del recurso especificado.
Cabeceras slo para peticiones del cliente
Accept: campo opcional que contiene una lista de tipos MIME
aceptados por el cliente. Se pueden utilizar * para indicar rangos de
tipos de datos; tipo/* indica todos los subtipos de un determinado
medio, mientras que */* representa a cualquier tipo de dato
disponible.
Authorization: clave de acceso que enva un cliente para acceder a
un recurso de uso protegido o limitado. La informacin incluye el
formato de autorizacin empleado, seguido de la clave de acceso
propiamente dicha. La explicacin se incluye ms adelante.
From: campo opcional que contiene la direccin de correo
electrnico del usuario del cliente Web que realiza el acceso.
If-Modified-Since: permite realizar operaciones GET condicionales,
en funcin de si la fecha de modificacin del objeto requerido es

anterior o posterior a la fecha proporcionada. Puede ser utilizada


por los sistemas de almacenamiento temporal de pginas. Es
equivalente a realizar un HEAD seguido de un GET normal.
Referer: contiene la URL del documento desde donde se ha activado
este enlace. De esta forma, un servidor puede informar al creador
de ese documento de cambios o actualizaciones en los enlaces que
contiene. No todos los clientes lo envan.
User-agent: cadena que identifica el tipo y versin del cliente que
realiza la peticin. Por ejemplo, los browsers de Netscape envan
cadenas del tipo User-Agent: Mozilla/3.0 (WinNT; I)
Cabeceras slo para respuestas del servidor HTTP
Allow: informa de los comandos HTTP opcionales que se pueden
aplicar sobre el objeto al que se refiere esta respuesta. Por ejemplo,
Allow: GET, POST.
Expires: fecha de expiracin del objeto enviado. Los sistemas de
cache deben descartar las posibles copias del objeto pasada esta
fecha. Por ejemplo, Expires: Thu, 12 Jan 97 00:00:00 GMT+1. No
todos los sistemas lo envan. Puede cambiarse utilizando un <META
EXPIRES> en el encabezado de cada documento.
Last-modified: fecha local de modificacin del objeto devuelto. Se
puede corresponder con la fecha de modificacin de un fichero en
disco, o, para informacin generada dinmicamente desde una base
de datos, con la fecha de modificacin del registro de datos
correspondiente.
Location: informa sobre la direccin exacta del recurso al que se ha
accedido. Cuando el servidor proporciona un cdigo de respuesta de
la serie 3xx, este parmetro contiene la URL necesaria para accesos
posteriores a este recurso.
Server: cadena que identifica el tipo y versin del servidor HTTP.
Por ejemplo, Server: NCSA 1.4.
WWW-Autenticate: cuando se accede a un recurso protegido o de
acceso restringido, el servidor devuelve un cdigo de estado 401, y
utiliza este campo para informar de los modelos de autentificacin
vlidos para acceder a este recurso.

Cdigos de estado del servidor


Ante cada transaccin con un servidor HTTP, ste devuelve un cdigo
numrico que informa sobre el resultado de la operacin, como
primera lnea del mensaje de respuesta. Estos cdigos aparecen en
algunos casos en la pantalla del cliente, cuando se produce un error.
El formato de la lnea de estado es:
Versin de protocolo
HTTP utilizada

Cdigo numrico de
estado (tres dgitos)

Descripcin del cdigo


numrico

NOTA
Dependiendo del servidor, es posible que se proporcione un mensaje
de error ms elaborado, en forma de documento HTML, en el que se
explican las causas del error y su posible solucin.
Existen cinco categoras de mensajes de estado, organizadas por el
primer dgito del cdigo numrico de la respuesta:
1xx : mensajes informativos. Por ahora (en HTTP/1.0) no se
utilizan, y estn reservados para un futuro uso.
2xx : mensajes asociados con operaciones realizadas
correctamente.
3xx : mensajes de redireccin, que informan de operaciones
complementarias que se deben realizar para finalizar la operacin.
4xx : errores del cliente; el requerimiento contiene algn error, o no
puede ser realizado.
5xx : errores del servidor, que no ha podido llevar a cabo una
solicitud.
Los ms comunes se recogen en la siguiente tabla:
Cdigo

Comentario

Descripcin

200

OK

Operacin realizada satisfactoriamente.

201

Created

La operacin ha sido realizada correctamente, y como resultado se


ha creado un nuevo objeto, cuya URL de acceso se proporciona en
el cuerpo de la respuesta. Este nuevo objeto ya est disponible.
Puede ser utilizado en sistemas de edicin de documentos.

202

Accepted

La operacin ha sido realizada correctamente, y como resultado se


ha creado un nuevo objeto, cuya URL de acceso se proporciona en
el cuerpo de la respuesta. El nuevo objeto no est disponible por el
momento. En el cuerpo de la respuesta se debe informar sobre la
disponibilidad de la informacin.

204

No Content

La operacin ha sido aceptada, pero no ha producido ningn


resultado de inters. El cliente no deber modificar el documento que
est mostrando en este momento.

301

Moved
Permanently

El objeto al que se accede ha sido movido a otro lugar de forma


permanente. El servidor proporciona, adems, la nueva URL en la
variable Location de la respuesta. Algunos browsers acceden
automticamente a la nueva URL. En caso de tener capacidad, el
cliente puede actualizar la URL incorrecta, por ejemplo, en la agenda
de bookmarks.

302

Moved
Temporarily

El objeto al que se accede ha sido movido a otro lugar de forma


temporal. El servidor proporciona, adems, la nueva URL en la
variable Location de la respuesta. Algunos browsers acceden
automticamente a la nueva URL. El cliente no debe modificar
ninguna de las referencias a la URL errnea.

304

Not Modified

Cuando se hace un GET condicional, y el documento no ha sido


modificado, se devuelve este cdigo de estado.

400

Bad Request

La peticin tiene un error de sintaxis y no es entendida por el


servidor.

401

Unauthorized

La peticin requiere una autorizacin especial, que normalmente


consiste en un nombre y clave que el servidor verificar. El campo
WWW-Autenticate informa de los protocolos de autentificacin
aceptados para este recurso.

403

Forbidden

Est prohibido el acceso a este recurso. No es posible utilizar una


clave para modificar la proteccin.

404

Not Found

La URL solicitada no existe.

500

Internal Server
Error

El servidor ha tenido un error interno, y no puede continuar con el


procesamiento.

501

Not
Implemented

El servidor no tiene capacidad, por su diseo interno, para llevar a


cabo el requerimiento del cliente.

502

Bad Gateway

El servidor, que est actuando como proxy o pasarela, ha encontrado


un error al acceder al recurso que haba solicitado el cliente.

503

Service
Unavailable

El servidor est actualmente deshabilitado, y no es capaz de atender


el requerimiento.

Cachs de pginas y servidores proxy


Muchos clientes Web utilizan un sistema para reducir el nmero de
accesos y transferencias de informacin a travs de Internet, y as
agilizar la presentacin de documentos previamente visitados. Para
ello, almacenan en el disco del cliente una copia de las ltimas
pginas a las que se ha accedido. Este mecanismo, denominado
"cach de pginas", mantiene la fecha de acceso a un documento y
comprueba, a travs de un comando HEAD, la fecha actual de
modificacin del mismo. En caso de que se detecte un cambio o
actualizacin, el cliente acceder, ahora a travs de un GET, a recoger
la nueva versin del fichero. En caso contrario, se proceder a utilizar
la copia local.

NOTA
Las versiones de Netscape Navigator anteriores a la 2.02 tienen fallos
en su gestin de cach, que hace que se muestre una copia antigua
de un documento almacenada en un cach, a pesar de que el
documento original haya cambiado y se solicite la nueva versin a
travs de un RELOAD.
Un sistema parecido, pero con ms funciones es el denominado
"servidor proxy". Este tipo de servidor, una mezcla entre servidor
HTTP y cliente Web, realiza las funciones de cache de pginas para un
gran nmero de clientes. Todos los clientes conectados a un proxy
dejan que ste sea el encargado de recoger las URLs solicitadas. De

esta forma, en caso de que varios clientes accedan a la misma


pgina, el servidor proxy la podr proporcionar con un nico acceso a
la informacin original.
La principal ventaja de ambos sistemas es la drstica reduccin de
conexiones a Internet necesarias, en caso de que los clientes accedan
a un conjunto similar de pginas, como suele ocurrir con mucha
frecuencia. Adems, determinadas organizaciones limitan, por
motivos de seguridad, los accesos desde su organizacin al exterior y
viceversa. Para ello, se dispone de sistemas denominados
"cortafuegos" (firewalls), que son los nicos habilitados para
conectarse con el exterior. En este caso, el uso de un servidor proxy
se vuelve indispensable.
En determinadas situaciones, el almacenamiento de pginas en un
cach o en un proxy puede hacer que se mantengan copias no
actualizadas de la informacin, como por ejemplo en el caso de
trabajar con documentos generados dinmicamente. Para estas
situaciones, los servidores HTTP pueden informar a los clientes de la
expiracin del documento, o de la imposibilidad de ser almacenado en
un cach, utilizando la variable Expires en la respuesta del servidor.

Magic Cookies
Las galletas mgicas son una de las incorporaciones ms recientes al
protocolo HTTP, y son parte del nuevo estndar HTTP/1.1. Las cookies
son pequeos ficheros de texto que se intercambian los clientes y
servidores HTPP, para solucionar una de las principales deficiencias
del protocolo: la falta de informacin de estado entre dos
transacciones. Fueron introducidas por Netscape, y ahora han sido
estandarizadas en el RFC 2109.
Cada intercambio de informacin con un servidor es completamente
independiente del resto, por lo que las aplicaciones CGI que necesitan
recordar operaciones previas de un usuario (por ejemplo, los
supermercados electrnicos) pueden optar por dos soluciones, que
complican bastante su diseo: almacenar temporalmente en el
sistema del servidor un registro de las operaciones realizadas, con
una determinada poltica para eliminarlas cuando no son necesarias,
o bien incluir esta informacin en el cdigo HTML devuelto al cliente,
como campos HIDDEN de un formulario.
Las cookies son una solucin ms flexible a este problema. La
primera vez que un usuario accede a un determinado documento de
un servidor, ste proporciona una cookie que contiene datos que
relacionarn posteriores operaciones. El cliente almacena la cookie en
su sistema para usarla despus. En los futuros accesos a este

servidor, el browser podr proporcionar la cookie original, que servir


de nexo entre este acceso y los anteriores. Todo este proceso se
realiza automticamente, sin intervencin del usuario. El siguiente
ejemplo muestra una cookie generada por la revista Rolling Stone.

EGSOFT_ID
191.46.211.13-655193640.29148285
www.rollingstone.com/
0
2867435528
30124157
4206779936
291478284

La informacin dentro de una cookie se organiza a partir de lneas de


texto. El campo ms interesante es la tercera lnea. El cliente Web la
compara cada URL a la que accede; si se produce una concordancia
entre ambas, se enviar la cookie correspondiente. Es decir, una
cookie asociada a www.rollingstone.com/shop slo se enviar con
accesos por debajo de la seccin /shop, mientras que la cookie del
ejemplo servir para todo el servidor Rolling Stone. Las cookies
pueden tener asociada una fecha de expiracin, a partir de la cual el
cliente Web tratar de obtener una nueva versin.
Para qu se pueden utilizar? Su aplicacin ms inmediata son los
sistemas de compra electrnica. Estos supermercados virtuales
necesitan relacionar el contenido de un pedido con el cliente que lo ha
solicitado. Sin cookies, la solucin ms sencilla es incluir dentro de los
documentos HTML el contenido de las operaciones o pedidos previos,
a travs de variables ocultas. Con ellas es posible relacionar los
sucesivos accesos al sistema con su origen y simplificar la gestin de
la aplicacin Web.
Otro uso muy interesante son los sistemas personalizados de
recepcin de informacin, en los que es posible construir una pgina
a medida, con informacin procedente de fuentes muy diversas (ver
por ejemplo my.yahoo.com/ o www.snap.com). En el primer acceso al
sistema, se procede al registro; a partir de l, se genera una cookie
que recibe el cliente. En accesos sucesivos, el cliente enviar la
cookie, y el servidor podr generar una pgina personalizada con las
preferencias del usuario.
Por ltimo, algunas compaas emplean las cookies para realizar un
seguimiento de los accesos a sus servidores WWW, identificando las
pginas ms visitadas, la manera en que se pasa de una a otra
seccin, etc.

NOTA
Para utilizar las cookies, es necesario que los clientes estn
preparados para recogerlas y almacenarlas. Netscape Navigator e
Internet Explorer disponen ya de esta capacidad. Sin embargo, los
servidores no necesitan capacidades especiales, ya que son las
aplicaciones CGI las encargadas de su gestin.
Por defecto, los clientes Web reciben y envan cookies sin solicitar
confirmacin al usuario, pero es posible recibir avisos de la recepcin
de cookies, para rechazarlas en caso de no ser de nuestro agrado.
Por qu rechazar las cookies?. Bueno, se pueden utilizar para seguir
una pista del tipo de informacin que buscamos en Internet, y ofrecer
informacin comercial en funcin de ello. Sin embargo, algunos
servicios Web como tiendas on-line dependen de ellas para operar
correctamente.
Las cookies tienen un tiempo de vida, que hace que sean descartadas
pasado un cierto tiempo de actividad. Algunas expiran al salir del
cliente Web, pero otras cookies tienen una duracin mayor, por lo que
el cliente Web las almacena en un fichero. Netscape utiliza el fichero
cookies.txt de su directorio de instalacin, mientras que Microsoft
almacena cada uno en un fichero independiente del cach de pginas.
Las cookies son imprescindibles para operar con determinados
servidores de acceso restringido, en los cuales es preciso seguir un
proceso de registro, y posiblemente abonar algn tipo de tasa.
Cuando se pierde una de esas cookies, por una reinstalacin, fallo del
ordenador o limpieza del cach de pginas, en algunos casos puede
ser posible regenerarla siguiendo un nuevo proceso de registro en el
servidor que la proporcion, de forma que se relacione algn tipo de
informacin personal o clave de acceso proporcionado en la primera
visita al servidor.

Uso de las cookies


Una cookie es simplemente una serie de lneas de texto, con pares
variable/valor. Existe un conjunto predefinido de nombres de variable,
necesarias para el correcto funcionamiento de las cookies, pero se
pueden crear nuevas variables para cubrir las necesidades de una
aplicacin concreta. Las principales variables predefinidas son:
Domain= conjunto de direcciones Internet para el que es vlida la
cookie. Se puede dar una direccin nica (www.mitienda.es) o un
rango (.netscape.com).
Path= fija el subconjunto de URLs para las que sirve esta cookie.
Version= Permite seleccionar entre diferentes versiones del modelo

de cookies.
Expires= Fecha de expiracin de la informacin. Si no se incluye,
los datos son descartados al finalizar la sesin con el cliente Web.
En caso contrario se almacenar en el disco del cliente. El RFC 2109
ha cambiado esta variable por Max-Age, una duracin relativa en
segundos.
Un servidor HTTP enva los diferentes campos de una cookie con la
nueva cabecera HTTP Set-Cookie:

Set-Cookie: Domain=www.unican.es; Path=/; Nombre=Luis; Expires Fri, 15-Jul-97 12:00:00 GMT

Cuando se accede a una URL que verifica el par dominio/path


registrado, el cliente enviar automticamente la informacin de los
diferentes campos de la cookie con la nueva cabecera HTTP Cookie:

Cookie: Domain=www.unican.es; Path=/; Nombre=Luis

NOTA
Se puede encontrar ms informacin sobre cookies y otros temas
relacionados en http://www.w3.org/pub/WWW/Protocols/ y
http://www.cookiecentral.com/
http://cdec.unican.es/libro/HTTP.htm

Introduccin
El protocolo de transferencia de hipertexto (HyperText Transfer Protocol) es un
protocolo del nivel de aplicacin usado para la transferencia de informacin entre
sistemas, de forma clara y rpida. Este protocolo ha sido usado por el World-Wide Web
desde 1990.

Este protocolo permite usar una serie de mtodos para indicar la finalidad de la peticin.
Se basa en otros conceptos y estndares como Uniform Resource Identifier (URI),
Uniform Resource Location (URL) y Uniform Resource Name (URN), para indicar el
recurso al que hace referencia la peticin. Los mensajes se pasan con un formato similar
al usado por el Internet Mail y el Multipurpose Internet Mail Extensions (MIME).

El protocolo HTTP se basa en un paradigma de peticiones y respuestas. Un cliente enva


una peticin en forma de mtodo, una URI, y una versin de protocolo seguida de los
modificadores de la peticin de forma parecida a un mensaje MIME, informacin sobre
el cliente y al final un posible contenido. El servidor contesta con una lnea de estado
que incluye la versin del protocolo y un cdigo que indica xito o error, seguido de la
informacin del servidor en forma de mensaje MIME y un posible contenido.

Generalmente es el cliente el que inicia la comunicacin HTTP y consiste en la peticin


de un recurso del servidor. Puede hacerse de forma directa al servidor o a travs de
intermediarios.
Se han utilizado los protocolos HTTP/0.9, HTTP/1.0 [2] y HTTP/1.1 [6].

Sintaxis de la peticin
El esquema ``http'' se usa para localizar recursos en la red por medio del protocolo http.

La sintaxis de la peticin es la siguiente:


``http:'' ``//'' direccin [ ``:'' puerto ] [ path ]

Donde direccin es el nombre de un dominio de Internet o una direccin IP, el puerto


es un nmero que indica el puerto al que se enva la peticin y el path indica el recurso
al que se accede.

Si no se indica un nmero de puerto, por defecto se supone que se accede al puerto 80.
Si no se indica un path, entonces se supone que este es ``/''.

Mensaje HTTP
Un mensaje http consiste en una peticin de un cliente al servidor y en la respuesta del
servidor al cliente.

Las peticiones y respuestas pueden ser simples o completas. La diferencia es que en las
peticiones y respuestas completas se envan cabeceras y un contenido. Este contenido se
pone despus de las cabeceras dejando una lnea vaca entre las cabeceras y el
contenido. En el caso de peticiones simples, slo se puede usar el mtodo GET y no hay
contenido. Si se trata de una respuesta simple, entonces sta slo consta de contenido.
Esta diferenciacin entre simples y completas se tiene para que el protocolo HTTP/1.0
pueda atender peticiones y enviar respuestas del protocolo HTTP/0.9.

Peticin
Una peticin de un cliente a un servidor ha de incluir el mtodo que se aplica al recurso,
el identificador del recurso y la versin del protocolo que usa para realizar la peticin.

Para mantener la compatibilidad con el protocolo HTTP/0.9 se permite una peticin


simple con el formato:
``GET'' SP URI CRLF

Donde SP es un espacio, URI es la URI del recurso al que hace referencia la peticin y
CRLF es un retorno de carro y nueva lnea.

En el caso de que la peticin se haga con el protocolo HTTP/1.0 o con el protocolo


HTTP/1.1 la peticin sigue el formato:
Lnea de peticin
*(Cabeceras)
CRLF
[Contenido]

La lnea de peticin comienza indicando el mtodo, seguido de la URI de la


peticin y la versin del protocolo, finalizando la lnea con CRLF:
Mtodo SP URI de la peticin SP Versin del protocolo CRLF

En el caso del protocolo HTTP/0.9 slo se permite el mtodo GET, con el protocolo
HTTP/1.0 GET, POST y HEAD y con el protocolo HTTP/1.1 OPTIONS, GET, HEAD,
POST, PUT, DELETE y TRACE. En caso de que un servidor tenga implementado un
mtodo, pero no est permitido para el recurso que se pide, entonces ha de devolver un
cdigo de estado 405 (mtodo no permitido). Si lo que ocurre es que no tiene
implementado el mtodo, entonces devuelve un cdigo 501 (no implementado). Los
nicos mtodos que deben soportar los servidores de forma obligatoria son los mtodos
GET y HEAD.

En el apartado de cabeceras, stas pueden ser de tres tipos: cabeceras generales (punto
A.3.4), de peticin (punto A.3.5) y de entidad (punto A.3.7). Las cabeceras generales
son las que se aplican tanto a peticiones como a respuestas, pero no al contenido que se
transmite. Las cabeceras de peticin permiten al cliente pasar informacin al servidor
sobre la peticin y sobre el cliente. Las cabeceras de entidad permiten definir
informacin adicional sobre el contenido que se transmite y en caso de que no haya
contenido, sobre el recurso al que se quiere acceder con la peticin.

El contenido (si est presente) est en un formato con una codificacin definida en las
cabeceras de entidad.

Respuesta
Despus de recibir e interpretar una peticin, el servidor debe responder con un mensaje
HTTP. Este mensaje tiene el siguiente formato:
Lnea de estado
*( Cabeceras )
CRLF
[ Contenido ]

La lnea de estado es la primera lnea de la respuesta y consiste en la versin de


protocolo que se utiliza, seguida de una indicacin de estado numrica a la que puede ir
asociada una frase explicativa. El formato es el siguiente:
Versin del protocolo SP Cdigo de estado SP Frase explicativa CRLF

El cdigo de estado es un nmero de 3 dgitos que indica si la peticin ha sido atendida


satisfactoriamente o no, y en caso de no haber sido atendida, indica la causa. Los
cdigos se dividen en cinco clases definidas por el primer dgito del cdigo de estado.
As tenemos:
1xx: Informativo. La peticin se recibe y sigue el proceso. Esta familia de
respuestas indican una respuesta provisional. Este tipo de respuesta est formada
por la lnea de estado y las cabeceras. Un servidor enva este tipo de respuesta en
casos experimentales.
2xx: xito. La accin requerida por la peticin ha sido recibida, entendida y
aceptada.
3xx: Redireccin. Para completar la peticin se han de tomar ms acciones.
4xx: Error del cliente. La peticin no es sintcticamente correcta y no se puede
llevar a cabo.
5xx: Error del servidor. El servidor falla al atender la peticin que
aparentemente es correcta.

Algunos de los cdigos ms comnmente usados y las frases asociadas son:


100, continuar.
101, cambio de protocolo.
200, xito.
201, creado.
202, aceptado.
203, informacin no autoritativa.
204, sin contenido.
205, contenido reestablecido.
206, contenido parcial.
300, mltiples elecciones.
301, movido permanentemente.
302, movido temporalmente.

303, ver otros.


304, no modificado.
305, usar proxy.
400, peticin errnea.
401, no autorizado.
402, pago requerido.
403, prohibido.
404, no encontrado.
405, mtodo no permitido.
406, no se puede aceptar.
407, se requiere autentificacin proxy.
408, lmite de tiempo de la peticin.
409, conflicto.
410, gone.
411, tamao requerido.
412, falla una precondicin.
413, contenido de la peticin muy largo.
414, URI de la peticin muy largo.
415, campo media type requerido.
500, error interno del servidor.
501, no implementado.
502, puerta de enlace errnea.
503, servicio no disponible.
504, tiempo lmite de la puerta de enlace.

505, versin de protocolo HTTP no soportada.

La frase explicativa, es eso, una frase corta que explica el cdigo de estado enviado al
cliente.

Se pueden usar ms cdigos, pero las aplicaciones HTTP no tienen que conocer todos
los cdigos definidos y su significado, pero s estn obligadas a conocer su clase y tratar
los cdigos desconocidos como el primer cdigo de la clase (x00).

En cuanto a las cabeceras de la respuesta, son de tres tipos: las cabeceras generales
(punto A.3.4), las cabeceras de la respuesta (punto A.3.6) y las cabeceras de entidad
(apartado A.3.7).

Las cabeceras de respuesta permiten al servidor enviar informacin adicional al cliente


sobre la respuesta. Estos campos dan informacin sobre el servidor y acceso al recurso
pedido.

Mtodos
Un mtodo se dice que es seguro si no provocan ninguna otra accin que no sea la de
devolver algo (no produce efectos laterales). Estos mtodos son el mtodo GET y el
mtodo HEAD. Para realizar acciones inseguras (las que afectan a otras acciones) se
pueden usar los mtodos POST, PUT y DELETE. Aunque esto est definido as, no se
puede asegurar que un mtodo seguro no produzca efectos laterales, porque depende de
la implementacin del servidor.
Un mtodo es idempotente si los efectos laterales para N peticiones son los mismos que
para una sola peticin. Los mtodos idempotentes son los mtodos GET, HEAD, PUT y
DELETE.

http://www.lfcia.org/openprojects/camllets/doc/html/node16.html

El protocolo HTTP
El HTTP [10] es el protocolo de alto nivel del World Wide Web que rige el intercambio
de mensajes entre clientes y servidores del Web. Se trata de un protocolo genrico
orientado a objetos que no mantiene la conexin entre transacciones.
Se dise especialmente para entender las exigencias de un sistema hipermedia
distribuido como es el World Wide Web. Sus principales caractersticas son:

Ligereza: reduce la comunicacin entre clientes y servidores a intercambios


discretos, de modo que no sobrecarga la red y permite saltos hipertextuales
rpidos.
Generalidad: puede utilizarse para transferir cualquier tipo de datos (segn el
estndar MIME sobre el trfico multimedia que incluye tambin los que se
desarrollen en el futuro)
Extensibilidad: contempla distintos tipos de transacciones entre clientes y
servidores y el futuro desarrollo de otros nuevos.

Tal y como deca Berners-Lee [7] en el ao 1993, el esquema bsico de cualquier


transaccin HTTP entre un cliente y un servidor es el siguiente:
Conexin: El cliente establece una conexin TCP [11] con el servidor a travs
del puerto 80 (puerto estndar), u otro especificado.
Peticin: El cliente enva una peticin al servidor.
Respuesta: El servidor enva al cliente la respuesta (es decir, el objeto
demandado o un cdigo de error), que ser generalmente un documento HTML.
Cierre: Ambas partes cierran la conexin.
Podemos observar esto mediante un ejemplo, un usuario pulsa en un link de una pgina
que le enva a http://pepe.eup.udl.es/eup.html. Entonces los pasos a seguir son los
siguientes:
El navegador determina el URL
El navegador pregunta al DNS la direccin IP de pepe.eup.udl.es
El DNS contesta con la direccin: 193.144.8.60
El navegador establece una conexin TCP por el puerto 80 con la direccin
193.144.8.60
Enva una peticin del tipo: GET /eup.html
El servidor pepe.eup.udl.es enva el archivo eup.html
Se cierra la conexin TCP
El navegador ensea todo el contenido del fichero
El navegador busca en el documento todas las imgenes y las ensea, abriendo
para cada imagen una nueva conexin.
La eficiencia del HTTP posibilita la transmisin de objetos multimedia y la realizacin
de saltos hipertextuales con gran rapidez. Hay que tener en cuenta que se pueden
realizar varias conexiones TCP simultneamente.

1.7.1Arquitectura del WWW.

La arquitectura del WWW


El WWW responde a un modelo "cliente-servidor". Se trata de un paradigma de divisin
del trabajo informtico en el que las tareas se reparten entre un nmero de clientes que
efectan peticiones de servicios de acuerdo con un protocolo, y un nmero de servidores
que responden a estas peticiones. En el web los clientes demandan hipertextos a los
servidores. Para desarrollar un sistema de este tipo ha sido necesario:
Un nuevo protocolo que permite saltos hipertextuales, es decir, de un nodo
origen a otro de destino, que puede ser texto, imgenes, sonido, animaciones,
vdeo, etc. Este protocolo se denomina HTTP (HiperText Transfer Protocol) y es
el lenguaje mediante el cual se entienden los servidores.
Inventar un nuevo lenguaje para representar hipertextos que incluyera
informacin sobre la estructura y formato de representacin y, especialmente,
indicara el origen y destinos de los saltos de hipertexto. Este lenguaje es el
HTML (HyperText Markup Language).
Idear una forma de codificar las instrucciones para los saltos hipertextuales de
un objeto a otro de Internet (algo vital dado el caos anterior)
Desarrollar aplicaciones cliente para todo tipo de plataformas y resolver el
problema de cmo se accede a la informacin que est almacenada. Adems esta
informacin debe estar disponible a travs de los diversos protocolos (FTP,
HTTP, WAIS...) y representar a su vez informacin multiformato (texto,
imgenes, animaciones, etc.). Con este fin aparecen varios clientes, entre los que
destacan MOSAIC del NCSA (Universidad de Chicago) y NETSCAPE
Navigator de Netscape Communications Corporation.
http://fermat.eup.udl.es/~cesar/TFC/David_Cano/doc/www.html

1.7.2URLs.
Definicin
URL es el acrnimo de (Uniform Resource Locator), localizador uniforme de
recursos y permite localizar o acceder de forma sencilla cualquier recurso de la red
desde el navegador de la WWW.
Con la WWW se pretende unificar el acceso a informacin de servicios que antes
eran incompatibles entre s, tratando de conseguir que todos los servicios de internet
sean accesibles a travs de la WWW, de esta forma desde un mismo programa se puede
tener acceso a todos los recursos de una forma uniforme y permite que los documentos
HTML incluyan enlaces a otras fuentes de informacin en servicios como FTP, gopher,
WAIS, etc ...

Uso y Formato
Las URL se utilizarn para definir el documento de destino de los hiperenlaces, para
referenciar los grficos y cualquier otro fichero que se desee incluir dentro de un
documento HTML. Cada elemento de internet tendr una URL que lo defina, ya se
encuentre en un servidor de la WWW, FTP, gopher o las News.

El formato de una URL ser:

servicio://maquina.dominio:puerto/camino/fichero
El servicio ser alguno de los de internet, estos pueden ser:

http: (HyperText Transport Protocol), es el protocolo utilizado para transmitir


hipertexto. Todas las pginas HTML en servidores WWW debern ser referenciadas
mediante este servicio. Indicar conexin a un servidor de la WWW.

https: (HyperText Transport Protocol Secure), es el protocolo para la conexin a


servidores de la WWW seguros. Estos servidores son normalmente de mbito comercial
y utilizan encriptacin para evitar la intercepcin de los datos enviados, usualmente
numeros de tarjeta de credito, datos personales, etc ..., realizar una conexin a un
servidor de la WWW seguro.

ftp: (File Transfer Protocol), utilizar el protocolo FTP de transferencia de ficheros.


Se utilizar cuando la informacin que se desee acceder se encuentre en un servidor de
ftp. Por defecto se acceder a un servidor annimo (anonymous), si se desea indicar el
nombre de usuario se usar: ftp://maquina.dominio@usuario, y luego le pedir la clave
de acceso.
gopher, wais: Cualquiera de estos servicios de localizacin de informacin, se
indicar el directorio para localizar el recurso concreto.
news: Accede al servicio de news, para ello el visualizador de la WWW debe ser
capaz de presentar este servicio, todos no lo son. Se indicar el servidor de news y como
camino el grupo de noticias al que se desea acceder: news://news.cica.es/uca.es.
telnet: Emulacin de terminal remota, para conectarse a maquina multiusuario, se
utiliza para acceder a cuentas pblicas como por ejemplo la de biblioteca. Lo normal es
llamar a una aplicacin externa que realice la conexin. En este caso se indicar la
maquina y el login: telnet://maquina.dominio@login.
mailto: Se utilizar para enviar correo electrnico, todos los navegadores no son
capaces. En este caso solo se indicar la direccin de correo electrnico del destino:
mailto://alias. correo@domino.
La maquina.dominio indicar el servidor que nos proporciona el recurso, en este
caso se utilizar el esquema IP para identificar la maquina ser el nombre de la maquina
y el dominio. En el caso de nuestra Universidad el dominio siempre ser uca.es. Por
tanto un nombre valido de maquina ser www2.uca.es.
Es muy importante indicar siempre el dominio, ya que debemos suponer que se
conectarn a nuestras pginas desde servidores externos a nuestra red local por tanto si
no indicamos el dominio las URL que especifiquemos no podran ser seguidas por los
navegadores externos. Si en vez de www2.uca.es utilizamos www2 ser perfectamente
accesible por cualquier maquina de nuestra red local pero si se referenciara desde una

red con distinto dominio la maquina www2 ser la maquina llamada as en el dominio
remoto si existiera, que no es la que deseamos referenciar.
El puerto TCP es opcional y lo normal es no ponerlo si el puerto es el mismo que
se utiliza normalmente por el servicio. Solo se utilizar cuando el servidor utilice un
puerto distinto al puerto por defecto.
El camino ser la ruta de directorios que hay que seguir para encontrar el
documento que se desea referenciar. para separar los subdirectorios utilizaremos la barra
de UNIX /, se usa por convenio al ser este tipo de maquinas las ms usadas como
servidores. El nombre de los subdirectorios y del fichero referenciado puede ser de ms
de ocho caracteres y se tendr en cuenta la diferencia entre maysculas y minsculas en
el nombre.
La extensin de los ficheros ser tambin algo importante, ya que por ella sabe el
servidor el tipo de documento que se accede e indica al cliente (navegador) el modo en
que debe tratarse ese documento. Para definir los tipos de documentos se utiliza los
tipos MIME. Las extensiones ms normales con sus tipos correspondientes son:
Tipo MIME

Extensin

Tipo de fichero

text/html

html .htm, documento HTML

text/plain

.txt

por defecto, texto plano

image/gif

.gif

imagen de formato GIF

image/jpeg

jpg .jpeg

imagen de formato JPEG

El navegador de la WWW, realiza una accin para cada tipo de fichero, solo los que
sean del tipo text/html sern mostrados como documentos HTML. En el caso de que el
tipo no sea conocido por el cliente se considerar por defecto como un documento de
texto normal.
Si no se indica un fichero y solo referenciamos un directorio accederemos a la pgina
html por defecto de ese directorio. En el servidor estn definidos unos ficheros para ser
usados si no de indica un fichero concreto, el nombre que debe tener este fichero es en
nuestro caso default.htm default.html. En caso que no exista este fichero se mostrar
un listado de todos los documentos que forman el directorio. Este fichero es la pgina
inicial (home page) del servidor o del espacio Web.
Algunos ejemplos de URL podran ser:
URL

http://www.uca.es

Definicin

En este caso solo se indica el servicio y la maquina y

dominio. El resto de los parmetros se toman por


defecto, el puerto 80, el directorio, el raz del servidor y
el documento por defecto de ese directorio.

http://www.uca.es/internet/internet.html

Esta URL est ms completa en este caso se accede al


fichero internet.html que se encuentra en el directorio
internet del servidor de la WWW, www.uca.es.

http://www2.uca.es/serv/sii

Se acceder al fichero por defecto del directorio /serv/sii


del servidor de la WWW, www2.uca.es

ftp://ftp.uca.es/imagenes/globo.gif

En este caso se acceder a un servidor de FTP annimo,


ftp.uca.es por el protocolo FTP y se acceder al fichero
globo.gif del directorio de imagenes.

news:uca.es

En este caso se acceder al grupo de news de la uca en el


servidor de news definido por defecto en el navegador de
la WWW, esta opcin solo es soportada por los
navegadores ms modernos.

mailto://www-team@uca.es

Enviar un mail al equipo de la WWW de la UCA, esta


opcin solo es soportada por los navegadores ms
modernos.

http://www2.uca.es/manual-html/url.htm

URL significa Uniform Resource Locator, es decir, localizador uniforme de recurso.


El URL es la cadena de caracteres con la cual se asigna direccin nica a cada uno de
los recursos de informacin disponibles en Internet. Existe un URL nico para cada
pgina de cada uno de los documentos de la World Wide Web, para todos los elementos
del Gopher y todos los grupos de debate USENET, y as sucesivamente.
El URL de un recurso de informacin es su direccin en Internet, la que permite que el
navegador la encuentre y la muestre de forma adecuada. Por ello el URL combina el
nombre del ordenador que proporciona la informacin, el directorio donde se encuentra,
el nombre del fichero y el protocolo a usar para recuperar los datos. y reemplaza la
direccin numerica o ip(xxx.xxx.xx.x) de los servidores. haciendo de esta manera mas
facil la navegacin, si no de otra forma se tendria que hacer bajo direcciones del tipo
"http://148.210.01.7" en vez de "http://www.pagina.com" .
El formato general de un URL es:
"protocolo://mquina/directorio/fichero"
Tambin pueden aadirse otros datos:
"protocolo://usuario:contrasea@mquina:puerto/directorio/fichero"

http://es.wikipedia.org/wiki/URL

Direcciones de URL
(URL Addresses)
Un URL (Localizador de Recursos Uniforme) o una direccin de URL es un matrimonio entre la informacin en la
direccin de IP para una mquina y la informacin en su archivo local estructurado. De esa manera, la direccin del
URL nos da el lugar de un archivo, no solamente en una computadora, pero respecto a la Internet entera!
Qu Son URL: Una Analoga
(What Are URLs: An Analogy)
Imagnate que vives en un edificio grande y que tu direccin en el edificio corresponde al nmero de un cuarto.
Podramos llamar eso una direccin local: cualquiera en el edificio te puede localizar usando el nmero de tu cuarto.
Eso es anlogo al nombre de un archivo en una sola computadora: cualquier persona registrada dentro de esa
computadora puede localizar un archivo en la computadora si le saben el nombre y en qu cartapacios o directorios
vive ( y tiene permiso de mirar dentro de dicho directorios).
Ahora, imagnate que una persona de otro pas desea localizarte. La direccin local dentro del edificio ya no es
suficiente porque no especifica cmo localizar tu edificio. Como mnimo, es necesario ser especfico en la
informacin adicional dando el pas, ciudad, calle y dems del edificio donde tu resides.
Es as de anloga a la informacin de una direccin URL provee: una direccin URL da una direccin nica para un
archivo con respecto a cualquiera otro en la Internet, as como tu direccin residencial completa nos da una manera
nica de localizarte desde dondequiera en el mundo. As, las direcciones URL permiten a las computadoras de la
Internet a comportarse en un nivel como si fueran una computadora singular.
A qu se parecen las Direcciones URL?
(What do URL Addresses Look Like?)
Aqu hay un ejemplo de una direccin URL:
http://csep10.phys.utk.edu/webcourse/browser/textfile.html
Esta es una direccin URL funcional y es tambin un enlace hypertexto (nota el color y que est subrayado, y si le
colocas el ratn (mouse) encima el puntero se convierte en una mano apuntando, todos los indicadores de que es
un enlace).
URL Pueden Identificar Cosas Interesantes
(URL's Can Address More Interesting Things)
El ejemplo anterior nos muestra el uso de la direccin URL para un archivo especfico conteniendo texto. De todos
modos, las URL pueden ser usadas para buscar cosas mas generalizadas. Por ejemplo, trata los siguientes enlaces
correspondientes a:
Una imagen en http://csep10.phys.utk.edu/webcourse/browser/use2.gif
Un archivo de sonido en http://csep10.phys.utk.edu/webcourse.browser/hastalaviasta.au
Un archivo de pelculas en
http://csep10.phys.utk.edu/webcourse.browser/goldgate.mpg
Por lo tanto, vemos que la direccin de URL es algo poderoso, permitindonos buscar una variedad de archivos.
Comentarios: Maysculas o Minsculas
(Comments: Case Sensitivity)

Este lugar es tan bueno como cualquiera para avisarles sobre la trampa al entrar directorios y archivos en la
Internet. Algunos sistemas de computadoras (por ejemplo, Unix) utiliza nombres de letra sensible para archivos y
directorios; otros, (por ejemplo, Windows y Macintosh) ignora el tipo de letra en tales nombres. As, en archivo (file
1) de computadora Windows y Archivo (File 1) se refieren al mismo archivo, pero en un sistema Unix ambos
archivos seran dos totalmente diferentes.
Puedes tener un poco de confusin por esto, por lo siguiente: Supnte que tienes un archivo GIF que se llama
myfile.GIF en tu computadora de Windows y entras en ella localmente usando un enlace de la Web de la forma

<a href="myfile.gif">

Esto, generalmente trabajar en tu computadora Windows porque visualiza myfile.gif y myfile.GIF como los
mismos archivos.
Confiado de que todo esta trabajando como debe, ahora transfieres el archivo conteniendo este enlace y el archivo
de GIF a un servidor Unix de la Web e intenta entrar a este enlace por encima de la Web. Para tu sorpresa, tu (y
toda persona en la Web intentando entrar a tu archivo) recibir un mensaje de error de que el archivo myfile.gif no
se encuentra en ese servidor de la Web. Por qu? Unix es muy sensible a tipo y tamao de las letras, por tal razn
(contrario a la computadora de Windows que tu usaste para desarrollar archivos), el servidor visualiza myfile.GIF
como un archivo diferente al de myfile.gif; por tal razn, la computadora grue. La nica cura para este caso es o
cambiarle el nombre del archivo en el enlace o el nombre del archivo GIF para que los nombres sean compatibles.
Comentarios: Espacios en Blanco
(Comments: Blank Spaces)
Una segunda trampa en poner direcciones en la Web est asociada con el hecho de que diferentes sistemas bregan
con espacios en blanco en archivos o nombres de directorios de maneras diferentes. Por ejemplo, nombres de
archivos en Windows pueden tener espacios en blanco, pero sistemas Unix generalmente usan espacios en blanco
como separadores entre nombres. As, el nombre del archivo July Budget Reports es un nombre perfectamente
aceptable para Windows, pero es una mala seleccin para un sistema Unix porque interpretar el nombre de este
archivo como July pro el espacio en blanco que viene arrastrando a menos que instrucciones especiales le sean
dada (por ejemplo, siempre incluyendo el nombre completo del archivo entre comillas causar al sistema Unix a
construir los espacios en blanco como parte del nombre del archivo).
Las maneras comunes que los sistemas de Unix nombran tales archivos sin emplear espacios en blanco es
empezar las palabras con maysculas (sin espacios entre las palabras), o subrayar o usar guiones como
indicadores donde los espacios en blanco deberan estar. Por ejemplo,

JulyBudgetReports
July_Budget_Report
July-Budget-Report

Seran todos aceptables como nombres de archivos de Unix.


Un Consejo
(Words of Advise)
Si tu eres usuario de Windows desarrollando tu propio material para la Web, probablemente te gustar obviar estas
"peculiaridades" con sistemas Unix referente a la sensibilidad de tipos y tamao de letras y a los espacios en blanco.
Desafortunadamente, no puedes porque la mayora de los servidores en la Internet usan sistemas de operacin
Unix, y definitivamente la Internet en s desarroll un ambiente Unix. Esto tiene dos consecuencias:

1. Por la herencia de la Unix en la Web, direcciones de URL generalmente no pueden contener espacios en
blanco ( si son un requisito, deben ser entrados con secuencia de caracteres especiales).

2. Si el material de tu Web proviene de un servidor Unix, la situacin de los nombres de archivos y directorios
ser importante anotar.
Por tal motivo, si tu vas a desarrollar material para la Web, seriamente te sugerimos que inmediatamente te hagas la
costumbre de (1) asumir sensibilidad sobre maysculas en los nombres de los archivos y (2) acostmbrate a no usar
espacios en blanco en ningn nombre de archivo.

http://www.webteacher.org/Espanol/Direcciones-URL.htm

Detalles de URL
(URL Details)
Ya que direcciones URL son tan importantes, vamos a estudiar su estructura en mas detalle. Usaremos como
ejemplo la direccin
http://www.whitehouse.gov/WH/Welcome.html
Direcciones URL tienen dos partes bsicas: (1) una porcin que especifica el mtodo de acceso a archivos y (2) la
porcin que dice el lugar del archivo a ser entrado en la Internet.
El Mtodo de Acceso de Archivos
(The Method of File Access)
La primera parte de una URL, terminando con una ://, nos dice el tipo de acceso de archivo que es permitido desde
la Internet. En el ejemplo anterior http nos dice que el "servidor" que le va a dar al archivo es del tipo "http", el cual
significa "Protocolo de Transferencia Hipertexto". Esta parte de la direccin URL tiene una funcin similar a la de
especificar el mtodo por el cual un paquete por el correo normal sera transportado (el Servicio Postal de U. S. ,
Federal Express, UPS,)
La transferencia de protocolo http es la mas comn de la Web, pero no es la nica. Por ejemplo, tambin muy
comnmente vers servidores de direcciones URL usando el Protocolo de Transferencia de Archivos ("File Transfer
Protocol"), o ftp:
ftp://ftp.funet.fi/pub/
y servidores de archivos usando el protocolo "gopher":
gopher://gopher.nd.edu:70/11/
Ahora, si un navegador se puede usar para llevar un archivo a (casi) cualquier parte de la Internet, pensars que,
por supuesto; puede ser usado para entrar a un archivo de la misma computadora que la del servidor? De hecho,
puede, y si lo haces (escogiendo "Open" del men de "File") la URL tendr la forma tpica siguiente:
file:///usr/people/guidry/webcourse/frame1.html
Una direccin URL comenzando con "file:", es la seal que la direccin no est en ningn otro sitio en la Internet,
pero que en efecto est en la misma computadora que el navegador. Actualmente, la mencionada anteriormente
sera la forma de URL para un archivo en una computadora Machintosh o una Unix. Para un archivo en una PC,
veras una URL de la siguiente forma:
file://c:/usr/people/guidry/webcourse/frame1.html
ya que una PC designa el disk drive o cualquier otro aparato para archivar, con una letra y dos puntos, en vez de
un nombre.

Como ejemplo final, te podrs encontrar con regularidad, el tipo de direccin URL "mailto:"; por ejemplo:
mailto:user@domain.org
En este caso, "mailto:" indica que la URL puede ser usada para enviar un mensaje por correo electrnico a la
direccin especfica despus de los dos puntos. Existen otros protocolos de transporte, pero estos ejemplos ilustra
algunos de los ms importantes.
El Lugar del Archivo en la Internet
(The Internet Location of the File)
La segunda parte de la direccin URL especifica la direccin de la mquina en la Internet que est guardando el
archivo y el lugar del archivo en esa direccin de la Internet. En el primer ejemplo anteriormente citado,
www.whitehouse.gov especifica la direccin IP del servidor http que guarda el archivo. (Ver la seccin anterior sobre
el Domain Naming System para la Internet). El resto de la direccin entonces da el lugar del archivo en cuestin en
la mquina especfica por la direccin IP anterior. Por ejemplo, en la direccin URL
http://www.whitehouse.gov/WH/Welcome.html
el archivo al que se est entrando se llama Welcome.html y reside en un directorio (expediente) llamado WH en una
mquina con direccin IP de www.whitehouse.gov que est supliendo el archivo con un servidor corriendo el
protocolo http.

http://www.webteacher.org/Espanol/4-URL.htm

URL
Los URL (Uniform Resource Locator) son "localizadores" de direcciones dentro de la
red, que relacionan un servicio con un servidor. Constituyen la herramienta esencial del
Web, ya que permiten la localizacin y conexin con cualquier servidor y recurso de
Internet.
De una forma ms particular, hay tres cuestiones que hemos de responder antes de
acceder a una pgina concreta:

Como se llama la pgina?


Donde esta localizada?
Como se puede acceder?

La solucin a estas preguntas consiste en identificar las pginas, de forma que a cada
una se le asigna un URL que efectivamente identifica a una pgina en toda la WWW.
Un URL tiene bsicamente tres partes:

El protocolo
El nombre DNS de la mquina donde esta la pgina
Un nombre local que nicamente indica la pgina especifica (normalmente es el
nombre del archivo)

Los protocolos utilizados ms comunes se pueden observar en la Tabla 2:

Nombre

Usado
para

Ejemplo

http

Hipertexto
(HTML)

http://www.udl.es

ftp

FTP

ftp://ftp.uniovi.es

file

Archivo
Local

file:/usuaris/Documents/HTML/HTML3.0/Contents.html

news

Grupo de
Noticias

news:comp.os.minix

news

Articulo
de
Noticias

news:AA0134223112@cs.utah.edu

gopher

Gopher

gopher://gopher.tc.umn.edu/11/Libraries

mailto

Enviar
Correo

mailto:david@eup.udl.es

telnet

Login
Remoto

telnet://fermat.eup.udl.es
Tabla 2: Protocolos y sus aplicaciones

1.7.3Mtodos http.
Persistencia en http Cookies.
Mtodo OPTIONS
Este mtodo representa un peticin de informacin sobre las opciones de comunicacin
disponibles en la cadena peticin-respuesta identificada por la URI de la peticin. Esto
permite al cliente conocer las opciones y requisitos asociados con un recurso o las
capacidades del servidor.
La respuesta slo debe incluir informacin sobre las opciones de comunicacin.
Si la URI es ``*'', entonces la peticin se aplica al servidor como un conjunto. Es decir,
contesta caractersticas opcionales definidas por el servidor, extensiones del
protocolo, ...

Mtodo GET

El mtodo GET requiere la devolucin de informacin al cliente identificada por la


URI. Si la URI se refiere a un proceso que produce informacin, se devuelve la
informacin y no la fuente del proceso.
El mtodo GET pasa a ser un GET condicional si la peticin incluye las cabeceras IfModified-Since, If-Unmodified-Since, If-Match, If-None-Match o If-Range.
Estas cabeceras hacen que el contenido de la respuesta se transmita slo si se cumplen
unas condiciones determinadas por esas cabeceras. Esto se hico para reducir el trfico
en las redes.
Tambin hay un mtodo GET parcial, con el que se enva slo parte del contenido del
recurso requerido. Esto ocurre cuando la peticin tiene una cabecera Range. Al igual
que el mtodo GET condicional, el mtodo GET parcial se cre para reducir el trfico
en la red.

Mtodo HEAD
El mtodo HEAD es igual que el mtodo GET, salvo que el servidor no tiene que
devolver el contenido, slo las cabeceras. Estas cabeceras que se devuelven en el
mtodo HEAD deberan ser las mismas que las que se devolveran si fuese una peticin
GET.
Este mtodo se puede usar para obtener informacin sobre el contenido que se va a
devolver en respuesta a la peticin. Se suele usar tambin para chequear la validez de
links, accesibilidad y modificaciones recientes.

Mtodo POST
El mtodo POST se usa para hacer peticiones en las que el servidor destino acepta el
contenido de la peticin como un nuevo subordinado del recurso pedido. El mtodo
POST se cre para cubrir funciones como la de enviar un mensaje a grupos de usuarios,
dar un bloque de datos como resultado de un formulario a un proceso de datos, aadir
nuevos datos a una base de datos, ...
La funcin llevada a cabo por el mtodo POST est determinada por el servidor y suele
depender de la URI de la peticin. El resultado de la accin realizada por el mtodo
POST puede ser un recurso que no sea identificable mediante una URI.

Mtodo PUT
El mtodo PUT permite guardar el contenido de la peticin en el servidor bajo la URI
de la peticin. Si esta URI ya existe, entonces el servidor considera que esta peticin
proporciona una versin actualizada del recurso. Si la URI indicada no existe y es vlida
para definir un nuevo recurso, el servidor puede crear el recurso con esa URI. Si se crea
un nuevo recurso, debe responder con un cdigo 201 (creado), si se modifica se contesta
con un cdigo 200 (OK) o 204 (sin contenido). En caso de que no se pueda crear el
recurso se devuelve un mensaje con el cdigo de error apropiado.

La principal diferencia entre POST y PUT se encuentra en el significado de la URI. En


el caso del mtodo POST, la URI identifica el recurso que va a manejar en contenido,
mientras que en el PUT identifica el contenido.
Un recurso puede tener distintas URI.

Mtodo DELETE
Este mtodo se usa para que el servidor borre el recurso indicado por la URI de la
peticin. No se garantiza al cliente que la operacin se lleve a cabo aunque la respuesta
sea satisfactoria.

Mtodo TRACE
Este mtodo se usa para saber si existe el receptor del mensaje y usar la informacin
para hacer un diagnstico. En las cabeceras el campo Via sirve para obtener la ruta que
sigue el mensaje. Mediante el campo Max-Forwards se limita el nmero de pasos
intermedios que puede tomar. Esto es til para evitar bucles entre los proxy.
La peticin con el mtodo TRACE no tiene contenido.

Cabeceras generales
Los campos de este tipo de cabeceras se aplican tanto a las peticiones como a las
respuestas, pero no al contenido de los mensajes.
Estas cabeceras son:
Cache-Control, son directivas que se han de tener en cuenta a la hora de
mantener el contenido en una cach.
Connection,
Date,

permite especificar opciones requeridas para una conexin.

representa la fecha y la hora a la que se cre el mensaje.

Pragma,

usado para incluir directivas de implementacin.

Transfer-Encoding,
Upgrade,
Via,

indica la codificacin aplicada al contenido.

permite al cliente especificar protocolos que soporta.

usado por pasarelas y proxies para indicar los pasos seguidos.

Cabeceras de peticin
Este tipo de cabeceras permite al cliente pasar informacin adicional al servidor sobre la
peticin y el propio cliente.

Estas cabeceras son las siguientes:


Accept,

indican el tipo de respuesta que acepta.

Accept-Charset,

indica los conjuntos de caracteres que acepta.

Accept-Encoding,

que tipo de codificacin acepta.

Accept-Language,

tipo de lenguaje de la respuesta que se prefiere.

Authorization,

el agente de usuario quiere autentificarse con el servidor.

From,

contiene la direccin de correo que controla en agente de usuario.

Host,

especifica la mquina y el puerto del recurso pedido.

If-Modified-Since,
If-Match,

para el GET condicional.

If-None-Match,
If-Range,

para el GET condicional.

para el GET condicional.

para el GET condicional.

If-Unmodified-Since,
Max-Forwards,

indica el mximo nmero de elementos por los que pasa.

Proxy-Authorization,
Range,

para el GET condicional.

permite que el cliente se identifique a un proxy.

establece un rango de bytes del contenido.

Referer,

indica la direccin donde obtuvo la URI de la peticin.

User-Agent,

informacin sobre el agente que genera la peticin.

Cabeceras de respuesta
Permiten al servidor pasar informacin adicional al cliente sobre la respuesta, el propio
servidor y el recurso solicitado.
Son los campos:
Age,

estimacin del tiempo transcurrido desde que se cre la respuesta.

Location,

se usa par a redirigir la peticin a otra URI.

Proxy-Authenticate,

ante una respuesta con el cdigo 407 (autentificacin


proxy requerida), indica el esquema de autentificacin.
Public,

da la lista de mtodos soportados por el servidor.

Retry-After,

ante un servicio no disponible da una fecha para volver a

intentarlo.
Server,
Vary,

informacin sobre el servidor que maneja las peticiones.

indica que hay varias respuestas y el servidor ha escogido una.

Warning,

usada para aportar informacin adicional sobre el estado de la

respuesta.
WWW-Authenticate,

indica el esquema de autentificacin y los parmetros

aplicables a la URI.

Cabeceras de entidad
Como su nombre indica, los campos de este tipo aportan informacin sobre el contenido
del mensaje o si no hay contenido, sobre el recurso al que hace referencia la URI de la
peticin.
Los campos de este tipo son:
Allow,

da los mtodos soportados por el recurso designado por la URI.

Content-Base,

indica la URI base para resolver las URI relativas.

Content-Encoding, indica una codificacin adicional aplicada al contenido (a


parte de la aplicada por el tipo).
Content-Language,
Content-Length,

describe el idioma del contenido.

indica el tamao del contenido del mensaje.

Content-Location,

da informacin sobre la localizacin del recurso que da


el contenido del mensaje.
Content-MD5, es un resumen en formato MD5 (RFC 1864) para chequear la
integridad del contenido.
Content-Range,
Content-Type,
Etag,

en un GET parcial, indica la posicin del contenido.

indica el tipo de contenido que es.

define una marca para el contenido asociado.

Expires,

indica la fecha a partir de la cual la respuesta deja de ser vlida.

Last-Modified,

indica la fecha de la ltima modificacin.

http://www.lfcia.org/openprojects/camllets/doc/html/node20.html

Introduccin
Las cookies [8] se han descrito para conseguir sesiones HTTP con un estado asociado.
Por definicin, las distintas peticiones HTTP son independientes entre s, es decir, el
servidor responde a la peticin sin tener en cuenta las peticiones anteriores del cliente.
Mediante las cookies se puede intercambiar informacin de estado que afecta a una serie
de peticiones y respuestas, es decir, una sesin.
Hay varios contextos en los que se puede establecer una sesin:
Cada sesin tiene un principio y un final.
Las sesiones son cortas.
El agente de usuario o el servidor terminan la sesin.
La sesin est implcita en el intercambio de informacin de estado.

Funcionamiento
Para hacer operativas las cookies se han definido dos cabeceras, Set-Cookie y Cookie.
Con estas cabeceras se puede establecer una nueva cookie e informar de las cookies
existentes.

El servidor
Es el servidor el que inicia la sesin al responder al cliente con un mensaje que tiene
una cabecera para establecer una cookie (``Set-Cookie''). Cuando el cliente recibe esta
respuesta, en la siguiente peticin incorporar una cabecera para informar de las cookies
que tiene (``Cookie''). Ante esta peticin puede tener en cuenta la cookie o no para dar la
respuesta, y para ello puede establecer el mismo valor u otro valor para la cookie o no
enviar ninguna cookie. Para acabar la sesin, el servidor debe establecer una cookie con
duracin 0.
El servidor puede tener varias cabeceras para establecer varias cookies en una misma
respuesta, aunque si el mensaje pasa por un proxy o una pasarela, pueden convertirlo en
una sola cabecera para establecer cookies.
Para establecer una cookie se usa la cabecera Set-Cookie, cuya sintaxis es:

``Set-Cookie:'' nombre ``='' valor *(``;'' modificador)

Con esto se establece que por lo menos ha de haber un par nombre, valor y cada par
puede tener o no modificadores.
Los modificadores de un par nombre, valor pueden ser:
``Comment'' ``='' valor,
``Domain'' ``='' valor,

el servidor informa del uso de la cookie.

indica el dominio en el que la cookie es vlida.

``Max-Age'' ``='' valor,

validez de la cookie en segundos, despus se

descarta.
``Path'' ``='' valor,

indica el subconjunto de URL a las que afecta la

cookie.
``Secure'', indica que el cliente debe usar en entornos seguros para
contactar con el servidor.
``Versin'' ``='' valor,

la versin de la especificacin de mantenimiento

de estado que es.


Se pueden enviar varias cookies en una misma cabecera separando los pares nombre,
valor con ``,''.
Adems de enviar la cookie, el servidor puede establecer las condiciones para que la
cookie se ponga en una cach o no.

El cliente
El cliente trata por separado las distintas informaciones de estado que le llegan por
medio de respuestas que establecen cookies. Adems toma valores por defecto para los
atributos que no estn presentes de los pares nombre, valor.
Adems el cliente puede rechazar una cookie por razones de seguridad o violaciones de
la privacidad. Para rechazar una cookie tiene una serie de reglas que aplica en cada caso.
Si el cliente recibe una cookie con un nombre que ya tiene asociado a otra cookie y
cuyos atributos Domain y Path son exactamente iguales, entonces la nueva cookie
reemplaza a la anterior. Adems si la nueva cookie tiene el atributo Max-Age con un
valor de 0, entonces elimina la cookie en vez de reemplazarla.
Como el cliente tiene un espacio limitado para las cookies, ha de ir eliminando cookies
antiguas para hacer sitio a las nuevas. Esta operacin la puede realizar siguiendo algn
algoritmo como el LRU (Least Recently Used), o FIFO (First In First Out).

Si una cookie tiene el atributo Comment, entonces el cliente ha de almacenar el


comentario para que el usuario (humano) pueda leerlo.
Cuando el cliente realiza una peticin al servidor, lo hace por medio de una URI. Para
cada peticin, adems del mensaje enva una cabecera ``Cookie'' para informar al
servidor de las cookies que tiene y que afectan a esa peticin. La sintaxis para esta
cabecera es la siguiente:
``Cookie:'' versin *((``;'' | ``,'') nombre ``='' valor
[ ";" path] [ ";" dominio])

Donde versin es:


``$Versin'' ``='' valor
path

es:
``$Path'' ``='' valor

Y dominio es:
``$Domain'' ``='' valor

El valor de la versin es el del atributo Versin si alguna de las cookies lo impone, si


no es 0. El valor de path ha de ser el impuesto por las cookies si alguna lo establece, si
no se omite. El caso del dominio se trata igual que el del path.
En la lista de cookies aparecen las que satisfacen los criterios:
El nombre del servidor ha de tener el mismo dominio que la cookie.
El path de la cookie ha de ser un prefijo de la URI que representa la peticin.
El lmite de tiempo de la cookie no ha sido sobrepasado.

Cuando el servidor recibe una peticin con una cabecera cookie, ha de interpretar los
pares nombre, valor teniendo en cuenta que los nombres que comienzan por el smbolo
``$'' son especiales y hacen referencia a la cookie anterior, y si no hay una cookie
anterior, hacen referencia a todas las cookies de esta cabecera.

Compatibilidad con el Netscape


Netscape hizo una propuesta original diferente sobre las cookies, aunque es muy
parecida a la explicada.
Una diferencia est en que en vez de usar el campo Max-Age usa en su lugar el campo
Expires.

Adems en los pares nombre, valor de las cookies no acepta el smbolo ``.
Por ltimo, en la propuesta original de Netscape no se permitan espacios en blanco
entre el smbolo ``='' y el nombre o el valor.

1.8 Introduccin al HTML.


Lenguaje de despliegue del web
1.8.1HTML como un tipo SGML.

SGML vs HTML
Un lenguaje de marca o etiquetado no es lo mismo que un lenguaje de marca
generalizado. Con un lenguaje de marca se describen las reglas para el procesamiento de
un texto, para describir los diferentes caracteres y sus caractersticas de impresin. La
marca generalizada, por otro lado, no especifica cmo deben verse las cosas, en su
lugar, provee informacin del sistema en el que se est trabajando, con informacin
sobre la estructura del documento nicamente.
HTML es un DTD de SGML utilizado para documentos en el Web. El HTML original
no era completamente compatible con SGML, tena algunas deficiencias sintcticas a
cambio de simplicidad. Ahora, las ventajas en la compatibilidad, como la habilidad de
validacin, la utilizacin de herramientas basadas en SGML y la capacidad de
interactuar, han sobrepasado a las desventajas. HTML2 es el nivel comn en la mayora
de los navegadores. La siguiente versin, HTML3, ser completamente compatible con
ISO 8879, con ampliaciones para soportar notaciones matemticas y tablas, lo cual har
a SGML la columna vertebral del sistema de hipertexto distribuido ms grande del
mundo.
Es importante entender que la compatibilidad con el Web reside en la estandarizacin de
los datos, no en las aplicaciones. En la medida en que el lenguaje de marca utilizado en
el Web permanezca abierto, no propietario y uniforme, cualquiera puede hacer
aplicaciones acordes a cualquier plataforma y los datos podrn ser intercambiados y
visualizados sin conversiones.
http://www.bibliodgsca.unam.mx/tesis/tes7cllg/sec_39.htm

1.8.2Elementos del lenguaje HTML.


2 Estructura de un documento HTML
Un documento HTML comienza con la etiqueta <html>, y termina con
</html>.

Dentro del documento hay dos zonas bien diferenciadas: el encabezamiento,


delimitado por <HEAD>y</HEAD>, que sirve para definir diversos valores
vlidos en todo el documento.
Y el cuerpo, delimitado por <BODY> y </BODY>, donde reside la informacin del
documento.

<HTML>

Encabezado

<HEAD>
<TITLE>Ttulodel
documento</TITLE>
</HEAD>
<BODY>

Cuerpo

Textodeldocumento
</BODY>
</HTML>

El elemento <TITLE> permite especificar el ttulo de un documento HTML. Este


ttulo no forma parte del documento en s: no aparece, por ejemplo, al principio
del documento sino que sirve como ttulo de la ventana del programa que la
muestra.
Existen muchos otros elementos que se engloban dentro del encabezamiento
pero para la estructura bsica del lenguaje html en su nivel bsico no son
necesarios.
El cuerpo de un documento HTML contiene el texto que, con la presentacin y
los efectos que se decidan, se presentar ante el usuario. Dentro del cuerpo son
aplicables todos los efectos que se van a mencionar en el resto de esta gua.
Dichos efectos se especifican exclusivamente a travs de "directivas".
http://www.unav.es/cti/manuales/HTML/indice.html

2.1.1Tablas en HTML.
2.1.2Formularios.
2.2 Evolucin del desarrollo de aplicaciones Web.
2.3 Hojas de estilo en cascada e introduccin al XML.

Unidad 2. Desarrollo de aplicaciones


Web
2.7 Arquitectura de las aplicaciones Web.

Aplicaciones Multinivel
Al hablar del desarrollo de aplicaciones Web resulta adecuado presentarlas dentro de las
aplicaciones multinivel. Los sistemas tpicos cliente/servidor pertenecen a la categora
de las aplicaciones de dos niveles. La aplicacin reside en el cliente mientras que la base
de datos se encuentra en el servidor. En este tipo de aplicaciones el peso del clculo
recae en el cliente, mientras que el servidor hace la parte menos pesada, y eso que los
clientes suelen ser mquinas menos potentes que los servidores. Adems, est el
problema de la actualizacin y el mantenimiento de las aplicaciones, ya que las
modificaciones a la misma han de ser trasladada a todos los clientes.
Para solucionar estos problemas se ha desarrollado el concepto de arquitecturas de tres
niveles: interfaz de presentacin, lgica de la aplicacin y los datos.
La capa intermedia es el cdigo que el usuario invoca para recuperar los datos deseados.
La capa de presentacin recibe los datos y los formatea para mostrarlos adecuadamente.
Esta divisin entre la capa de presentacin y la de la lgica permite una gran
flexibilidad a la hora de construir aplicaciones, ya que se pueden tener mltiples
interfaces sin cambiar la lgica de la aplicacin.
La tercera capa consiste en los datos que gestiona la aplicacin. Estos datos pueden ser
cualquier fuente de informacin como una base de datos o documentos XML.
Convertir un sistema de tres niveles a otro multinivel es fcil ya que consiste en
extender la capa intermedia permitiendo que convivan mltiples aplicaciones en lugar
de una sola (vase la Figura 3.3).

Figura 3.3: Arquitectura Multinivel.


La arquitectura de las aplicaciones Web suelen presentar un esquema de tres niveles
(vase la Figura 3.4). El primer nivel consiste en la capa de presentacin que incluye no
slo el navegador, sino tambin el servidor web que es el responsable de dar a los datos
un formato adecuado. El segundo nivel est referido habitualmente a algn tipo de
programa o script. Finalmente, el tercer nivel proporciona al segundo los datos
necesarios para su ejecucin.
Una aplicacin Web tpica recoger datos del usuario (primer nivel), los enviar al
servidor, que ejecutar un programa (segundo y tercer nivel) y cuyo resultado ser
formateado y presentado al usuario en el navegador (primer nivel otra vez).

Figura 3.4: Arquitectura Web de tres niveles.


Lamentablemente, el uso de toda esta tecnologa pasa por el dominio de tcnicas de
programacin y de acceso a bases de datos, condicin esta que no se puede presuponer

en un curso de divulgacin como ste. As, nos vamos a restringir al uso de


herramientas bsicas a la hora de la construccin de un portal docente.

Ejemplos de Herramientas de Edicin


Web
Existen multitud de herramientas que permiten desarrollar portales Web con aspecto y
prestaciones profesionales, aunque la mayora de ellos requiere de una fase inicial de
entrenamiento de duracin variable segn los casos.
Entre los ms utilizados estn:

Macromedia DreamWeaver
Microsoft FrontPage
Netscape Composer

De los dos primeros hay que decir que integran en un entorno amigable casi todos los
elementos relacionados con el desarrollo de pginas Web, adems de aportar soluciones
a la gestin y el mantenimiento de sitios Web grandes y complejos, y la interaccin con
bases de datos. El problema en su uso es que no resultan fciles de manejar y requieren
ciertos conocimientos y son de pago.
El tercer caso es el editor de pginas Web que proporciona el navegador Netscape. No
es ms que un pequeo editor de pginas sin ms posibilidades, pero lo fcil de su uso
hace que sea una buena herramienta para iniciarse en la creacin y en el mantenimiento
de portales Web. El precio a pagar es que algunas cosas se han de seguir realizando a
mano, como la conexin con bases de datos y la gestin de formularios.
http://www.infor.uva.es/~jvegas/cursos/buendia/pordocente/node21.html

2.8 Lenguajes de programacin del lado del cliente.


JAVA
Java es un lenguaje de programacin creado por un grupo de ingenieros de Sun a
principios de los aos 90. Casi desde el principio fue diseado teniendo en mente las
caractersticas que se esperaban de los lenguajes de ltima generacin : orientado a
objetos, capaz de funcionar en red, dotado de un conjunto amplio de herramientas
grficas y multienhebrado. Adems, para facilitar la portabilidad entre distintos sistemas
operativos y microprocesadores, se decidi que fuera un lenguaje interpretado.
Una de las razones de su repentino xito ha sido el hecho de que Netscape incluyera un
interprete de este lenguaje en su programa Netscape Navigator. Desde entonces, otras
empresas, como Microsoft, o la propia Sun han sacado al mercado otras programas con
interpretes de Java. Este hecho posibilita que pequeos programas ("applets") se
ejecuten en los clientes Web permitiendo llevar a cabo arquitecturas cliente/servidor de

una forma sencilla e independiente de la plataforma hardware que utilice el ordenador


cliente.
Aunque Java no se limite a ejecutarse en forma de applets, el hecho de que se pueda
integrar tan fcilmente en programas como Navigator o Internet Explorer ha hecho
posible su rpida difusin.

Orientado a
objeto

Java es un lenguaje totalmente orientado a objeto. Desde las


aplicaciones individuales hasta los efectos grficos, pasando
por la entrada/salida, la gestin de errores, etc. todos los
elementos que forman el lenguaje son objetos.
A diferencia de entornos de programacin como Visual Basic
(que es un lenguaje "basado en objetos"), Java est
totalmente orientado a objeto debido a que el programador
puede usar los objetos existentes, derivar otros objetos a
partir de los anteriores, o crear objetos totalmente nuevos.
Esta flexibilidad hace posible un sistema de programacin
menos propenso a errores y ms fcil de depurar y extender.
Por requerimientos del sistema, cada applet (o cada
aplicacin completa) es siempre un objeto, con unas
funciones perfectamente delimitadas y con unos interfaces
pblicos con el exterior que pueden ser usados por cualquier
programador, aunque no tenga acceso al cdigo fuente.

Capaz de trabajar
en red

Java no necesita bibliotecas externas para trabajar en red,


sino que tiene integrado en el propio ncleo del lenguaje
todos los elementos necesarios para abrir, usar y cerrar
conexiones TCP o UDP. Los accesos a archivos remotos son
transparentes al usuario y al programador. El interprete Java
puede leer archivos de un servidor HTTP remoto de la misma
forma que lee un archivo de un directorio local.
De todas formas, las Applets que se ejecutan en navegadores
Web convencionales se encuentran seriamente limitadas en
este sentido (por razones de seguridad, y no por problemas
tcnivos) Un applet que se encuentre en una pgina Web solo
puede realizar conexiones de red con el servidor desde el cual
ha sido transferido. De esta forma se evita que applets
distribuidas de forma masiva a travs de pginas Web
pudieran saturar a otros ordenadores conectados a Internet.
Esta limitacin, que puede ser muy severa para ciertas
aplicaciones, puede ser solventada ejecutando los programas
en forma de aplicaciones indivuduales, y no como applets en
una pgina Web. Cmo ejemplo, el navegador HotJava,

desarrolado por Sun, es un programa enteramente


desarrollado en Java que permite conectarse con cualquier
servidor Web de Internet.
Herramientas
grficas

El programador de Java tiene a su disposicin un conjunto de


herramientas estndar que le permiten desarrollar apliaciones
complejas basadas en interfaces grficas de usuario (GUI).
Este conjunto de herramientas se denomina AWT (Abstract
Window Toolkit) y facilita el uso de elementos tan tpicos
como ventanas, botones, cuadros de dilogo, etc.
Adems, AWT tiene la suficiente flexibilidad como para que
un programador pueda personalizar todos sus componentes,
derivando nuevos objetos de los ya existentes.
De todas formas, el abanico de posibilidades que ofrece AWT
no es, ni mucho menos, tan variado, completo y maduro
como otras API's ya consolidadas como las que se encuentran
en los sistemas operativos comerciales, como Windows,
MacOS o las distintas versiones de Unix.

Multienhebrado

Java es un entorno de ejecucin multienhebrado, lo que


significa que un mismo programa Java puede subdividirse en
varias unidades de proceso concurrentes, es decir, que se
ejecutan al mismo tiempo, en el mismo espacio de
direcciones y compartiendo las mismas variables.
Esto permite crear de forma sencilla programas que realicen
ms de una cosa a la vez, aunque exige un gran cambio de
mentalidad a la hora de programar.
Un programa multienhebrado puede estar realizando una
transferencia larga de informacin con un servidor de Internet
al mismo tiempo que otra hebra de ejecucin realiza clculos
en segundo plano, mientras que una tercera se encarga de
atender las peticiones que el usuario le hace a travs del ratn
y el teclado.

Interpretado

Todas estas virtudes debian tener, por supuesto, un coste:


Java es, en la mayora de los casos, un lenguaje interpretado.
Qu quiere decir esto? Pues que un programa especializado,
el interprete de Java, debe ir leyendo el cdigo del programa
instruccin a instruccin para descubrir cul es la proxima
accin a realizar. Esta operacin cuesta muchos ms ciclos de
CPU que ejecutar un programa en cdigo mquina nativo, ya
que en este ltimo caso es el propio microprocesador el que

se encarga de decodificar las instrucciones en hardware.


Por qu Java no se compila en cdigo mquina, como el
resto de programas? Pues precisamente para permiitir que
pueda ejecutarse en cualquier ordenador de Internet, tenga
ste un microprocesador 80x86, 680x0, PowerPC, Alpha,
MIPS, etc...
Adems, el hecho de que sea un lenguaje interpretado se
convierte en una medida de seguridad para el ordenador en
que se ejecuta el applet, ya que el interprete, a modo de
sistema operativo, puede filtrar todas las opraciones de
entrada/salida, como acceso a archivos o al hardware del
sistema.
Todas estas medidas de seguridad impiden que se puedan
transmitir virus escritos en Java a travs de Internet, o que un
desconocidao pueda leer informacin privada de nuestros
archivos para transmitirla a un servidor central.

JAVASCRIPT
El lenguaje de programacin "JavaScript" fue creado por la compaa
Netscape hacia finales de 1995 como un medio para cubrir las
necesidades expuestas por muchos usuarios respecto a la
interactividad de las pginas Web y a las limitantes del lenguaje
HTML.
En teora el lenguaje est diseado para que pueda ser usuado por
cualquier tipo de desarrollador de pginas Web sin importar si tiene o
no conocimientos previos de programacin. En la prctica, esto no es
tan natural, sin embargo, con un poco de paciencia y tiempo
cualquier persona puede escribir aplicaciones en JavaScript que sean
funcionales en una pgina Web.
La mayora de nosotros hemos escuchado a cerca de Java, el
lenguaje de programacin para el World Wide Web (y otras
aplicaciones) desarrollado por Sun Microsystems, sin embargo, es
un hecho que este lenguaje no est al alcance de la mayora de las
personas ya que es "muy dificil" de aplicar e implica invertir mucho
tiempo en su aprendizaje. Fue por esto que Netscape decido
generar el lenguaje JavaScript que fu originalmente llamado
"LiveScript" hasta que se firmaron acuerdos con Sun que
permitieron hacer pblica la tecnologa empleada en su desarrollo.
Los acuerdos incluyen a otras 25 firmas de las ms importantes en el
desarrollo de herramientas para el Web por lo que, a partir de

Diciembre de 1995, se considera a JavaScript como un estndar de


facto y, posiblemente en poco tiempo, un estndar oficial para
desarrollar pginas "interactivas" de Web.

Qu es JavaScript?
JavaScript es un lenguaje de programacin especializado para el
desarrollo de aplicaciones para servidores y clientes del Web. Se dice
que este lenguaje est diseado para personas no-programadoras y
para autores de pginas que utilicen HTML. Esta afirmacin es
debatible ya que, aunque es mucho ms sencillo que Java tiene su
complicacin y, si usted en un no programador es probable que no
pueda aprenderlo en las noches mientras se prepara para descansar.
La forma de trabajar con JavaScript es la siguiente:
Se escribe el programa directo en un documento HTML utilizando
algunas etiquetas especiales para que quede "incrustado" dentro
del mismo.
El navegador recibe el cdigo incrustado y lo interpreta para
realizar las acciones solicitadas en el mismo.
Esto significa que el programa JavaScript se ejecuta directo en la
computadora cliente lo que incrementa la velocidad del proceso de
forma dramtica.
Por otro lado existen dos tipos de lenguajes de programacin, los
"interpretados" (como JavaScript) y los "compilados" (como Java o
C). La diferencia principal entre ambos es que los lenguajes
compilados requieren de ser traducidos por un programa especial
llamado "compilador" para que puedan ser ejecutados por las
computadoras mientras que los lenguajes interpretados no requieren
traduccin, solo necesitan de un "interprete" (en este caso el
navegador Netscape) que los ejecute.
Esta diferencia, aunque sutl, es muy importante ya que simplifica el
uso de JavaScript al ser el navegador un interprete de este lenguaje
(si es compatible, como el Netscape o el IE de Microsoft).
Adems una aplicacin JavaScript se puede escribir en cualquier
editor de textos (como los documentos HTML) o directo en un
documento HTML ya que el interprete lo reconoce y lo ejecuta sin
importar nada ms.
Aunque las funciones y acciones definidas por el cdigo JavaScript
se encuentran en la parte superior de los documentos HTML es
posible utilizarlas desde cualquier punto del mismo gracias a algunos

modificadores especiales para etiquetas normales HTML como FORM


que son capaces de invocarlo y ejecutarlo.
Estos modificadores adicionales de las etiquetas HTML son llamdos
"handlers" debido a que reflejan el hecho de que la mayora de los
cdigos JavaScript son utilizados para resolver eventos provocados
por datos proporcionados por los usuarios, ya sea mediante una
forma o mediante una liga de hipertexto.
http://nyquist.galeon.com/quees.htm

2.9 Lenguajes de programacin del lado del servidor.


2.10
Ambientes para el desarrollo de aplicaciones
Web.
2.11
Metodologas para el desarrollo de
aplicaciones Web.
2.12
Aspectos de seguridad.

Unidad 3. Programacin del lado del


servidor.
3.13
Procesamiento del lado del servidor.
3.14
Conceptos bsicos de la herramienta de
desarrollo.
3.15
Operadores.
3.16
Sentencias.
3.17
Arreglos.
3.18
Funciones y libreras.
3.19
Ejemplos prcticos.
3.20
Procesado de formularios.
3.21
Sesiones.
3.22
Conectividad entre el servidor Web y el
servidor de base de datos.
3.23
Manejo de archivos.
3.24
Seguridad.

Unidad 4. Procesamiento del lado del


cliente.
4.7 Lenguaje Script del cliente.

4.8 Modelo de objetos con lenguaje Script.


4.9 Objetos lenguaje Script nter construidos.
4.10Eventos con lenguaje Script.
4.11Validacin de entrada de datos del lado del cliente.
4.12Consideraciones del soporte del navegador.

Unidad 5. Servicios Web XML.


5.5 Visin general de servicios Web XML.
1.- INTRODUCCIN:
Los servicios web (Web Services) y el XML estn cada vez ms de
moda en el mundo de la programacin. A continuacin os
presentamos una prctica introduccin basada en un problema a
resolver, que nos permitir expresar la utilidad de esta nueva
filosofa. Todo programador sabe que hacerse una idea clara de una
nueva pieza en programacin supone jugar un poco con ella, a parte
de estudiar sus fundamentos en una documentacin tcnica,
puramente terica.
A lo largo de estas pginas nos planteamos un pequeo reto que nos
ayudar a comprender el cmo y el para qu de los servicios web.
Adems, aquellos que quieran desarrollar sus primeros servicios web
mediante las herramientas ms comunes de Linux (Perl y PHP)
podrn basarse en los ejemplos de la exposicin.

*** Nota: Consulta de vez en cuando nuestra seccin de noticias


frescas sobre Web Services: http://webservices.bankhacker.com/noticias/
2.- XML:
A pesar de su sencillez aparente, XML est transformando
completamente la creacin y el uso de software. El Web revolucion
la comunicacin entre usuarios y aplicaciones. XML est
revolucionando la comunicacin entre aplicaciones o, de forma ms
general, la comunicacin entre equipos, pues ofrece un formato de
datos universal que permite adaptar o transformar fcilmente la
informacin.

Como veremos a continucin, XML es la base de los Servicios Web,


as que antes vamos a hacernos una idea clara de qu aspecto tiene
la informacin en lenguaje XML.
XML es la solucin a un problema de comunicacin entre programas
de ordenador. La informacin generalmente queda fuertemente ligada
al programa con que fue creada, y es as como se pierde mucho
tiempo en pasar de RTF a PS a PDF a pginas HTML a otros
formatos de definicin de documentos.
Muchos Linuxeros, sobretodo Debianitas, saben de un nuevo standard
llamado DocBook, que pretende dar solucin a este problema.
Precisamente, DocBook es un caso particular de XML. DocBook se
aplica sobre documentos ... pero si se trata de una imagen o un
sonido? XML intenta ser un formato absolutamente genrico, con el
que describir CUALQUIER tipo de fichero. As, por ejemplo SVG 1.0,
Scalable Vector Graphics, es un formato basado en XML para
representar imgenes vectoriales. DSML 1.0, Directory Services
Markup Language, otro formato basado en XML, especfico para
definir directorios. XHTML 1.0, Extensible HyperText Markup
Language, ya os podeis imaginar que es un formato basado en XML
para representar pginas web.
Cada da aparecen nuevas propuestas para estadarizar formatos
basados en XML. Ya existen muchas herramientas de programacin
preparadas para trabajar con formatos basados en XML. Es una
tendencia y se est consolidando. Los programadores con mentalidad
abierta, codifican sus ficheros de datos en "algo" basado en XML. As
si un da necesitan portar sus datos a otras aplicaciones, pueden usar
herramientas ya hechas y probadas.
Muy pronto, si no es ya, que una aplicacin trabaje con formatos
basados en XML ser una cualidad tan valorada como que sea GPL.
Queda claro que XML es ya un formato universal, que lo estn
adoptando multitud de programadores y que puede abarcar cualquier
caso de intercambio de informacin, pero la pregunta que a muchos
os habr surgido es: por qu no intercambiar los datos mediante
ficheros de texto plano? Linux lo usa en casi todas las configuraciones
de sus programas: httpd.conf, my.cnf, inetd.conf, etc, etc y todos
sabemos lo bien que funciona y lo abierto que es ... Efectivamente,
pero y si necesitamos transmitir informacin con estructura? Ah es
donde resulta interesante XML.
Imaginemos el caso de describir una pgina web con un fichero de
texto ... se puede hacer, de hecho se hace constantemente usando
HTML, que puede grabarse como un fichero de texto plano. Sin
embargo, HTML no podra ser lo que es, sin su lenguaje de marcas.

Luego ya no es slo un texto plano, sino un texto y sus marcas. Las


marcas sirven para estructurar la informacin: separar el ttulo del
contenido, por ejemplo.
XML es una generalizacin de este proceso. En XML se marca TODO.
Caulquier informacin transmitida por un XML est perfectamente
estructurada. Para ello se emplea tambin un lenguaje de marcas.
Como XML es un formato universal, y no puede limitarse a saber
describir slo pginas web, por ejemplo, las marcas no son fijas, sino
variables segn el subformato (esto es lo que luego veremos que se
llama DTD).
Un ejemplo sencillo (extraido de Internet: Introduccin a XML =>
http://www.reloco.com.ar/xml.html): una coleccin de 750 recetas de
cocina. Escribirlas todas en KOffice? Qu peligro! Qu pasara si
me dicen que es necesario tenerlas en HTML? O imprimirlas en un
libro usando programas especficos y cierto estilo de tipografa para
los ingredientes? Entonces es conveniente poner mayor atencin al
elegir el formato a emplear. Slo texto? podra ser ... si no incluimos
fotos, ni ndices, ni tablas, ni ... etc, etc. Es evidente que una receta
se divide en partes bien identificadas, as que usar slo texto sera
perder informacin sobre dnde est cada cosa en el documento.
XML nos dice que podemos estructurar la informacin en un rbol. Es
decir imaginar a la receta como un componente, que a su vez esta
formado de componentes, y as sucesivamente. Cada componente
podra tener texto y/o ms componentes. Una posible estructura sera
imaginar que la receta tiene un componente llamado "necesitamos".
No todo el texto estara dentro de "necesitamos", solamente aquellas
cosas que el cocinero de la receta necesitara para llevarla a cabo.
Dentro podramos tener uno o ms componentes llamados
"ingrediente". Veamos como se ve esto (usando ya la sintaxis de
XML).

<receta>
...
<necesitamos>
<ingrediente>2 cucharadas de azucar</ingrediente>
<ingrediente>3 manzanas</ingrediente>
</necesitamos>
...
</receta>

Se adivina cul es la sintaxis de XML? Es simplemente encerrar al


texto que pertenece a un componente entre <componente> y
</componente>. Bueno, en realidad ya se ve que estos componentes
son "tags".

El XML se completa mediante una "hoja de estilo", que es una


descripcin de cmo debe verse una informacin en un determinado
medio. A un mismo documento XML se le pueden aplicar distintas
hojas de estilo segn convenga. Por ejemplo usando una hoja de
estilo por cada medio en la que se debe representar la informacin.
Existen actualmente dos lenguajes de hojas de estilo: CSS
(Cascading Style Sheets: que ya est parcialmente implementado en
los navegadores de WWW) y XSL (eXtended StyleSheet Language: El
W3 Consortium cre este nuevo lenguaje de hojas de estilo)
XML sirve para que muchos programas interpreten bien cualquier tipo
de dato. No slo eso. XML sirve para que algunos programas hablen
entre ellos sin intervencin humana. Para qu? Computacin
Distribuida, Interoperatividad, Monitorizacin, ... son situaciones en
las que resulta imprescindible este tipo de comunicacin. XML es
tambin la solucin en estos casos. Como veremos ya, muy pronto,
los Servicios Web son un caso particular de "Computacin Distribuida"
y XML es su lenguaje base.
*** Referencias: Introduccin a XML =>
http://www.reloco.com.ar/xml.html
*** Referencias: La pgina sobre XML del W3 Consortium =>
http://www.w3.org/XML/

3.- LOS SERVICIOS WEB XML:

Los servicios Web XML permiten que las aplicaciones compartan


informacin y que adems invoquen funciones de otras aplicaciones
independientemente de cmo se hayan creado las aplicaciones, cul
sea el sistema operativo o la plataforma en que se ejecutan y cules
los dispositivos utilizados para obtener acceso a ellas. Aunque los
servicios Web XML son independientes entre s, pueden vincularse y
formar un grupo de colaboracin para realizar una tarea determinada.

Bien, esta puede ser una primera defincin de Servicio Web. Pero,
quiz, lo que ahora ms interese es saber para qu sirve un Servicio
Web? La respuesta puede ser otra pregunta: Para que sirve en
programacin una rutina? Todos sabemos que una rutina es como
una caja negra, que encierra cierto proceso o algoritmo, y que
cumple una funcin clara. Muchas rutinas y un guin central
componen un programa en lo que se llama "programacin
estructurada". Un Servicio Web viene a ser una rutina en Internet.
Pero, por qu se llama "Servicio Web" y no "Rutina en Internet"? Los
protocolos que soportan los servicios web se comunican normalmente
por el puerto 80, y basndose en HTTP, mtodos GET y PUT. Esto
hace que podamos acceder a ellos al igual que lo hacemos en una
pgina web. La diferencia entre una pgina web y un Servicio Web, es
que la pgina la visita cualquier individuo interesado, mienstras que
el servicio slo lo visitan programas que lo requieren.
De modo, que el conjunto de Servicios Web en Internet es una World
Wide Web paralela, de carcter no humano, sino ciberntico. Vamos,
que los ordenadores ya hablan slos a travs de Internet.

4.- LOS PROTOCOLOS:


Hay un convenio generalizado que nos da a entender que los
Servicios Web se invocan en Internet por medio de protocolos
estndar basados en XML. Hoy en da hay dos grandes tendencias:
XML-RPC y SOAP. A la hora de programar un servicio web, hay que
decidir qu protocolo usar, porque un protocolo es incompatible con el
otro. De modo que si programamos nuestro servicio web con XMLRPC, no podremos invocarlo desde un lenguaje de programacin que
trabaje con SOAP, como por ejemplo .Net de Microsoft.
Tanto SOAP (Protocolo de acceso a objetos simple, Simple Object
Access Protocol) como XML-RPC son lenguajes de mensajera basada
en XML, estandarizados por el consorcio W3C, que especifican todas
las reglas necesarias para ubicar servicios Web XML, integrarlos en
aplicaciones y establecer la comunicacin entre ellos.
Brevemente, la diferencia entre SOAP y XML-RPC es su complejidad.
XML-RPC est diseado para ser sencillo. SOAP por el contrario est
creado con idea de dar un soporte completo y minucioso de todo tipo
de servicios web. La curva de aprendizaje de XML-RPC es muy suave,
por lo que un programador novato en este campo, puede conseguir
resultados satisfactorios con poco esfuerzo. Con SOAP no pasa esto,
pero a cambio, dispones de ms potencia. Por ejemplo, con XML-RPC
no puedes elegir el conjunto de caracteres a utilizar en tus Servicios
Web. En SOAP puedes elegir entre US-ASCII, UTF-8 y UTF-16.
Algo que puede decantarnos por uno u otro, sin necesidad de leer
ms, es saber que XML-RPC es ms "Unix friendly" que SOAP. En
http://bulmalug.net/body.phtml?nIdNoticia=503 encontramos una
interesante discusin entre programadores espaoles sobre este
tema, que nos ayudar a ver las diferencias entre ambos, as como
sus posibilidades.
Por el contrario, en favor de SOAP podemos aadir que el famoso
Servicio Web de Google, que explicaremos ms adelante, est basado
enteramente en SOAP, y que el proyecto Apache, dispone ya de un
mdulo de trabajo con SOAP, que se puede usar como una librera
cliente para invocar servicios SOAP disponibles en cualquier lugar o
como una herramienta del lado del servidor para implementar
servicios SOAP accesibles.
*** Referencias: XML-RPC vs SOAP:
http://weblog.masukomi.org/writings/xml-rpc_vs_soap.htm
*** Referencias: XML-RPC: http://www.xmlrpc.com/
*** Referencias: SOAP 1.1: http://www.w3.org/TR/SOAP/

*** Referencias: Unix, RPC y XML: http://bulmalug.net/body.phtml?


nIdNoticia=503
*** Referencias: El API Apache SOAP v2.2:
http://programacion.com/java/tutorial.php?id=apachesoap

5.- VENTAJAS E INCONVENIENTES DE LOS SERVICIOS WEB:


Sin ejemplos concretos, quiz cueste entender las ventajas de usar
Servicios Web frente a rutinas de libreras de programacin. Un
programador de Perl, que quiera incorporar ciertos algoritmos
sofisticados en su aplicacin, sabe que debe recurrir al CPAN para
trabajar con alguna librera y sus correspondientes rutinas u objetos.
Con lo bien que funciona el CPAN en Perl o el Pear en PHP, para qu
queremos trabajar con Servicios Web? No slo eso cabe preguntarse.
Adems, un programa que utilice Servicios Web no puede funcionar si
no dispone de acceso a Internet en el ordenador donde se ejecuta,
por lo que supone una importante limitacin en el desarrollo.
La explicacin que da sentido a los Servicios Web es sencilla. Las
rutinas de los Servicios Web se actualizan de forma transparente para
el programador y para el encargado de mantenimiento de la
aplicacin. Adems, mediante un Servicio Web puedes implementar a
tu programa funciones imposibles de contemplar bajo el uso de
rutinas de libreras, como por ejemplo, incorporar un buscador de
pginas web. Por otro lado, la carga de CPU que supone la ejecucin
de una rutina, desaparece al usar Servicios Web. La carga se reparte
por Internet, sobre el servidor del Servicio Web. Esto es un comienzo
de "Computacin Distribuida".
Lo Servicios Web no pretenden eliminar del mapa a las libreras o
mdulos de programacin, que de toda la vida hemos usado. No
pueden hacerlo, ya que no son una versin mejorada de stas, sino
una herramienta con distintas aplicaciones en determinados casos.
As, por ejemplo, si necesitamos una rutina que decodifique un
fichero de video, no es aconsejable utilizar un Servicio Web. Por
qu? Utilizar un Servicio Web, supondra enviar el fichero de Video al
servidor del Servicio Web, ste lo decodifica y nos enva el video en
formato plano, sin compresin de ningn tipo. Ya podeis imaginar el
consumo de ancho de banda que esto supondra. Por supuesto, el
procesado en local del codec de video es mucho ms eficiente que el
procesado remoto.

Sin embargo, hay otras ocasiones, en que s interesa utilizar un


Servicio Web, en vez de una rutina de una librera. Por ejemplo, si
queremos que nuestra aplicacin, como por arte de magia, sepa el
precio de un determinado libro dado su ISBN (es un Servicio Web que
ofrece Barnes and Noble) o si queremos que nuestro programa sepa a
quin pertenece un determinado dominio de Internet (es un Servicio
Web prestado por NetworkSolutions), o si nuestro sistema de gestin
de empresa requiere en todo momento disponer de una cotizacin en
tiempo real de divisas, o si queremos que nuestra aplicacin sea
multi-idioma, sin necesidad de incorporar cada mensaje traducido en
varios idiomas, sino mediante una traduccin automtica, o si ... o
si ... o si ... En la actualidad, existen muchos Servicios Web
interesantes. Podemos verlos bien ordenados y explicados (en Ingls)
en http://services.xmethods.net/
Hay que reconocer, que los Servicios Web, van a ser utilizados
principalmente por programadores Web (PHP, Perl, ASP, JSP, ...) ya
que su mxima funcionalidad se da casi siempre ligada a Internet. As
por ejemplo, un programador Web puede considerar muy til, una
rutina que produzca grficas de datos numricos en formato Flash.
Existe un Servicio Web que hace esto: http://www.flashdb.com/serviceHelp/flashCharts.php

6.- EL PROYECTO:
A programar se aprende con una pequea base terica, que ya la
tenemos, y sobretodo jugando y practicando con las herramientas de
programacin. De modo, que nos planteamos un proyecto
relativamente sencillo para ver con ms claridad como se crea un
Servicio Web. Se trata de ofrecer la posibilidad de traducir un texto
del Ingls al Castellano. Esto sera una versin muy "light" del
Servicio Web que ofrece Babelfish de Altavista.
Hemos escogido PHP como lenguaje de programacin porque es una
preferencia entre muchos programadores Linux, y adems es muy
claro e intuitivo. El Servicio Web lo vamos a desarrollar paso a paso,
porque requiere varias etapas:
6.1.6.2.6.3.6.4.6.5.-

Buscamos un diccionario Ingls-Castellano.


Implementamos un traductor de palabras individuales en PHP.
Ampliamos el traductor para procesar textos completos.
Ofrecemos en Internet el Servicio Web de forma elemental.
Ampliamos el servicio, para que funcione bajo XML-RPC.

6.1.- EL PROYECTO: BUSCAMOS UN DICCIONARIO INGLSCASTELLANO.


Si existiera para Liunx un buen programa traductor, podramos usarlo
en nuestro desarrollo, invocndolo desde lnea de comando.
Lamentablemente, por mucho que hemos buscado, parece que no
hay tales programas an para nuestras plataforma favorita. Por lo
que tendremos que conformarnos con un simple diccionario y
efectuar una traduccin completamente literal.
Diccionarios s que podemos encontrar, aunque no muy completos. En
http://wordtrans.sourceforge.net/dicts/i2e/i2edict_20010903-2.tar.gz
=> 317 Kb, tenemos el diccionario que utiliza wordtrans. Es un
diccionario Ingls-Castellano. Lo descomprimimos como es habitual
con un comando como ste: "tar -zxvf i2edict_20010903-2.tar.gz".
Obtendremos un fichero llamado i2e.dict. Examinamos la estructura
del diccionario:

$more i2e.dict

A (abbr. for ampere) : A (abrev. de amperio)


abacterial : abacteriano
abacus : baco
abaft : a popa
abaft : en popa
abaft : hacia popa
abandoned : abandonado
abandonee : abandonado
abandonee : desamparado
abandonment : abandono
...

Podemos apreciar que la manipulacin de este diccionario va a


resultar sencilla, ya que es un fichero de texto plano con una
estructura muy clara.

6.2.- EL PROYECTO: IMPLEMENTAMOS UN TRADUCTOR DE PALABRAS


INDIVIDUALES EN PHP.
Suponiendo que tenemos unos conocimientos bsicos de PHP,
podemos rpidamente desarrollar un script que carga en una tabla
hash las palabras del diccionario Ingls => Castellano:
#!/usr/local/bin/php -q
<?
// Se lee el fichero del diccionario
$filename = "i2edict-20010903/i2e.dict";
$fp = @fopen($filename, "r"); if (!$fp) { die("ERROR: Imposible
leer el fichero '$filename'\n");}
while (($linea = fgets($fp, 1024)) && (!feof($fp))) {
// Se eliminan caracteres residuales
$linea = eregi_replace("\([^)]*\)", "", $linea);
comentarios entre parentesis */
$linea = eregi_replace(" : ", ":", $linea);
separacion entre idiomas
*/
$linea = eregi_replace("[\n\r]*", "", $linea);
elimina el cambio de linea */

/*
/*

// Se separan los idiomas en 2 variables


$matches = split (":", $linea);
$palabraingles = $matches[0];
$palabraespanol = $matches[1];

/* se

// Se meten las palabras en la tabla hash


$ingles2espanol[$palabraingles] = $palabraespanol;
$espanol2ingles[$palabraespanol] = $palabraingles;
}

fclose ($fp);
// Se define una rutina que sepa traducir palabras sueltas del
Castellano al Ingls
function palabra_espanol2ingles($espanol) {
global $espanol2ingles;

if ($espanol2ingles[$espanol] != '') {
return $espanol2ingles[$espanol];
} else {
return $espanol;
}

// Se define una rutina que sepa traducir palabras sueltas del


Ingls al Castellano
function palabra_ingles2espanol($ingles) {
global $ingles2espanol;

if ($ingles2espanol[$ingles] != '') {
return $ingles2espanol[$ingles];
} else {
return $ingles;
}

// Se muestran dos resultados de ejemplo del traductor


print "rbol => " . palabra_espanol2ingles("rbol") . "\n";
print "house => " . palabra_ingles2espanol("house") . "\n";
?>

El resultado de la ejecucin de este script, que hemos decidido llamar


"dicionariohash.php", es esto:
$ ./dicionariohash.php
rbol => tree
house => casa

Bien, parece que traduce bien palabra por palabra, en un sentido,


como en su opuesto. Para no complicarnos vamos a centrarnos slo
en la traduccin del Ingls al Castellano.

6.3.- EL PROYECTO: AMPLIAMOS EL TRADUCTOR PARA PROCESAR


TEXTOS COMPLETOS.
El siguiente objetivo es que este script sea capaz de traducir textos
completos, aunque lo haga palabra por palabra, literalmente. A modo

de ejemplo, hemos escogido el siguiente texto en Ingls, para probar


nuestro desarrollo:
"Linux is a UNIX-like operating system that was designed to provide
personal computer users a free or very low-cost operating system
comparable to traditional and usually more expensive UNIX systems.
Linux has a reputation as a very efficient and fast-performing system.
Linux's kernel (the central part of the operating system) was
developed by Linus Torvalds at the University of Helsinki in Finland.
To complete the operating system, Torvalds and other team members
made use of system components developed by members of the Free
Software Foundation for the GNU project."
Para pasar de traducir una sola palabra a traducir un texto completo,
simplemente hay que considerar que un texto est formado por
palabras separadas entre s por espacios en blanco o signos de
puntuacin. Aplicamos esta idea sobre el cdigo, obteniendo el
siguiente script:
<?

$texto='Linux is a UNIX-like operating system that ... etc.';


// Se define una rutina que cargue en memoria un diccionario
function cargadiccionario($filename) {
global $ingles2espanol, $espanol2ingles;

// Se lee el fichero del diccionario


$fp = @fopen($filename, "r"); if (!$fp) { die("ERROR:
Imposible leer el fichero '$filename'\n");}
while (($linea = fgets($fp, 1024)) && (!feof($fp))) {
// Se eliminan caracteres residuales
$linea = eregi_replace("\([^)]*\)", "", $linea);
comentarios entre parentesis */
$linea = eregi_replace(" : ", ":", $linea);
separacion entre idiomas
*/
$linea = eregi_replace("[\n\r]*", "", $linea);
elimina el cambio de linea */

/*
/*
/* se

// Se separan los idiomas en 2 variables


$matches = split (":", $linea);
$palabraingles = $matches[0];
$palabraespanol = $matches[1];
// Se meten las palabras en la tabla hash
$ingles2espanol[$palabraingles] = $palabraespanol;
$espanol2ingles[$palabraespanol] = $palabraingles;

}
fclose ($fp);

// Se carga el diccionario que trae la aplicacin libre i2edict


cargadiccionario("i2edict-20010903/i2e.dict");

// Se define una rutina que sepa traducir palabras sueltas del


ingls al espaol
function palabra_ingles2espanol($ingles) {
global $ingles2espanol;

if ($ingles2espanol[$ingles] != '') {
return $ingles2espanol[$ingles];
} else {
return $ingles;
}

// Se lee un fichero con texto en ingles


$lineas = split ("\n", $texto);
while (list($key, $val) = each($lineas)) {
$linea = $val;
// Se reemplazan los signos de
$linea = eregi_replace("\.", "
$linea = eregi_replace("\,", "
$linea = eregi_replace("\;", "
$linea = eregi_replace("\(", "
$linea = eregi_replace("\)", "

puntuacin, para preservarlos


--PUNTO-- ", $linea);
--COMA-- ", $linea);
--PUNTOYCOMA-- ", $linea);
--PARABR-- ", $linea);
--PARCIE-- ", $linea);

// Se desglosa la linea en palabras individuales


$matches = split (" ", $linea);
// Se efectua la traduccion de cada palabra, recorriendo el
array obtenido
$linea_traducida = '';
while (list($key, $val) = each($matches)) {
$linea_traducida .= palabra_ingles2espanol($val) . " ";
}
// Se reemplazan
$linea_traducida
$linea_traducida);
$linea_traducida
$linea_traducida);
$linea_traducida
$linea_traducida);
$linea_traducida
$linea_traducida);
$linea_traducida
$linea_traducida);

a la inversa los signos de puntuacin


= eregi_replace(" --PUNTO-- ", ".",
= eregi_replace(" --COMA-- ", ",",
= eregi_replace(" --PUNTOYCOMA-- ", ";",
= eregi_replace(" --PARABR-- ", "(",
= eregi_replace(" --PARCIE-- ", ")",

// Se muestra en pantalla la linea traducida


print $linea_traducida . "\n";
?>

Si probamos el script encontraremos como resultado una traduccin


bastante inexacta, debida a la imprecisn del diccionario con el que
trabajamos. Con un pequeo truco podemos mejorar el diccionario
agregando o suplantando algunos terminos. Para ello, incorporamos
al cdigo esta dos lneas:

// Se carga un diccionario con terminos adicionales que podemos


personalizar
cargadiccionario("mio.dict");
y creamos un fichero llamado "mio.dict" que contiene las siguientes
palabras:
is : es
the : el
was : fue
designed : diseado
provide : proveer
users : usuarios
low-cost : bajo coste
systems : sistemas
has : tiene
fast-performing : alto rendimiento
developed : desarrollado
by : por
University : Universidad
Finland : Finlandia
members : miembros
made : hecho
components : componentes
project : proyecto
to : para
that : que

Ahora, probamos nuevamente el script, y ste el fantstico resultado:


"Linux es un UNIX-like operativo sistema que fue diseado para
proveer personal ordenador usuarios un libre o muy bajo coste
operativo sistema comparable para tradicional y usualmente ms caro
UNIX sistemas. Linux tiene un reputacin como un muy eficaz y alto
rendimiento sistema. Linux's ncleo (el central pieza de el operativo
sistema) fue desarrollado por Linus Torvalds a el Universidad de
Helsinki en Finlandia. To completo el operativo sistema, Torvalds y
otros equipo miembros hecho uso de sistema componentes
desarrollado por miembros de el Free Software Foundation por el GNU
proyecto."

6.4.- EL PROYECTO: OFRECEMOS EN INTERNET EL SERVICIO WEB DE


FORMA ELEMENTAL.

La forma ms simple de que este script funcione en Internet y


terceros usuarios o programadores puedan aprovecharse de l es
creando un sencillo formulario HTML donde se solciite el texto a
traducir, y dar como respuesta una pgina web dinmica cuyo
contenido es la traduccin.
El formulario HTML puede ser algo tan sencillo como esto:
<form name="fromulariotraduccion"
action="http://www.midominio.com/ingles2espanol.php" method="POST">
<textarea name="texto" rows="7" cols="40"></textarea>
<input type="submit" value="Traducir >>">
</form>

Lo llamamos "index.html" y lo colocamos en una carpeta del servidor


web de http://www.midominio.com/
Por ltimo, creamos el script "ingles2espanol.php" (en la misma
carpeta del servidor web) que devuelve la traduccin, a partir de la
informacin extraida del formulario:
<?

// Se capturan las variables CGI a partir de PHP 4.2.0


function php420global($var) {
global $$var;
if (!isset($$var)) {$$var = $_GET["$var"];}
if (!isset($$var)) {$$var = $_POST["$var"];}
if (!isset($$var)) {$$var = $_COOKIE["$var"];}
}
php420global("texto");
// Se define una rutina que cargue en memoria un diccionario
function cargadiccionario($filename) {
global $ingles2espanol, $espanol2ingles;

// Se lee el fichero del diccionario


$fp = @fopen($filename, "r"); if (!$fp) { die("ERROR:
Imposible leer el fichero '$filename'\n");}
while (($linea = fgets($fp, 1024)) && (!feof($fp))) {
// Se eliminan caracteres residuales
$linea = eregi_replace("\([^)]*\)", "", $linea);
comentarios entre parentesis */
$linea = eregi_replace(" : ", ":", $linea);
separacion entre idiomas
*/
$linea = eregi_replace("[\n\r]*", "", $linea);
elimina el cambio de linea */
// Se separan los idiomas en 2 variables
$matches = split (":", $linea);
$palabraingles = $matches[0];
$palabraespanol = $matches[1];

/*
/*
/* se

// Se meten las palabras en la tabla hash


$ingles2espanol[$palabraingles] = $palabraespanol;
$espanol2ingles[$palabraespanol] = $palabraingles;
}
fclose ($fp);
}
// Se carga el diccionario que trae la aplicacin libre i2edict
cargadiccionario("i2edict-20010903/i2e.dict");
// Se carga un diccionario con terminos adicionales que podemos
personalizar
cargadiccionario("mio.dict");
// Se define una rutina que sepa traducir palabras sueltas del
ingls al espaol
function palabra_ingles2espanol($ingles) {
global $ingles2espanol;

if ($ingles2espanol[$ingles] != '') {
return $ingles2espanol[$ingles];
} else {
return $ingles;
}

// Se lee un fichero con texto en ingles


$lineas = split ("\n", $texto);
while (list($key, $val) = each($lineas)) {
$linea = $val;
// Se reemplazan los signos de
$linea = eregi_replace("\.", "
$linea = eregi_replace("\,", "
$linea = eregi_replace("\;", "
$linea = eregi_replace("\(", "
$linea = eregi_replace("\)", "

puntuacin, para preservarlos


--PUNTO-- ", $linea);
--COMA-- ", $linea);
--PUNTOYCOMA-- ", $linea);
--PARABR-- ", $linea);
--PARCIE-- ", $linea);

// Se desglosa la linea en palabras individuales


$matches = split (" ", $linea);
// Se efectua la traduccion de cada palabra, recorriendo el
array obtenido
$linea_traducida = '';
while (list($key, $val) = each($matches)) {
$linea_traducida .= palabra_ingles2espanol($val) . " ";
}
// Se reemplazan
$linea_traducida
$linea_traducida);
$linea_traducida
$linea_traducida);
$linea_traducida
$linea_traducida);
$linea_traducida
$linea_traducida);
$linea_traducida
$linea_traducida);

a la inversa los signos de puntuacin


= eregi_replace(" --PUNTO-- ", ".",
= eregi_replace(" --COMA-- ", ",",
= eregi_replace(" --PUNTOYCOMA-- ", ";",
= eregi_replace(" --PARABR-- ", "(",
= eregi_replace(" --PARCIE-- ", ")",

// Se muestra en pantalla la linea traducida


print $linea_traducida . "\n";

?>

Ya est. Acabamos de crear un Servicio Web, que aunque no respeta


ningn estndar (XML-RPC o SOAP) funciona bajo la misma filosofa.
Podemos jugar con el ejemplo aqu descrito en la siguiente URL de
Internet: http://web-services.bankhacker.com/translator/
Hosting Linux

6.5.- EL PROYECTO: AMPLIAMOS EL SERVICIO, PARA QUE FUNCIONE


BAJO XML-RPC.
Retomamos el pequeo programa traductor Ingls => Castellano que
dejamos a punto de convertirse en un servicio XML-RPC. Si queremos
crear realmente un Servicio Web estndar, la comunicacin entre ste
y el cliente (normalmente el cliente es otro programa que nosotros u
otros desarrolladores estn realizando) debe llevarse a cabo a travs
de un protocolo como XML-RPC o SOAP.
La implementacin de XML-RPC como servidor, se incorpora en PHP a
travs de una herramienta ya creada (desarrollada por Ivan Ristic,
ivanr@webkreator.com) y disponible en Internet gratuitamente
llamada "XML-RPC Class Server". La podemos encontrar en esta web:
http://www.webkreator.com/php/xcs/ y descargarla de
http://www.webkreator.com/download/xcs-1.2.zip
Descomprimimos el fichero obtenido: "unzip xcs-1.2.zip" en la
carpeta del servidor web, donde hemos colocado el script de
traduccin. Se crean varios ficheros, aunque slo nos vamos a centrar
en uno de ellos, que es muy sencillo: "class.test.php"
En "class.test.php" se define la funcin PHP a ejecutar por el Servicio
Web, respetando la estructura inicial. De modo que la incorporacin
de nuestro traductor sera algo as:
<?
class Test {
// funcion de pruebas, que nos permite ver el cdigo XML
intercambiado
function Test($secret) {
if ($secret != '42') {
trigger_error("Secret does not match.", E_USER_ERROR);
}
}

// funcion respuesta del objeto invocado por XML-RPC


function ingles2espanol($texto) {
// Se define una rutina que cargue en memoria un diccionario
function cargadiccionario($filename) {
global $ingles2espanol, $espanol2ingles;
// Se
$fp =
Imposible leer el
while

lee el fichero del diccionario


@fopen($filename, "r"); if (!$fp) { die("ERROR:
fichero '$filename'\n");}
(($linea = fgets($fp, 1024)) && (!feof($fp))) {

// Se eliminan caracteres residuales


$linea = eregi_replace("\([^)]*\)", "", $linea);
comentarios entre parentesis */
$linea = eregi_replace(" : ", ":", $linea);
separacion entre idiomas
*/
$linea = eregi_replace("[\n\r]*", "", $linea);
se elimina el cambio de linea */

/*
/*
/*

// Se separan los idiomas en 2 variables


$matches = split (":", $linea);
$palabraingles = $matches[0];
$palabraespanol = $matches[1];
// Se meten las palabras en la tabla hash
$ingles2espanol[$palabraingles] = $palabraespanol;
$espanol2ingles[$palabraespanol] = $palabraingles;

}
fclose ($fp);

// Se define una rutina que sepa traducir palabras sueltas del


ingls al espaol
function palabra_ingles2espanol($ingles) {
global $ingles2espanol;

if ($ingles2espanol[$ingles] != '') {
return $ingles2espanol[$ingles];
} else {
return $ingles;
}

// Se carga el diccionario que trae la aplicacin libre


i2edict

cargadiccionario("./i2edict-20010903/i2e.dict");

// Se carga un diccionario con terminos adicionales que


podemos personalizar
cargadiccionario("./mio.dict");
// Se traduce el texto en ingles
$lineas = split ("\n", $texto);
while (list($key, $val) = each($lineas)) {
$linea = $val;
// Se reemplazan los signos de puntuacin, para

preservarlos

$linea
$linea
$linea
$linea
$linea

=
=
=
=
=

eregi_replace("\.",
eregi_replace("\,",
eregi_replace("\;",
eregi_replace("\(",
eregi_replace("\)",

"
"
"
"
"

--PUNTO-- ", $linea);


--COMA-- ", $linea);
--PUNTOYCOMA-- ", $linea);
--PARABR-- ", $linea);
--PARCIE-- ", $linea);

// Se desglosa la linea en palabras individuales


$matches = split (" ", $linea);
// Se efectua la traduccion de cada palabra, recorriendo
el array obtenido
$linea_traducida = '';
while (list($key, $val) = each($matches)) {
$linea_traducida .= palabra_ingles2espanol($val) . "
";
}
// Se reemplazan
$linea_traducida
$linea_traducida);
$linea_traducida
$linea_traducida);
$linea_traducida
$linea_traducida);
$linea_traducida
$linea_traducida);
$linea_traducida
$linea_traducida);
}

a la inversa los signos de puntuacin


= eregi_replace(" --PUNTO-- ", ".",
= eregi_replace(" --COMA-- ", ",",
= eregi_replace(" --PUNTOYCOMA-- ", ";",
= eregi_replace(" --PARABR-- ", "(",
= eregi_replace(" --PARCIE-- ", ")",

$lineas_traducidas .= $linea_traducida . "\n";

return $lineas_traducidas;
}
?>

Ya est! Ahora s que hemos creado un Servicio Web completamente


standard, bajo XML-RPC. Veamos si funciona. Ver si funciona un
Servicio Web es complicado, ya que para invocarlo tenemos que
enviar una solicitud web en lenguaje XML, y la respuesta es una
pgina web cuyo cdigo es XML. Por eso, com veis en el cdigo PHP
anterior, se ha definido la funcin "Test", dentro del objeto que
representa al Servicio Web. Esta funcin "Test" nos permite ejecutar
el Servicio Web, sin necesidad de enviar una solicitud en formato
XML, sino simplemente una solicitud GET corriente, como sta:
http://www.midominio.com/xcs.php/test/42?
_method=ingles2espanol&texto=tree
Si todo va bien, el resultado es ste:
<?xml version='1.0' encoding="iso-8859-1" ?>
<methodResponse>
<params>
<param>

<value>
<string>rbol</string>
</value>
</param>
</params>
</methodResponse>

En fase de produccin, un Servicio Web se invoca directamente desde


el cdigo de programacin de la aplicacin cliente. Para efectuar dicha
invocacin, se utilizan rutinas de cliente XML-RPC que traducen a XML
nuestra llamada a rutina y sus variables, invocan por HTTP el Servicio
Web, descargan el XML resultante, y lo procesan convirtindolo en
variables resultado. A nivel de programador, un Servicio Web hace
todo esto de forma transparente, por lo que es equivalente a ejecutar
una rutina.

<?
include_once("./class.remotetest.php");
RemoteClassRegistry::addUrl('DEFAULT_URL',
'http://www.midominio.com/xcs.php');
$test = new Test(42);

print $test->ingles2espanol('tree');
?>
Este sencillo cdigo invoca la creacin de un objeto remoto de tipo
"Test", y luego ejecuta su funcin "ingles2espanol" con el parmetro
de ejemplo "tree". El resultado, como podemos imaginar es "rbol".
De igual modo, podemos probar el sistema con un texto ms largo.
La potencia de este esquema de programacin (los Servicios Web)
est en colocar el PHP del cliente en un servidor distinto al PHP del
Servicio Web.
Ahora nos queda claro que la rutina de traduccin slo reside en un
servidor de Internet, y otros pueden invocar la funcin tantas veces
como quieran desde cualquier punto de Internet.
Hay un detalle que an no hemos comentado. Para que PHP pueda
trabajar con el protocolo XML-RPC, hay que compilarlo con unas
determinadas funciones especiales. Vemos a continuacin los pasos
en la instalacin de PHP, para que todo funcione bien.

7.- INSTALACIN DE PHP CON XML-RPC.


Es imprescindible instalar expat, antes de instalar el soporte XML-RPC
de PHP. El proyecto expat, que encontramos en
http://sourceforge.net/projects/expat es una librera programada en
C cuyo objetivo es hacer de "parser" (intrprete) de XML. La
instalacin es sencilla:
mkdir/home/install/programacion/php/
cd /home/install/programacion/php/
wget "http://unc.dl.sourceforge.net/sourceforge/expat/expat1.95.4.tar.gz"
cd /usr/src/
tar -zxvf /home/install/programacion/php/expat-1.95.4.tar.gz
rm -Rf expat
ln -s expat-1.95.4 expat
cd /usr/src/expat/
make clean
rm -f config.status config.cache
./configure
make
make install

echo "/usr/local/lib" &gt;&gt; /etc/ld.so.conf


ldconfig

Una vez que disponemos de expat en nuestro Linux, compilamos PHP


nuevamente:
### Compilo PHP4 como modulo de Apache
cd /usr/src/php/
make clean
rm -f config.status config.cache
./configure \
--with-apache=/usr/src/apache \
--with-zlib \
--enable-sockets \
--with-kerberos=/usr/kerberos \
--enable-inline-optimization \
--with-expat-dir=/usr/local \
--with-xmlrpc \
--enable-overload \
--with-imap
make
make install

Hay algunas opciones imprescindibles (with-expat-dir, --withxmlrpc, ...) para disponer de soporte XML-RPC en PHP. Otras van en
funcin de nuestros proyectos y sus requisitos.

8.- SOAP SOBRE PHP:


Ya hemos visto como funciona XML-RPC sobre PHP. El otro protocolo
de Servicios Web es SOAP. SOAP tambin puede ser utilizado desde
PHP. Aunque XML-RPC es ms sencillo y ms "Unix-Friendly", hay que
reconocer que la mayora de los Servicios Web pblicos e interesantes
de hoy en da, estn definidos bajo el estndar SOAP. Es por eso,
especialmente interesante saber como invocar uno de estos servicios
desde SOAP.
Como hemos podido ver con XML-RPC, crear un Servicio Web es ms
complicado que invocarlo. En SOAP pasa lo mismo. Veamos la parte
sencilla, y la ms til, o sea, su invocacin.
La implementacin de SOAP sobre PHP ms recomendable es
NuSOAP, que encontramos en
http://dietrich.ganx4.com/nusoap/index.php y podemos descargar en
http://dietrich.ganx4.com/nusoap/downloads/nusoap-0.6.1.zip
Est desarrollada por la empresa NuSphere
(http://www.nusphere.com/) y licenciada bajo LGPL.
Ponerla en marcha es tan sencillo como teclear este simple script en
PHP de ejemplo:
#!/usr/local/bin/php -q
<?php
require_once('nusoap-0.6.1/nusoap.php');
$soapclient = new
soapclient('http://services.xmethods.net/soap/urn:xmethods-delayedquotes.wsdl','wsdl');
echo $soapclient->call('getQuote',array('symbol'=>'ibm'));
?>

As de sencillo es obterner la cotizacin en bolsa de las acciones de


IBM en un programa en PHP utilizando un Servicio Web SOAP. Viendo
este cdigo, nos preguntaremos qu es eso de WSDL que sale en un
sitio y en otro cada vez que hablamos de SOAP. Tal como se hace en
CORBA o en COM, SOAP usa un lenguaje de definicin de servicios
para Web (WSDL = Web Services Definition Language), en donde se
definen los servicios a publicar, los tipos de datos a retornar, as como
otras caractersticas de los servicios. El WSDL es un borrador (no est
completamente aprobado por el W3C), aunque ya se usa en fase de
explotacin de forma extensiva.

Resumiendo, WSDL es equivalente a la URL en los servicios XML-RPC.


Es la direccin de Internet donde hay que invocar el proceso que nos
interesa.
*** Referencias: "Construccin de Servicios Web con SOAP" =>
http://www.revista.unam.mx/vol.3/num1/art3/
*** Referencias: "WSDL" => http://www.w3.org/TR/2001/NOTEwsdl-20010315
Ahora un ejemplo un poco ms sofisticado. Veamos cmo
implementar en PHP una llamada al generador de grficas en Flash:
#!/usr/local/bin/php -q
<?php
require_once('nusoap-0.6.1/nusoap.php');
// Definimos los parametros de entrada
$parameters = array(
"mainTitle"
"subTitle"
"xAxisTitle"
"yAxisTitle"
"sourceTitle"
"minValue"
"maxValue"
"unitType"
"drawGrid"
"animate"
"show3D"
"dataArray"

2.9"
);

=>"My Bar Chart Title",


=>"Example SubTitle",
=>"x Axis Title",
=>"y Axis Title",
=>"Source: Example Output from Service",
=>"0",
=>"100",
=>" %",
=>"1",
=>"1",
=>"1",
=>"Apples:78.5,Oranges:34.8,Peaches:23.7,Pears:1

// Se indica la URL del servicio SOAP mediante WSDL


$soapclient = new soapclient('http://www.flashdb.com/services/ws/flashBarChart.wsdl', 'wsdl');
// Se invoca al Servicio Web SOAP
$result
= $soapclient->call('doFlashBarChart',$parameters);
// El resultado viene en formato binario base64 ...
$binary = base64_decode($result);
// Grabamos el fichero flash en el filesystem
$movieName = "./NewChart.swf";
$fp = fopen($movieName,"w");
fwrite($fp, $binary, 12000);
fclose( $fp );
?>

El resultado obtenido, lo podemos visualizar en un navegador usando


el siguiente cdigo HTML:
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swfl
ash.cab#version=5,0,0,0"
WIDTH="500" HEIGHT="400">
<PARAM NAME=movie VALUE="NewChart.swf">
<PARAM NAME=quality VALUE=high>
<PARAM NAME=bgcolor VALUE=#FFFFFF>
<EMBED src="NewChart.swf" quality=high bgcolor=#FFFFFF WIDTH="500"
HEIGHT="400"
TYPE="application/x-shockwave-flash"
PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer">
</EMBED>
</OBJECT>

Otro ejemplo ms, de gran utilidad es la invocacin a Google desde


PHP. Google uno de los buscadores de ms prestigio de la red ha
incorporado recientemente la posibilidad de poder usar su base de
datos de pginas desde cualquier herramienta de desarrollo.
El producto denominado "Google Web API" permite a los
desarrolladores poder interrogar y tomar informacin de casi tres mil
millones de documentos Web directamente desde Google. Para lograr
eso, Google usa SOAP y WSDL de forma que los desarrolladores
puedan programar en su entorno favorito tal como PHP, Java, Perl, o
Visual Studio .NET.

Veamos como se puede aprovechar la potencia de Google en nuestros


scripts de PHP:
#!/usr/local/bin/php -q
<?php
require_once('nusoap-0.6.1/nusoap.php');
// Licencia de Google
$key = 'iwnUXUtHj3bteg5FWfBJDwui3SPeB+iy';
// Por ejemplo ...
$Query
= "linux+programacin";
$startPage
= 0;
$parameters = array(
'key'
'q'
'start'
'maxResults'
'filter'
'restrict'
'safeSearch'
'lr'
'ie'
'oe'
);

=>
=>
=>
=>
=>
=>
=>
=>
=>
=>

$key,
$Query,
$startPage,
10,
false,
'',
false,
'',
'',
''

$soapclient = new soapclient('http://api.google.com/search/beta2');


$result = $soapclient->call('doGoogleSearch',$parameters,
'urn:GoogleSearch');
print_r ($result);
?>

El resultado es algo as:

Array
(
[documentFiltering] => false
[estimatedTotalResultsCount] => 77400
[directoryCategories] =>
[searchTime] => 0.194757
[resultElements] => Array
(
[0] => Array
(
[cachedSize] => 28k
[hostName] =>
[snippet] => Programas y Aplicaciones de GNU/Linux
[directoryCategory] => Array
(
[specialEncoding] =>
[fullViewableName] =>
)
[relatedInformationPresent] => true
[directoryTitle] =>
[summary] =>
[URL] =>
http://linux.bankhacker.com/software/Programacion/
[title] => Linux Programacion
)
[1] => Array
(
[cachedSize] => 9k
[hostName] =>
[snippet] => Hosting Linux y Programacin
[directoryCategory] => Array
(
[specialEncoding] =>
[fullViewableName] =>
)
[relatedInformationPresent] => true
[directoryTitle] =>
[summary] =>
[URL] => http://linux.bankhacker.com/
[title] => Software Linux: Programas y
Aplicaciones de GNU/Linux
)
...
)
[endIndex] => 10
[searchTips] =>
[searchComments] =>
[startIndex] => 1
[estimateIsExact] => false
[searchQuery] => linux+programacin
)

9.- SOAP SOBRE PERL:


SOAP::Lite es una implementacin de SOAP para Perl. Se encuentra
como mdulo en el CPAN (Comprehensive Perl Archive Network). Con
SOAP::Lite version 0.52 o superior podemos incorporar cualquier
servicio SOAP a nuestros programas.
La instalacin podemos llevarla a cabo de dos formas: bajando los
mdulos como ficheros comprimidos, compilndolos e instalndolos o
bien de forma automtica, mediante la interfaz del CPAN que posee
Perl:
perl -MCPAN -e shell
install SOAP::Lite
quit

En cualquier caso, debemos instalar los siguientes mdulos:

HeadParser
SOAP
SOAP::Lite
URI
Math::Random

Si no queremos instalarlos uno a uno, podemos bajar una "imagen"


con los mdulos instalados, descomprimirla en el directorio raiz de la
cuenta propia, y despus, en los programas en Perl, indicar dnde
estn las libreras que acabamos de instalar:
use lib '.../perl';
use lib '.../perl/lib';
use SOAP::Lite;

Veamos como ejemplo el Servicio Web de traducciones de BabelFish,


programando en Perl un cliente SOAP, (usando SOAP::Lite) que
acceda a este servicio remoto gratuito.
En primer lugar indicamos con el mtodo proxy de la clase, cul es el
servidor y camino completo hasta el servicio. Con el mtodo uri
indicaremos el nombre del servicio invocado, y por ltimo, utilizando
el mtodo de ese servicio, pasamos los parmetros (en este caso la
cadena de texto a traducir y los idiomas origen y destino). El cdigo
que podra hacer esas peticiones sera:
#!/usr/bin/perl -w
use SOAP::Lite;
print SOAP::Lite
->proxy('http://services.xmethods.net/perl/soaplite.cgi')
->uri('urn:xmethodsBabelFish')
->BabelFish("es_en","Hola, mundo")
->result;
1;

Los idiomas origen y destino vienen indicados mediante abreviaturas:


Ingls, en
Francs, fr
Alemn, de
Espaol, es
Italiano, it
Portugus, pt
Ruso, ru

AVISO:Es posible que cuando ejecutemos estos scripts, nuestra


mquina se encuentre detrs de un proxy. En ese caso, debemos
indicarle a Linux cul es la forma de salir al exterior. Lo configuramos
usando la variable de entorno HTTP_proxy:

export HTTP_proxy="http://www.miproxy.com:3128"
setenv HTTP_proxy "http://www.miproxy.com:3128"

el primer caso se utilizar cuando nuestro Shell sea el bash, mientras


que el segundo, cuando sea el tcsh.
La invocacin del API de Google desde Perl sera similar.
*** Referencias: GoogleSearch.pl =>
http://interconnected.org/home/more/GoogleSearch.pl.txt
#!/usr/bin/perl -w
use SOAP::Lite;
my $query = "linux+programacion";
my $googleSearch = SOAP::Lite ->
service("http://api.google.com/GoogleSearch.wsdl");
my $result = $googleSearch -> doGoogleSearch(
"iwnUXUtHj3bteg5FWfBJDwui3SPeB+iy",
# Clave de acceso al API
de Google
$query,
# Palabras clave de
bsqueda
0,
# Indice del primer
resultado mostrado
10,
# Numero de resultados
obtenidos
"false",
# Filtro
'',
# Restriccin
"false",
# Bsqueda Segura
'',
# lr
'latin1',
# ie
'latin1'
# oe
);
print
print
print
print

$result->{resultElements}->[0]->{title};
"\n";
$result->{resultElements}->[0]->{URL};
"\n";

1;

10.- SOAP DESDE PYTHON:


SOAP al igual que XML-RPC puede ser implementado en la mayora de
los lenguajes de programacin actuales dentro del entorno Linux.
Entre ellos, est Python, lenguaje de script similar a Perl, muy
querido entre los Debianitas.

Utilizando un mdulo Python, podemos utilizar toda la potencia de los


Servicios Web basados en SOAP. Veamos como:
wget
http://switch.dl.sourceforge.net/sourceforge/pywebsvcs/SOAPpy097.tgz
tar -zxvf SOAPpy097.tgz
cp -Rdf SOAPpy097 /usr/lib/python2.2/site-packages

Es recomendable utilizar Python 2.1, o 2.2, para evitar un problema


de memoria que se da con el parser XML de la versin 2.0
*** Referencias: http://www.fettig.net/googleRank.txt
Un script en Python que utilice este mdulo para efectuar una
consulta sobre Google sera as:
#!/usr/bin/python
import SOAP
import string
key = 'iwnUXUtHj3bteg5FWfBJDwui3SPeB+iy'
soapfalse = SOAP.booleanType(0)
emptyStr = SOAP.stringType('')
def rank(site, query):
x=1
server = SOAP.SOAPProxy('http://api.google.com/search/beta2',
namespace='urn:GoogleSearch')
start = 0
while start < 10:
data = server.doGoogleSearch( SOAP.stringType(key),
SOAP.stringType(query), start*10, 10, soapfalse, emptyStr, soapfalse,
emptyStr, emptyStr, emptyStr)
results = data.resultElements
for result in results:
try:
result.URL.index(site)
return (result.URL, start*10 + results.index(result) +
1)
except:
pass
x = x+1
start = start + 1
if __name__ == '__main__':
import sys
searchPhrase = string.join(sys.argv[2:]," ")
result = rank(sys.argv[1], searchPhrase)
if result:
print "'" + result[0] + "'" + " is currently ranked #" +
str(result[1]) + " on Google for the search phrase '" + searchPhrase +
"'."
else:
print "'" + sys.argv[1] + "'" + " is not currently in the top
100 results for the search phrase '" + searchPhrase + "' on Google."

Una versin ms simplificada y ms clara de este cdigo es la


siguiente:
#!/usr/bin/python
import SOAP
key = 'iwnUXUtHj3bteg5FWfBJDwui3SPeB+iy'
query = 'python'
s = SOAP.SOAPProxy("http://api.google.com/search/beta2")
r = s.doGoogleSearch(key, query, 0, 10, "false", "", "false", "",
"latin1", "latin1")

Existe un proyecto llamado PyGoogle =>


http://diveintomark.org/projects/#pygoogle que puede ayudarnos a
la hora de extraer informacin adicional de Google, como por ejemplo
pginas cacheadas o sugerencias de correccin ortogrfica. PyGoogle
es una aplicacin basada en SOAP y el Servicio Web de Google.
Pregunta:

exec desde PHP

11.- INSTALANDO O ACTUALIZANDO PYTHON 2.2:


SOAP funciona con Python 2.1 como mnimo. Muchos programadores
tendrn que actualizarse Python si quieren aprovechar la potencia de
los Servicios Web. La instalacin de la nueva versin puede
complicarse en ciertas circunstancias, por lo que a continucin os
comentamos los pasos seguidos en nuestro laboratorio de
programacin, sobre Linux Red Hat 6.2:
# Descargamos los ficheros rpm necesarios:
wget http://www.python.org/ftp/python/2.2.1/rpms/rh6.2/python2-2.2.11.i386.rpm
wget http://www.python.org/ftp/python/2.2.1/rpms/rh6.2/python2tkinter-2.2.1-1.i386.rpm
wget http://www.python.org/ftp/python/2.2.1/rpms/rh6.2/python2-devel2.2.1-1.i386.rpm
wget http://www.python.org/ftp/python/2.2.1/rpms/rh6.2/python2-tools2.2.1-1.i386.rpm
wget http://www.python.org/ftp/python/2.2.1/rpms/rh6.2/python2-docs2.2.1-1.i386.rpm
rpm
rpm
rpm
rpm
rpm

-i
-i
-i
-i
-i

python2-2.2.1-1.i386.rpm
python2-tkinter-2.2.1-1.i386.rpm
python2-devel-2.2.1-1.i386.rpm
python2-tools-2.2.1-1.i386.rpm
python2-docs-2.2.1-1.i386.rpm

# Los instalamos. En Linux Red Hat 6.2 hemos encontrado problemas de


dependencias, que resolvemos a continuacin. Si no tuvieramos estos
problemas, Python 2.2 ya estara instalado correctamente en nuestro

sistema.
# Instalamos expat, el parser XML de Linux:
wget http://www.python.org/ftp/python/2.2/rpms-62/expat-1.95.22.i386.rpm
rpm -i expat-1.95.2-2.i386.rpm
wget http://www.python.org/ftp/python/2.2/rpms-62/expat-devel-1.95.22.i386.rpm
rpm -i expat-devel-1.95.2-2.i386.rpm
# Para arreglar el problema de dependencias, reconstruimos el paquete
desde el fuente del siguiente modo:
wget http://www.python.org/ftp/python/2.2.1/rpms/python2-2.2.12.src.rpm
rpm --rebuild python2-2.2.1-2.src.rpm
# Reinstalamos los paquetes generados:
rpm
rpm
rpm
rpm

-i
-i
-i
-i

/usr/src/redhat/RPMS/i386/python2-2.2.1-2.i386.rpm
/usr/src/redhat/RPMS/i386/python2-devel-2.2.1-2.i386.rpm
/usr/src/redhat/RPMS/i386/python2-docs-2.2.1-2.i386.rpm
/usr/src/redhat/RPMS/i386/python2-tools-2.2.1-2.i386.rpm

# Indicamos al sistema que a partir de ahora los scripts de python se


ejecutan con python2:
rm /usr/bin/python
ln -s /usr/bin/python2 /usr/bin/python

12.- SOAP, WSDL, UDDI Y WEB SERVICES:


SOAP a diferencia de XML-RPC, incluye una infraestructura a su
alrededor. No es un mero protocolo de comunicacin entre
ordenadores, sino que adems se rodea de trminos como WSDL y
UDDI. Veamos que significan exactamente.

Ya hemos visto como los Servicios Webs son herramientas de


programador, por lo que apenas van a tener repercusin en lo
concerniente a los usuarios de Internet. Quiz puedan advertir
ligeramente que hay ms elementos comunes en distintas pginas
web, pero poco ms.
Los Servicios Web son para los ordenadores, lo que las pginas web
para los humanos. Pginas que contienen cierta informacin o
realizan cierta tarea y con la que se comunican mediante un lenguaje
un poco criptico como es el XML. Cuando navegamos por un portal,
siempre encontramos en alguna parte un ndice, o algo parecido. El
ndice nos permite conocer las partes accesibles de portal y dirigirnos
a la que ms nos interese. Con los Servicios Web, ocurre igual. El
ndice es el fichero WSDL (Web Services Description Language).
*** Referencias:
http://www.fisica.uson.mx/carlos/WebServices/WS_WSDL.htm
Este fichero WSDL, en formato XML, indica al ordenador que lo
consulta, qu servicios dispone en su site. No slo indica cuales
dispone, sino que adems da una referencia precisa sobre ellos, para
poder invocarlos usando los parmetros adecuados.
Del mismo modo, al igual que en la Web tenemos buscadores como
Google, que nos llevan a las pginas que nos interesan, existe el
concepto equivalente a nivel de Servicios Web, que es UDDI
(Universal Description Discovery Integration). UDDI es un Servicio

Web en lnea que se puede utilizar desde las aplicaciones para


descubrir de forma dinmica otros servicios en lnea, todos ellos
perfectamente integrados en una interfaz XML simple.
*** Referencias: http://www.uddi.org/
*** Referencias:
http://www.fisica.uson.mx/carlos/WebServices/WS_UDDI.htm

La especificacin UDDI ha sido desarrollada por IBM, Microsoft y Ariba


y est soportada por ms de 300 empresas, incluyendo Oracle, Sun
Microsystems y Nortel Networks. La ltima versin, v2, extiende la
funcionalidad UDDI para mejorar el soporte con objeto de desarrollar
registros pblicos y privados que gestionen los servicios Web internos
empleando las especificaciones UDDI.
Estas empresas actan como catalizadores iniciales para desarrollar
la plataforma, as como los sistemas relacionados. Los sistemas ebusiness de las compaas miembro, por tanto, pueden conectarse
sin dificultad y combinarse en la creacin de nuevas aplicaciones.
La especificacin UDDI, junto con Extensible Markup Language (XML),
Simple Object Access Protocol (SOAP) y Web Services Description
Language (WSDL), estn ganando un amplio soporte en el marco de
trabajo de los servicios Web. De hecho, cerca de 7.000 empresas se
han registrado en el directorio UDDI.

13.- SERVIDORES SOAP CON PHP:


Ya hemos visto como utilizar los Servicios Web basados en SOAP con
Perl, PHP y Python. Pero cmo construir un Servicio Web basado en
SOAP?
#!/usr/local/bin/php -q
<?php

require_once('nusoap-0.6.1/nusoap.php');

?>

$server = new soap_server;


$server->register('hello');
function hello ($name){
return "Hello $name.";
}
$server->service($HTTP_RAW_POST_DATA);

14.- SOAP CON RUBY, TCL, C++ Y OTROS LENGUAJES:


Para aquellos programadores que trabajan con otros lenguajes,
pueden ver ejemplos similares a los aqu descritos en las siguientes
referencias:
SOAP con Ruby: http://www.caliban.org/ruby/ruby-google.shtml
SOAP con Tcl: http://gondolin.hist.liv.ac.uk/~cheshire/tclgoogle.html
SOAP con C++: http://davidwatson.org:8086/2002/04/12.html#a50
SOAP con otros lenguajes ... :
http://www.soapware.org/directory/4/services/googleApi/implementa
tions

15.- CONCLUSIONES:
Los Servicios Web pueden ser muy tiles en ciertos casos concretos
de programacin. Los expertos de marketing de empresas de
software como Microsoft anuncian a bombo y platillo una revolucin
dabido a la aparicin de SOAP, WSDL, UDDI, etc. Sin embargo, no
conviene creerse todo lo que cuentan. Hay que tener en cuenta que
les interesa que sus clientes actualicen sus herramientas de
desarrollo a la versin .NET ...
La nica revolucin que podemos vivir en relacin a los Servicios Web
es la de ver como los servidores de Internet hablan entre ellos, y
cada da son ms independientes del programador. Y eso es algo que

va a pasar completamente desapercibido para el resto de los usuarios


de Internet.
Si logramos que existan Servicios Web de utilidad, gratuitos y
sencillos, este nuevo esquema de comunicacin y programacin
tendr futuro. Si por contra, montamos campaas comerciales y
vendemos fantasas en torno a palabras bonitas e incomprensibles
como UDDI, WSDL, SOAP, XML, ... habremos perdido nuestro valioso
tiempo.
16.- BIBLIOGRAFA:
* "Programming Web Services with Perl" es un buen libro sobre la
implementacin de soluciones que usan XML-RPC y SOAP en Perl. Ms
informacin en
http://linux.bankhacker.com/software/Programming+Web+Services+
with+Perl/

http://web-services.bankhacker.com/
Qu son los servicios Web XML?
14 de enero de 2002

A pesar de su sencillez aparente, XML est transformando completamente la creacin y el uso de


software. El Web revolucion la comunicacin entre usuarios y aplicaciones. XML est revolucionando
la comunicacin entre aplicaciones o, de forma ms general, la comunicacin entre equipos, pues
ofrece un formato de datos universal que permite adaptar o transformar fcilmente la informacin:

Los servicios Web XML permiten que las aplicaciones compartan informacin.
Los servicios Web XML son unidades de cdigo discretas, cada una de las cuales se encarga de un
conjunto limitado de tareas.
Estn basados en XML, el lenguaje universal del intercambio de informacin en Internet y pueden
utilizarse en cualquier plataforma o sistema operativo, independientemente del lenguaje de
programacin utilizado.
.NET es la plataforma de Microsoft para la creacin de servicios Web XML.

Los servicios Web XML: Un lenguaje universal

Los servicios Web XML permiten que las aplicaciones compartan informacin y que adems invoquen
funciones de otras aplicaciones independientemente de cmo se hayan creado las aplicaciones, cul
sea el sistema operativo o la plataforma en que se ejecutan y cules los dispositivos utilizados para
obtener acceso a ellas. Aunque los servicios Web XML son independientes entre s, pueden vincularse
y formar un grupo de colaboracin para realizar una tarea determinada.

Por ejemplo: Cmo conectan aplicaciones los


servicios Web XML
Supongamos que dispone de un sistema de inventario. Si no
est conectado de ninguna forma, no resulta demasiado til.
Puede llevar a cabo un seguimiento de las existencias, pero
resulta muy laborioso y sus funciones como sistema
independiente son limitadas. Por ejemplo, todos los artculos
vendidos debern registrarse no slo en el sistema de
inventario sino tambin en el sistema contable y los registros
de cuentas de clientes. Tambin deber acordarse de pedir
ms artculos a los proveedores la prxima vez que realice un
pedido. La proporcin costo/beneficios no resulta atractiva,
puesto que los beneficios obtenidos del sistema se aproximan
a los gastos de uso del mismo.
No obstante, si conecta el sistema de inventario al sistema
contable mediante XML, la situacin mejora
considerablemente. Cada vez que compre o venda artculos,
las consecuencias sobre el inventario y el flujo de caja pueden
registrarse en un solo paso. Si adems conecta mediante XML
el sistema de administracin del almacn, el sistema de
pedidos de clientes, los sistemas de pedidos a proveedores y
el sistema de la empresa de transporte, entonces el sistema
de administracin de inventario adquiere un valor mucho ms
elevado. Puede administrar completamente su negocio en un
solo paso, en lugar de utilizar un paso para cada uno de los
sistemas afectados. Todo ello reduce considerablemente el
trabajo y la posibilidad de que se cometan errores.

Ventajas de los servicios


Web XML

Abren la puerta a nuevas


oportunidades empresariales,
pues facilitan la comunicacin
con los socios.
Ofrecen a los usuarios
experiencias mucho ms
personalizadas e integradas,
por medio de la nueva gama de
dispositivos inteligentes, como
las PC.
Ahorran tiempo y dinero, ya
que reducen la duracin del
ciclo de creacin.
Aumentan los flujos de
ingresos, pues ponen
fcilmente sus propios servicios
Web XML a disponibilidad de
otros.

Estas conexiones pueden llevarse a cabo fcilmente con los


servicios Web XML. Los servicios Web XML permiten que las
aplicaciones compartan informacin a travs de Internet,
independientemente del sistema operativo o software de
servidor que utilice la aplicacin.
Los servicios Web XML utilizan protocolos estndar
Los servicios Web XML tambin permiten que los programadores puedan elegir entre generar todas
las partes de sus aplicaciones o utilizar servicios Web XML creados por otros. De este modo, una
empresa no necesita crear todas las partes de una solucin completa. Como tiene la capacidad para
anunciar y ofrecer sus propios servicios Web XML, se crean nuevos flujos de ingresos para la
empresa.
Los servicios Web XML se invocan en Internet por medio de protocolos estndar tales como SOAP,
XML y UDDI (Descripcin, descubrimiento e integracin universales, Universal Description, Discovery,
and Integration ). Estos protocolos los definen organizaciones de estndares pblicos como el
consorcio W3C.
SOAP (Protocolo de acceso a objetos simple, Simple Object Access Protocol ) es una tecnologa de
mensajera basada en XML estandarizada por el consorcio W3C que especifica todas las reglas
necesarias para ubicar servicios Web XML, integrarlos en aplicaciones y establecer la comunicacin
entre ellos. UDDI es un registro pblico gratuito en el que se pueden publicar y enviar consultas
acerca de los servicios Web.
Seguridad y Sevicios Web XML
Un beneficio clave en la nueva arquitectura de servicios Web es la habilidad de entregar soluciones
integradas e interoperables. Ayudar a proteger la integridad, confidencialidad y seguridad de los
servicios Web a travs de la aplicacin de un modelo comprensivo de seguridad es crtico.

http://www.microsoft.com/latam/net/basics/xmlservices
.asp
5.6 Tecnologas subyacentes.
5.6.1 SOAP

SOAP y WebServices.
SOAP es un protocolo elaborado para facilitar la llamada remota de funciones a travs
de Internet, permitiendo que dos programas se comuniquen de una manera muy similar
tcnicamente a la invocacin de pginas Web.
El protocolo SOAP tiene diversas ventajas sobre otras maneras de llamar funciones de
manera remota como DCOM, CORBA o directamente en TCP/IP:

Es sencillo de implementar, probar y usar.


Es un estndar de la industria, creado por un consorcio del cual Microsoft forma
parte, adoptado por W3C (http://www.w3.org/TR/SOAP/) y por varias otras
empresas.
Utiliza los mismos estndares de la Web para casi todo: la comunicacin se hace
mediante HTTP con paquetes virtualmente idnticos; los protocolos de
autenticacin y encriptacin son los mismos; el mantenimiento de estado se hace
de la misma forma; se implementa normalmente por el propio servidor Web.
Atraviesa "firewalls" y routers, que "piensan" que es una comunicacin HTTP.
Tanto los datos como las funciones se describen en XML, lo que permite que el
protocolo no slo sea ms fcil de utilizar sino que tambin sea muy slido.
Es independiente del sistema operativo y procesador.
Se puede utilizar tanto de forma annima como con autenticacin
(nombre/clave).

Las solicitudes SOAP se pueden hacer en tres estndares: GET, POST y SOAP. Los
estndares GET y POST son idnticos a las solicitudes hechas por navegadores de
Internet. SOAP es un estndar similar a POST, pero las solicitudes se hacen en XML y
permiten recursos ms sofisticados, como pasar estructuras y arreglos ("arrays").
Independientemente de cmo se haga la solicitud, las respuestas siempre son en XML.
XML describe perfectamente los datos en tiempo de ejecucin y evita los problemas
ocasionados por cambios inadvertidos en las funciones, ya que los objetos llamados
tienen la posibilidad de validar siempre los argumentos de las funciones, haciendo que
el protocolo sea muy slido.
As mismo, SOAP define un estndar llamado WSDL, que describe perfectamente los
objetos y mtodos disponibles a travs de pginas XML accesibles por la Web. La idea
es la siguiente: quien publica un servicio, crea tambin estas pginas. Quien quiera
llamar el servicio, puede utilizar estas pginas como "documentacin" de la llamada y
tambin utilizarlas antes de llamar las funciones para verificar si cambi algo.
SOAP se puede implementar fcilmente en casi cualquier ambiente de programacin.
Actualmente, existen diversos paquetes de desarrollo SOAP para diversos sistemas
operativos y lenguajes de alto nivel. Microsoft tiene un paquete para Visual Studio 6 en
http://msdn.microsoft.com/soap/default.asp.
SOAP es una parte importante de la arquitectura .NET de Microsoft y cuenta con
amplio soporte en Visual Studio.NET. WebService es un conjunto de mtodos
WebMethods asociados lgicamente y llamados a travs de SOAP. WebMethods son

funciones llamadas en forma remota a travs de SOAP. Cada WebService tiene dos
archivos asociados: uno con extensin "asmx" y otro con extensin "cs", si usted est
utilizando el lenguaje C#.
En la arquitectura .NET, WebServices siempre se implementa en una clase derivada de
"System.Web.Services.WebService". En esta clase agregamos las funciones (mtodos)
que sern llamadas mediante SOAP. La diferencia entre WebMethod y un mtodo
comn, es la presencia de un "atributo WebMethod", una especie de poltica de
compilacin. La pgina SDL es generada automticamente por las herramientas de
programacin.
Desde el punto de vista del programador, WebService es una pgina ASP.NET
"glorificada", que mapea los datos solicitados por la Web automticamente a mtodos
de un lenguaje de alto nivel.

Creando un servicio Web.


A continuacin, presentamos una secuencia de creacin de un WebService que crea
algunas cuentas sencillas. En primer lugar, creamos una aplicacin WebService en
Visual Studio.NET Beta 2:

Este es un proyecto ASP.NET comn. En la practica, probablemente tambin agregar


pginas ASP.NET comunes.
A continuacin escribimos el cdigo del servicio:

Vea el cdigo escrito:


[WebMethod]
public double Sum(double A, double B) {
return A + B;
}
[WebMethod]
public double Multiply(double A, double B) {
return A * B;
}

Observe el atributo [WebMethod], que indica al sistema de tiempo de ejecucin que es


un mtodo llamado a travs de HTTP. No todos los mtodos tienen que ser
WebMethods.
Todo WebService debe ser identificado de forma nica en el Universo. La manera de
hacer esto es suministrando una direccin (URL) basada en un dominio de Internet que
haya registrado usted o su empresa. Esta URL debe ser suministrada en un atributo antes
de la declaracin de la clase:
[WebService(Namespace="http://www.meudominio.com.br/WebServices/")]

Despus de pedir "Build" (crear), podemos acceder el servicio inmediatamente a travs


de un navegador Web. Pida "Debug | Start Without Debugging" (Depurar / Iniciar sin
depuracin). Las rutinas de soporte de WebServices crearn automticamente una
pgina para probar el WebService:

Seleccione algn mtodo, por ejemplo, Sum:

Llene algunos valores y vea el resultado de la prueba:

Podemos tomar la descripcin del servicio como XML, a travs del modelo "WSDL".
Esta es la manera que utilizar Visual Studio.NET para crear automticamente una clase
"proxy" que llamar el WebService:

Observe que VS.NET Beta 1 utilizaba el modelo "SDL" correspondiente a "SOAP


Toolkit 1.0", basado en una especificacin temporal del protocolo. Beta 2 utiliza el
modelo definitivo y ligeramente diferente llamado "WSDL", correspondiente a SOAP
Toolkit 2.0.

Consumiendo un Web Service.


Para consumir un WebService, Visual Studio.NET puede crear una clase "proxy" a
partir de la informacin obtenida interrogando a SDL. Vamos a crear un proyecto
"WinForms" nuevo para llamar al WebService:

Agregue dos TextBox, un Button y un ListBox:

Haga clic con el botn derecho del mouse sobre el proyecto y pida "Add Web
Reference..." (Agregar referencia Web..."):

Entre con la direccin del WebService, http://localhost/Cuentas/Service1.asmx, en este


caso. La ventana que aparece a la izquierda es un navegador Web que puede ser
utilizado normalmente para navegacin y localizacin de WebServices, enumerados a la
derecha:

Haga clic en "Add Reference" (Agregar referencia). Visual Studio.NET crear una clase
"proxy" en el proyecto. Esta clase tiene la misma sintaxis de una clase .NET, pero en
realidad est invocando el WebService.
Vea el proyecto con una "Web Reference" (Referencia Web):

Si usted tiene curiosidad, esta es la clase creada:

El cdigo que llama al WebService es el siguiente:


// Suma
private void button1_Click(object sender, System.EventArgs e) {
double N1 = Convert.ToDouble(textBox1.Text);
double N2 = Convert.ToDouble(textBox2.Text);
localhost.Service1 Contas = new localhost.Service1();
double R = Contas.Sum(N1, N2);
listBox1.Items.Add(R.ToString());
}
// Producto
private void button2_Click(object sender, System.EventArgs e) {
double N1 = Convert.ToDouble(textBox1.Text);
double N2 = Convert.ToDouble(textBox2.Text);
localhost.Service1 Contas = new localhost.Service1();
double R = Contas.Multiply(N1, N2);
listBox1.Items.Add(R.ToString());
}

Vea el programa ejecutando y llamando al WebService:

Observe que creamos un objeto tipo proxy y llamamos sus mtodos para utilizarlo. El
objeto Cuotas usado para llamar el WebService funciona de manera muy similar a un
navegador de Internet, pero sin interpretar documentos HTML. ste puede almacenar
cookies, realizar autenticacin y encriptacin, tener un nombre como "user agent"
(agente de usuario) y usar un servidor de proxy.

http://www.microsoft.com/spanish/msdn/comunidad/mt
j.net/voices/art51.asp
5.6.2 WSDL
Resumen
WSDL es un formato XML que describe los servicios de red como un
conjunto de puntos finales que procesan mensajes contenedores de
informacin orientada tanto a documentos como a procedimientos. Las
operaciones y los mensajes se describen de forma abstracta y despus se
enlazan a un protocolo de red y a un formato de mensaje concreto para

Calificar

Mi Panorama SOS
Escribe para
Nosostros

definir un punto final de red. Los puntos finales concretos relacionados se


combinan en puntos finales abstractos (servicios). WSDL es extensible, lo
que permite la descripcin de puntos finales de red y sus mensajes,
independientemente de los formatos de los mensajes o protocolos de red
utilizados para comunicarse. Sin embargo, los nicos enlaces que se
muestran en este documento describen cmo utilizar WSDL junto con
SOAP 1.1, HTTP GET/POST y MIME.

Esta versin del lenguaje WSDL es un primer paso que no incluye un marco de trabajo para describir la

composicin y organizacin de los puntos finales. Un marco de trabajo completo que describa tales
contratos debe incluir medios para componer servicios y medios para expresar el comportamiento de los
servicios, es decir, reglas de ordenacin para enviar y recibir mensajes. La composicin de servicios debe
ser de escritura segura pero tambin debe permitir pasar referencias, siendo las referencias del servicio
intercambiadas y enlazadas en tiempo de ejecucin. Este ltimo factor es clave para la negociacin de
contratos en tiempo de ejecucin y la captura del comportamiento de servicios de referencia y de
intermediarios.

Los autores de la especificacin WSDL desean publicar versiones revisadas de WSDL y/o documentos
adicionales que incluyan (1) un marco de trabajo para componer servicios y (2) un marco de trabajo para
describir el comportamiento de los servicios.

Estado
Este borrador representa la opinin actual respecto a las descripciones de servicios dentro de Ariba, IBM
y Microsoft. Consolida, adems, los conceptos encontrados en NASSL, SCL y SDL (propuestas anteriores
en este espacio).

Tabla de contenido
1 Introduccin
1.1 Ejemplo de documento WSDL
1.2 Convenciones de notacin
2 Definicin de servicio
2.1 Estructura del documento
2.1.1 Nomenclatura y vinculacin de documentos
2.1.2 Estilo de creacin
2.1.3 Extensibilidad y enlace del lenguaje
2.1.4 Documentacin
2.2 Tipos
2.3 Mensajes
2.3.1 Partes del mensaje
2.3.2 Mensajes abstractos frente a mensajes concretos
2.4 Tipos de puertos
2.4.1 Operacin unidireccional
2.4.2 Operacin de peticin-respuesta.
2.4.3 Operacin de solicitud-respuesta
2.4.4 Operacin de notificacin
2.4.5 Nombres de los elementos de una operacin
2.4.6 Orden de los parmetros de una operacin

2.5 Enlaces
2.6 Puertos
2.7 Servicios
3 Enlace SOAP
3.1 Ejemplos de SOAP
3.2 Extensin de WSDL con el enlace SOAP
3.3 soap:binding
3.4 soap:operation
3.5 soap:body
3.6 soap:fault
3.7 soap:header
3.8 soap:address
4 Enlace HTTP GET & POST
4.1 Ejemplos de HTTP GET/POST
4.2 Extensin de WSDL con el enlace HTTP GET/POST
4.3 http:address
4.4 http:binding
4.5 http:operation
4.6 http:urlEncoded
4.7 http:urlReplacement
5 Enlace MIME
5.1 Ejemplo de enlace MIME
5.2 Extensin de WSDL con el enlace MIME
5.3 mime:content
5.4 mime:multipartRelated
5.5 soap:body
5.6 mime:mimeXml
6 Referencias
A 1 Notas acerca de los URI
A 1.1 Ubicaciones de los espacios de nombres y esquemas XML
A 1.2 URI relativos
A 1.3 Generacin de URI
A 2 Ejemplos de formato de conexin para WSDL
A 2.1 Ejemplo 1
A 3 Ubicacin de elementos de extensibilidad
A 4 Esquemas
A 4.1 Esquema WSDL
A 4.2 Esquema del enlace SOAP

A 4.3 Esquema del enlace HTTP


A 4.4 Esquema del enlace MIME

1. Introduccin
Dado que los protocolos de comunicaciones y los formatos de mensajes estn estandarizados en la
comunidad del Web, cada da aumenta la posibilidad e importancia de describir las comunicaciones de
forma estructurada. WSDL afronta esta necesidad definiendo una gramtica XML que describe los
servicios de red como colecciones de puntos finales de comunicacin capaces de intercambiar mensajes.
Las definiciones de servicio de WSDL proporcionan documentacin para sistemas distribuidos y sirven
como frmula para automatizar los detalles que toman parte en la comunicacin entre aplicaciones.

Los documentos WSDL definen los servicios como colecciones de puntos finales de red o puertos. En
WSDL, la definicin abstracta de puntos finales y de mensajes se separa de la instalacin concreta de red
o de los enlaces del formato de datos. Esto permite la reutilizacin de definiciones abstractas: mensajes,
que son descripciones abstractas de los datos que se estn intercambiando y tipos de puertos, que son
colecciones abstractas de operaciones. Las especificaciones concretas del protocolo y del formato de
datos para un tipo de puerto determinado constituyen un enlace reutilizable. Un puerto se define por la
asociacin de una direccin de red y un enlace reutilizable; una coleccin de puertos define un servicio.
Por esta razn, un documento WSDL utiliza los siguientes elementos en la definicin de servicios de red:

Types: contenedor de definiciones del tipo de datos que utiliza algn sistema de tipos (por
ejemplo XSD).

Message: definicin abstracta y escrita de los datos que se estn comunicando.

Operation: descripcin abstracta de una accin admitida por el servicio.

Port Type: conjunto abstracto de operaciones admitidas por uno o ms puntos finales.

Binding: especificacin del protocolo y del formato de datos para un tipo de puerto
determinado.

Port: punto final nico que se define como la combinacin de un enlace y una direccin de red.

Service: coleccin de puntos finales relacionados.

Estos elementos se describen de forma detallada en la seccin 2. Es importante observar que WSDL no
introduce un nuevo lenguaje de definicin de tipos. WSDL reconoce la necesidad de disponer de
diferentes sistemas de tipos para describir los formatos de mensaje y admite como sistema de tipos
cannico la especificacin de los esquemas XML (XSD) [11]. Sin embargo, puesto que no es razonable
esperar una nica gramtica del sistema de tipos que se utilice para describir todos los formatos de
mensajes presentes y futuros, WSDL permite el uso de otros lenguajes de definicin de tipos mediante la
extensibilidad.

Asimismo, WSDL define los mecanismos de enlace comn. stos se utilizan para adjuntar un protocolo,
un formato de datos o una estructura especfica a un mensaje abstracto, una operacin o un punto final
de red. Permite la reutilizacin de definiciones abstractas.

Adems del marco de definicin de servicio principal, esta especificacin introduce extensiones de
enlace especficas para los siguientes protocolos y formatos de mensaje:

SOAP 1.1 (ver seccin 3)

HTTP GET / POST (ver seccin 4)

MIME (ver seccin 5)

Aunque se han definido en este documento, las extensiones de lenguaje anteriores estn en una capa
superior respecto al marco de definicin de servicio principal. Nada impide el uso de otras extensiones de
enlace con WSDL.
1.1 Ejemplo de documento WSDL
El siguiente ejemplo muestra la definicin mediante WSDL de un servicio simple que proporciona
cotizaciones de valores. El servicio admite una nica operacin llamada GetLastTradePrice, que se instala
utilizando el protocolo SOAP 1.1 sobre HTTP. La solicitud toma un smbolo de comprobacin de tipo string
y devuelve el precio como un valor de tipo float. Se puede encontrar una descripcin detallada de los
elementos utilizados en esta definicin en la seccin 2 (lenguaje principal) y la seccin 3 (enlace SOAP).

Ejemplo 1 Peticin/Respuesta de SOAP 1.1 mediante HTTP

<?xml version="1.0"?>
<definitions name="StockQuote"
targetNamespace="http://example.com/stockquote.wsdl"
xmlns:tns="http://example.com/stockquote.wsdl"
xmlns:xsd1="http://example.com/stockquote.xsd"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
<schema targetNamespace="http://example.com/stockquote.xsd"
xmlns="http://www.w3.org/1999/XMLSchema">
<element name="TradePriceRequest">
<complexType>
<all>
<element name="tickerSymbol" type="string"/>
</all>
</complexType>
</element>
<element name="TradePrice">
<complexType>
<all>
<element name="price" type="float"/>
</all>
</complexType>
</element>
</schema>
</types>

<message name="GetLastTradePriceInput">
<part name="body" element="xsd1:TradePrice"/>
</message>
<message name="GetLastTradePriceOutput">
<part name="body" element="xsd1:TradePriceResult"/>
</message>
<portType name="StockQuotePortType">
<operation name="GetLastTradePrice">
<input message="tns:GetLastTradePriceInput"/>
<output message="tns:GetLastTradePriceOutput"/>
</operation>
</portType>
<binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetLastTradePrice">
<soap:operation soapAction="http://example.com/GetLastTradePrice"/>
<input>
<soap:body use="literal"
namespace="http://example.com/stockquote.xsd"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body use="literal"
namespace="http://example.com/stockquote.xsd"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<service name="StockQuoteService">
<documentation>Mi primer servicio</documentation>
<port name="StockQuotePort" binding="tns:StockQuoteBinding">
<soap:address location="http://example.com/stockquote"/>
</port>
</service>
</definitions>
1.2 Convenciones de notacin
1. Las palabras clave "MUST" ("DEBE"), "MUST NOT" ("NO DEBE"), "REQUIRED" ("SE REQUIERE"),
"SHALL" ("DEBER"), "SHALL NOT" ("NO PODR"), "SHOULD" ("DEBERA"), "SHOULD NOT" ("NO
DEBERA"), "RECOMMENDED" ("SE RECOMIENDA"), "MAY" ("PUEDE") y "OPTIONAL" ("OPCIONAL") que
aparecen en este documento se deben interpretar como se explica en RFC-2119 [2].

2. Los siguientes prefijos de los espacios de nombres se utilizan a lo largo de todo este documento:
prefijo

URI del espacio de nombres

definicin

wsdl

http://schemas.xmlsoap.org/wsdl/

Espacio de nombres de
WSDL para el marco WSDL.

http

http://schemas.xmlsoap.org/wsdl/http/

Espacio de nombres de
WSDL para el enlace HTTP
GET & POST.

mime

http://schemas.xmlsoap.org/wsdl/mime/

Espacio de nombres de
WSDL para el enlace MIME.

xsi

http://www.w3.org/1999/XMLSchemainstance

Espacio de nombres de
instancia como se define en
XSD [11].

xsd

http://www.w3.org/1999/XMLSchema (en
ingls)

Espacio de nombres de
esquema como se define en
XSD [11].

(varios)

El prefijo tns (this


namespace, este espacio
de nombres) se utiliza de
forma convencional para
hacer referencia al
documento actual.

(varios)

Los otros prefijos de


espacio de nombres son
slo ejemplos. En particular,
los URI que comienzan con
http://example.com
representan algn URI
dependiente de aplicacin o
dependiente de contexto
[4].

tns

(otros)

3. Esta especificacin utiliza una sintaxis informal para describir la gramtica XML de los documentos
WSDL:

La sintaxis aparece como una instancia de XML, pero los valores indican tipos de datos en lugar
de valores.

Los caracteres comodn se agregan a los elementos y atributos de la siguiente forma: "?" (0 o
1), "*" (0 o ms), "+" (1 o ms).

Los nombres de elementos que acaban en "..." (tales como <element.../> o <element...>)
indican que los elementos/atributos irrelevantes en el contexto se omiten.

Hasta el momento no se ha introducido gramtica en negrita en el documento, sin embargo


resulta de especial inters en un ejemplo.

<-- extensibility element --> es un marcador de posicin para elementos de "otros" espacios de
nombres (como ##other en XSD).

Los prefijos del espacio de nombres de XML (definidos anteriormente) se utilizan para indicar el
espacio de nombres del elemento que se est definiendo.

Los ejemplos que comienzan con <?xml contienen suficiente informacin para ajustarse a esta
especificacin; otros ejemplos son fragmentos y requieren la especificacin de informacin adicional
para poder ajustarse a ella.

Los esquemas XSD se ofrecen como una definicin formal de la gramtica WSDL:

2. Definicin de servicio
Esta seccin describe los elementos principales del lenguaje WSDL. Las extensiones de enlace para SOAP,
HTTP y MIME se incluyen en las secciones 3, 4 y 5.
2.1 Estructura del documento WSDL

Un documento WSDL es simplemente un conjunto de definiciones. Hay un elemento definitions en la


raz y definiciones en su interior. La gramtica se muestra a continuacin:

<wsdl:definitions name="nmtoken"? targetNamespace="uri"?>


<import namespace="uri" location="uri"/>*
<wsdl:documentation.../> ?
<wsdl:types> ?
<wsdl:documentation.../>?
<xsd:schema.../>*
<-- extensibility element
</wsdl:types>

--> *

<wsdl:message name="nmtoken> *
<wsdl:documentation.../>?
<part name="nmtoken" element="qname"? type="qname"?/> *
</wsdl:message>
<wsdl:portType name="nmtoken">*
<wsdl:documentation.../>?
<wsdl:operation name="nmtoken">*
<wsdl:documentation.../> ?
<wsdl:input name="nmtoken"? message="qname">?
<wsdl:documentation.../> ?
</wsdl:input>
<wsdl:output name="nmtoken"? message="qname">?
<wsdl:documentation.../> ?
</wsdl:output>
<wsdl:fault name="nmtoken" message="qname"> *
<wsdl:documentation.../> ?
</wsdl:fault>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="nmtoken" type="qname">*
<wsdl:documentation.../>?
<-- extensibility element --> *
<wsdl:operation name="nmtoken">*
<wsdl:documentation.../> ?
<-- extensibility element --> *
<wsdl:input name="nmtoken"?> ?
<wsdl:documentation.../> ?
<-- extensibility element -->
</wsdl:input>
<wsdl:output name="nmtoken"?> ?
<wsdl:documentation.../> ?
<-- extensibility element --> *
</wsdl:output>
<wsdl:fault name="nmtoken"> *
<wsdl:documentation.../> ?
<-- extensibility element --> *
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="nmtoken"> *
<wsdl:documentation.../>?
<wsdl:port name="nmtoken" binding="qname"> *
<wsdl:documentation.../> ?
<-- extensibility element -->
</wsdl:port>
<-- extensibility element -->
</wsdl:service>

<-- extensibility element

--> *

</wsdl:definitions>
Los servicios se definen utilizando cinco elementos principales:

types, que proporciona definiciones del tipo de datos utilizado para describir el intercambio de
mensajes.

message, que representa una definicin abstracta de los datos que se estn transmitiendo. Un
mensaje se compone de partes lgicas, cada una de las cuales est asociada a una definicin dentro
de algn sistema de tipos.

portType, que es un conjunto de operaciones abstractas. Cada operacin hace referencia a un


mensaje entrante y a mensajes salientes.

binding, que determina las especificaciones del protocolo concreto y del formato de datos para
las operaciones y mensajes definidos por un determinado portType.

port, que especifica la direccin para un enlace, definiendo as un nico punto final de
comunicacin.

service, que se utiliza para agregar un conjunto de puertos relacionados.

Estos elementos se describen detalladamente en las secciones 2.2 a 2.7. En el resto de esta seccin se
describen las reglas introducidas por WSDL para nombrar documentos, hacer referencia a definiciones de
documentos, utilizar extensiones de lenguaje y agregar documentacin contextual.
2.1.1 Nomenclatura y vinculacin de documentos
Se puede asignar a los documentos WSDL un atributo opcional name de tipo NCNAME que agilice la
documentacin. Opcionalmente, se puede especificar un atributo targetNamespace de tipo URI. El URI
NO PUEDE (MAY NOT) ser un URI relativo.

WSDL permite la asociacin de los atributos namespace y location de un documento utilizando una
instruccin import:

<definitions...>
<import namespace="uri" location="uri"/> *
</definitions>
La resolucin de QNames en WSDL es similar a la resolucin de QNames descrita en la especificacin de
esquemas XML [11].

Al utilizar un QName (en ingls) se hace referencia a una definicin de WSDL. Se puede hacer referencia
a los siguientes tipos de definiciones que contiene un documento WSDL:

Definiciones de WSDL: service, port, message, binding y portType.

Otras definiciones: si se agregan definiciones adicionales mediante la extensibilidad, stas


DEBERAN (SHOULD) utilizar vnculos QName.

Cada tipo de definicin de WSDL enumerada anteriormente tiene su propio mbito de nombre (por
ejemplo, los nombres de puerto y los nombres de mensaje nunca entran en conflicto). Los nombres,
dentro de un mbito de nombre, DEBEN (MUST) ser nicos en un documento WSDL.
2.1.2 Estilo de creacin
El uso del elemento import permite separar los diferentes elementos de una definicin de servicio en
documentos independientes, los cuales podrn ser importados llegado el caso. Esta tcnica ayuda a
escribir definiciones de servicio ms claras, separando las definiciones en funcin del nivel de abstraccin.
Tambin maximiza la capacidad de reutilizacin de todo tipo de definiciones de servicio. En consecuencia,
los documentos WSDL estructurados de este modo son ms fciles de utilizar y mantener. El ejemplo 2,
que aparece a continuacin, muestra cmo utilizar este estilo de creacin para definir el servicio
presentado en el Ejemplo 1. Aqu se separan las definiciones en tres documentos: definiciones del tipo de
datos, definiciones abstractas y enlaces especficos del servicio. Evidentemente, el uso de este
mecanismo no se limita a las definiciones presentadas de forma explcita en el ejemplo, que utiliza slo
elementos del lenguaje definidos en esta especificacin. Tambin se pueden codificar y reutilizar, de
manera similar, otros tipos de definiciones basadas en extensiones de lenguaje adicionales.

Ejemplo 2. Estilo de creacin alternativo para el servicio del Ejemplo 1.

http://example.com/stockquote/stockquote.xsd

<?xml version="1.0"?>
<schema targetNamespace="http://example.com/stockquote/schemas"
xmlns="http://www.w3.org/1999/XMLSchema">
<element name="GetLastTradePrice">
<complexType>
<all>
<element name="tickerSymbol" type="string"/>
</all>
</complexType>
</element>
<element name="GetLastTradePriceResult">
<complexType>
<all>
<element name="result" type="float"/>
</all>
</complexType>
</element>
</schema>
http://example.com/stockquote/stockquote.wsdl

<?xml version="1.0"?>
<definitions name="StockQuote"
targetNamespace="http://example.com/stockquote/definitions"
xmlns:tns="http://example.com/stockquote/definitions"
xmlns:xsd1="http://example.com/stockquote/schemas"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<import namespace="http://example.com/stockquote/schemas"
location="http://example.com/stockquote/stockquote.xsd"/>

<message name="GetLastTradePriceRequest">
<part name="body"element="xsd1:GetLastTradePrice"/>
</message>
<message name="GetLastTradePriceResponse">
<part name="body"element="xsd1:GetLastTradePriceResult"/>
</message>
<portType name="StockQuotePortType">
<operation name="GetLastTradePrice">
<input message="tns:GetLastTradePriceRequest"/>
<output message="tns:GetLastTradePriceResponse"/>
</operation>
</portType>
</definitions>
http://example.com/stockquote/stockquoteservice.wsdl

<?xml version="1.0"?>
<definitions name="StockQuote"
targetNamespace="http://example.com/stockquote/service"
xmlns:tns="http://example.com/stockquote/service"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<import namespace="http://example.com/stockquote/definitions"
location="http://example.com/stockquote/stockquote.wsdl"/>
<binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType">
<soap:binding style="document"/>
<operation name="GetLastTradePrice">
<soap:operation soapAction="http://my.org/GetLastTradePrice"/>
</operation>>
</binding>
<service name="StockQuoteService">
<documentation>Mi primer servicio</documentation>
<port name="StockQuotePort" binding="tns:StockQuoteBinding">
<soap:address location="http://my.org/stockquote"/>
</port>
</service>
</definitions>
2.1.3 Extensibilidad y enlace del lenguaje
En WSDL el trmino enlace hace referencia al proceso que asocia informacin sobre un protocolo o
formato de datos a una entidad abstracta, como por ejemplo un mensaje, operacin o portType. WSDL
admite elementos que representan una tecnologa especfica (denominados elementos de
extensibilidad en este documento) bajo varios elementos definidos por WSDL. Estos puntos de
extensibilidad se utilizan normalmente con el fin de especificar informacin de enlace para un protocolo o
formato de mensaje determinado, pero no se limitan a dicho uso. Los elementos de extensibilidad DEBEN
(MUST) utilizar un espacio de nombres de XML distinto al de WSDL. Las ubicaciones especficas del
documento en que pueden aparecer los elementos de extensibilidad se describen de forma detallada en
el Apndice A3.

Los elementos de extensibilidad se utilizan normalmente para determinar algn enlace especfico de una
tecnologa. Con el propsito de distinguir si la semntica del enlace especfico de una tecnologa es

necesaria para la comunicacin o si, por el contrario, es opcional, los elementos de extensibilidad PUEDEN
(MAY) colocar un atributo wsdl:required de tipo booleano sobre el elemento. El valor predeterminado
para required es false. El atributo required se define en el espacio de nombres
"http://schemas.xmlsoap.org/wsdl/".

Consulte en las secciones 3, 4 y 5 los ejemplos sobre elementos de extensibilidad.


2.1.4 Documentacin
WSDL utiliza el elemento opcional wsdl:document como contenedor de documentacin que pueden leer
los usuarios. El contenido del elemento se compone de texto y elementos arbitrarios ("mixed" en XSD). El
elemento de documentacin se admite dentro de cualquier elemento del lenguaje WSDL.
2.2 Tipos
El elemento types incluye definiciones de tipos de datos que son relevantes para los mensajes
intercambiados. Para lograr una mxima interoperabilidad y neutralidad de la plataforma, WSDL prefiere
utilizar XSD como sistema de tipos cannico y lo admite como sistema de tipos intrnseco.

<definitions...>
<types>
<xsd:schema.../>*
</types>
</definitions>
El sistema de tipos de XSD se puede utilizar para definir los tipos en un mensaje, independientemente de
si el formato de conexin resultante es XML o si, por el contrario, el esquema XSD resultante valida el
particular formato de conexin. Esto es especialmente interesante si hay varios enlaces para el mismo
mensaje o si slo hay un enlace que no pertenece a un sistema de tipos de uso generalizado. En estos
casos, el mtodo recomendado para codificar tipos abstractos utilizando XSD es el siguiente:

Utilice un formulario de elemento (no de atributo).

No incluya atributos o elementos caractersticos de la codificacin de conexin (por ejemplo,


aquellos que no tengan nada que ver con el contenido abstracto del mensaje). Algunos ejemplos son
soap:root, soap:encodingStyle, xmi:id, xmi:name.

Utilice el tipo Soap:Array para modelar tipos de matrices (independientemente de si la forma


resultante emplea la codificacin especificada en la seccin 5 del documento de SOAP v1.1). Utilice
el nombre ArrayOfXXX para tipos de matrices (donde XXX corresponde al tipo de elementos de la
matriz).

Sin embargo, puesto que no es razonable esperar una nica gramtica del sistema de tipos que se utilice
para describir todos los tipos abstractos presentes y futuros, WSDL permite la agregacin de sistemas de
tipos mediante elementos de extensibilidad. Un elemento de extensibilidad puede aparecer bajo el
elemento types para identificar el sistema de definicin de tipos que se est utilizando y para
proporcionar un elemento XML contenedor de las definiciones de tipos. La funcin de este elemento es

comparable a la del elemento schema del lenguaje de los esquemas XML.

<definitions...>
<types>
<-- type-system extensibility element --> *
</types>
</definitions>
2.3 Mensajes
Los mensajes se componen de una o ms partes lgicas. Cada parte est asociada a un tipo procedente
de algn sistema de tipos que utiliza un atributo de escritura de mensajes. El conjunto de atributos de
escritura de mensajes es extensible. WSDL define varios atributos de este tipo para su uso con XSD:

element. Hace referencia a un elemento XSD que utiliza un QName.

type. Hace referencia a un tipo simpleType o complexType de XSD que utiliza un QName.

Se pueden definir otros atributos de escritura de mensajes siempre que utilicen un espacio de nombres
distinto al de WSDL. Los elementos de extensibilidad del enlace tambin pueden utilizar atributos de
escritura de mensajes.

La sintaxis para definir un mensaje se muestra a continuacin. Los atributos de escritura de mensajes
(que pueden variar segn el sistema de tipos utilizado) aparecen en negrita.

<definitions...>
<message name="nmtoken"> *
<part name="nmtoken"? element="qname" type="qname"?/> *
</message>
</definitions>
El atributo name de message proporciona un nombre nico entre todos los mensajes definidos en el
documento WSDL adjunto.

El atributo name de part proporciona un nombre nico entre todas las partes del mensaje adjunto.
2.3.1 Partes del mensaje
Las partes de un mensaje son un mecanismo flexible para describir su contenido abstracto y lgico. Un
enlace puede hacer referencia al nombre de una parte, con el fin de precisar informacin especfica de
enlaces sobre dicha parte. Por ejemplo, si se define un mensaje para su uso con RPC, una parte PUEDE
(MAY) representar un parmetro del mensaje. Sin embargo, los enlaces deben inspeccionarse para
determinar el significado real de la parte.

Los elementos de varias partes se utilizan cuando el mensaje tiene distintas unidades lgicas. Por
ejemplo, el siguiente mensaje consta de una orden de compra (PO, Purchase Order) y un cliente
(Customer).

<definitions...>
<types>

<schema...>
<element name="PO" type="tns:POType"/>
<complexType name="POType">
<element name="id" type="string/>
<element name="name" type="string"/>
<element name="items">
<complexType>
<element name="item" type="tns:Item" minOccurs="0"
maxOccurs="unbounded"/>
</complexType>
</element>
</complexType>
<complexType name="Item">
<element name="quantity" type="int"/>
<element name="product" type="string"/>
</complexType>
<element name="Customer" type="tns:CustomerType"/>
<complexType name="CustomerType">
<element name="name" type="string"/>
</complexType>
</schema>
</types>
<message name="PO">
<part name="po" element="tns:PO"/>
<part name="customer" element="tns:Customer"/>
</message>
</definitions>
Sin embargo, si los contenidos del mensaje son suficientemente complejos, se podr utilizar una sintaxis
alternativa para especificar la complicada estructura del mensaje utilizando directamente el sistema de
tipos. En el siguiente ejemplo, el cuerpo est formado por una orden de compra o por un conjunto de
clientes.

<definitions...>
<types>
<schema...>
<complexType name="POType">
<element name="id" type="string/>
<element name="name" type="string"/>
<element name="items">
<complexType>
<element name="item" type="tns:Item" minOccurs="0"
maxOccurs="unbounded"/>
</complexType>
</element>
</complexType>
<complexType name="Item">
<element name="quantity" type="int"/>
<element name="product" type="string"/>
</complexType>
<complexType name="CustomerType">
<element name="name" type="string"/>
</complexType>
<complexType name="Composite">
<choice>
<element name="PO" minOccurs="1" maxOccurs="1"
type="tns:POType"/>
<element name="Customer" minOccurs="0" maxOccurs="unbounded"
type="tns:CustomerType"/>
</choice>
</complexType>

</schema>
</types>
<message name="PO">
<part name="composite" type="tns:Composite"/>
</message>
</definitions>
2.3.2 Mensajes abstractos frente a mensajes concretos
Las definiciones de los mensajes siempre se consideran como definiciones abstractas del contenido de los
mismos. Los enlaces de mensajes describen cmo el contenido abstracto se asigna a un formato
concreto. Sin embargo, en algunos casos, la definicin abstracta puede coincidir parcial o totalmente con
la representacin concreta para uno o ms enlaces, por lo que esos enlaces ofrecern una informacin de
asignacin escasa o nula. En cambio, otros enlaces de la misma definicin de mensaje pueden requerir
una amplia informacin de asignacin. Por esta razn, hasta que los enlaces hayan sido inspeccionados
no se podr determinar el "nivel de abstraccin" del mensaje.
2.4 Tipos de puertos
Un tipo de puerto es un conjunto de operaciones abstractas y de mensajes abstractos que recibe un
nombre.

<wsdl:definitions...>
<wsdl:portType name="nmtoken">
<wsdl:operation name="nmtoken".../> *
</wsdl:portType>
</wsdl:definitions>
El atributo name de portType proporciona un nombre nico entre todos los tipos de puerto definidos en
el documento WSDL adjunto.

Mediante el atributo name se da nombre a una operacin.

WSDL tiene cuatro primitivas de transmisin que los puntos finales de red pueden admitir:

Unidireccional. El punto final recibe un mensaje.

Peticin-respuesta. El punto final recibe un mensaje y enva otro mensaje correlacionado.

Solicitud-respuesta. El punto final enva un mensaje y recibe otro mensaje relacionado.

Notificacin. El punto final enva un mensaje.

WSDL hace referencia a estas primitivas como operations. Aunque las operaciones de peticin/respuesta
y solicitud/respuesta se pueden modelar de forma abstracta utilizando dos mensajes unidireccionales,
resulta til modelarlas como tipos de operaciones primitivas debido a que:

Son muy comunes.

La secuencia se puede ser correlacionar sin necesidad de introducir ms informacin de flujo


compleja.

Algunos puntos finales slo pueden recibir mensajes si son el resultado de una operacin de
peticin-respuesta sincrnica.

Un flujo simple puede derivarse algortmicamente desde estas primitivas cuando se desee en la
definicin del flujo.

Aunque las operaciones de peticin/respuesta o solicitud/respuesta se correlacionan de forma lgica en el


documento WSDL, ciertos enlaces describen la informacin de correlacin concreta. Por ejemplo, los
mensajes de peticin y respuesta pueden intercambiarse como parte de una o dos comunicaciones en
red.

Las operaciones hacen referencia a los mensajes implicados utilizando el atributo message de tipo
QName. Este atributo sigue las reglas definidas por WSDL para la vinculacin (ver seccin 2.1.1).
2.4.1 Operacin unidireccional
La gramtica para operaciones unidireccionales se muestra a continuacin:

<wsdl:definitions...> <wsdl:portType...> *
<wsdl:operation name="nmtoken">
<wsdl:input name="nmtoken"? message="qname"/>
</wsdl:operation>
</wsdl:portType >
</wsdl:definitions>
El elemento input especifica el formato de mensaje abstracto para la operacin unidireccional.
2.4.2 Operacin de peticin-respuesta
La gramtica para operaciones de peticin-respuesta se muestra a continuacin:

<wsdl:definitions...>
<wsdl:portType...> *
<wsdl:operation name="nmtoken" parameterOrder="nmtokens">
<wsdl:input name="nmtoken"? message="qname"/>
<wsdl:output name="nmtoken"? message="qname"/>
<wsdl:fault name="nmtoken" message="qname"/>*
</wsdl:operation>
</wsdl:portType >
</wsdl:definitions>
Los elementos input y output especifican el formato de mensaje abstracto para la peticin y la respuesta,
respectivamente. Los elementos fault opcionales especifican el formato de mensaje abstracto para
cualquier mensaje de error que pueda producirse como resultado de la operacin (adems de los
especficos del protocolo).

Observe que la operacin de peticin-respuesta es abstracta; es necesario consultar un enlace concreto


para determinar cmo se envan los mensajes dentro de una comunicacin nica (por ejemplo una
peticin/respuesta HTTP) o dos comunicaciones independientes (por ejemplo dos peticiones HTTP).
2.4.3 Operacin de solicitud-respuesta
La gramtica para operaciones de solicitud-respuesta se muestra a continuacin:

<wsdl:definitions...>
<wsdl:portType...> *
<wsdl:operation name="nmtoken" parameterOrder="nmtokens">
<wsdl:output name="nmtoken"? message="qname"/>
<wsdl:input name="nmtoken"? message="qname"/>
<wsdl:fault name="nmtoken" message="qname"/>*
</wsdl:operation>
</wsdl:portType >
</wsdl:definitions>
Los elementos input y output especifican el formato de mensaje abstracto para la solicitud y la respuesta
requeridas, respectivamente. Los elementos fault opcionales especifican el formato de mensaje abstracto
para cualquier mensaje de error que pueda producirse como resultado de la operacin (adems de los
especficos del protocolo).

Observe que la operacin de peticin-respuesta es abstracta; es necesario consultar un enlace concreto


para determinar cmo se envan los mensajes dentro de una comunicacin nica (por ejemplo una
peticin/respuesta HTTP) o dos comunicaciones independientes (por ejemplo dos peticiones HTTP).
2.4.4 Operacin de notificacin
La gramtica para operaciones unidireccionales se muestra a continuacin:

<wsdl:definitions...>
<wsdl:portType...> *
<wsdl:operation name="nmtoken">
<wsdl:output name="nmtoken"? message="qname"/>
</wsdl:operation>
</wsdl:portType >
</wsdl:definitions>
El elemento output especifica el formato de mensaje abstracto para la operacin de notificacin.
2.4.5 Nombres de los elementos de una operacin
El atributo name de los elementos input y output proporciona un nombre nico entre todos los
elementos de entrada y salida dentro del tipo de puerto adjunto.

Para evitar tener que nombrar cada elemento de entrada y salida de una operacin, WSDL proporciona
algunos valores predeterminados basados en el nombre de la operacin. Si no se especifica el atributo de
nombre en un mensaje unidireccional o de notificacin, se establecer como valor predeterminado el
nombre de la operacin. Si el atributo de nombre no se especifica en los mensajes entrantes o salientes
de una operacin de peticin-respuesta o solicitud-respuesta, se establecer como valor predeterminado
el nombre de la operacin, adjuntando "Peticin"/"Solicitud" o "Respuesta", respectivamente.

Se debe asignar un nombre a cada elemento de error para permitir a los enlaces especificar el formato
concreto del mensaje de error. El nombre del elemento de error es nico dentro del conjunto de errores
definidos para la operacin.
2.4.6 Orden de los parmetros de una operacin
Las operaciones no especifican si deben o no utilizarse con enlaces de tipo RPC. Sin embargo, cuando se

utiliza una operacin con un enlace RPC, conviene ser capaz de capturar la firma de la funcin de RPC
original. Por esta razn, las operaciones de peticin-respuesta o solicitud-respuesta PUEDEN (MAY)
especificar una lista de nombres de parmetros mediante el atributo parameterOrder (de tipo
nmtokens). El valor del atributo es una lista de nombres de las distintas partes del mensaje separados
por un solo espacio. Las partes designadas DEBEN (MUST) seguir las reglas que se especifican a
continuacin:

El orden en que se asignan nombres a las partes refleja el orden de los parmetros en la firma
de RPC

La parte del valor return no se presenta en la lista

Si un nombre de pieza aparece tanto en el mensaje entrante como en el saliente, se trata de un


parmetro in/out

Si un nombre de pieza aparece slo en el mensaje entrante, se trata de un parmetro in

Si un nombre de pieza aparece slo en el mensaje saliente, se trata de un parmetro out

Observe que esta informacin sirve de "sugerencia" y puede obviarse sin problema si no se est
interesado en el tema de las firmas de RPC. Adems, no se requiere estar presente, incluso si la
operacin se va a utilizar con un enlace de tipo RPC.
2.5 Enlaces
Los enlaces determinan el formato de mensaje y los detalles de protocolo de las operaciones y mensajes
definidos por un portType determinado. Puede haber un nmero indeterminado de enlaces para un
portType concreto. La gramtica para enlaces se muestra a continuacin:

<wsdl:definitions...>
<wsdl:binding name="nmtoken" type="qname"> *
<-- extensibility element (1) --> *
<wsdl:operation name="nmtoken"> *
<-- extensibility element (2) --> *
<wsdl:input name="nmtoken"?> ?
<-- extensibility element (3) -->
</wsdl:input>
<wsdl:output name="nmtoken"?> ?
<-- extensibility element (4) --> *
</wsdl:output>
<wsdl:fault name="nmtoken"> *
<-- extensibility element (5) --> *
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
</wsdl:definitions>
El atributo name proporciona un nombre nico entre todos los enlaces definidos en el documento WSDL
adjunto.

Los enlaces hacen referencia al portType que enlazan utilizando el atributo type. Este valor QName sigue
las reglas de vinculacin definidas por WSDL (ver seccin 2.1.1).

Las operaciones de enlace y los elementos de entrada, salida y error se correlacionan con los elementos
portType correspondientes utilizando el atributo name de cada elemento y se comportan exactamente
igual que en portType (ver seccin 2.4.5).

Los elementos de extensibilidad del enlace se utilizan para especificar la gramtica concreta para los
mensajes entrantes (3), salientes (4) y de error (5). Tambin es necesario suministrar informacin de
enlace por operacin (2) as como informacin por enlace (1).

Los enlaces DEBEN (MUST) especificar exactamente un protocolo.

Los enlaces NO PUEDEN (MAY NOT) especificar informacin de direccin.


2.6 Puertos
Un puerto define un punto final de red individual especificando una direccin nica para un enlace.

<wsdl:definitions...>
<wsdl:service...> *
<wsdl:port name="nmtoken" binding="qname"> *
<-- extensibility element (1) -->
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
El atributo name proporciona un nombre nico entre todos los puertos definidos en el documento WSDL
adjunto.

El atributo binding (de tipo QName) hace referencia al enlace que utiliza las reglas de vinculacin
definidas por WSDL (ver seccin 2.1.1).

Los elementos de extensibilidad del enlace (1) suelen especificar la informacin de direccin para el
puerto.

Un puerto NO PUEDE (MAY NOT) especificar ms de una direccin.

Un puerto NO PUEDE (MAY NOT) especificar ningn tipo de informacin de enlace distinta a la
informacin de direccin.
2.7 Servicios
Un servicio agrupa un conjunto de puertos relacionados:

<wsdl:definitions...>
<wsdl:service name="nmtoken"> *
<wsdl:port.../>*
</wsdl:service>
</wsdl:definitions>
El atributo name proporciona un nombre nico entre todos los servicios definidos en el documento WSDL
adjunto.

Los puertos de un servicio tienen las siguientes relaciones:

Ningn puerto se comunica con los otros (por ejemplo, la salida de un puerto no es la entrada
de otro).

Si un servicio tiene varios puertos del mismo tipo, pero emplean enlaces o direcciones distintas,
los puertos sern alternativas. Cada puerto presenta un comportamiento semnticamente
equivalente (dentro de las limitaciones de transporte y formato de mensaje impuestas por cada
enlace). Esto permite a un cliente de un documento WSDL elegir determinados puertos con los que
comunicarse basndose en ciertos criterios (protocolo, distancia, etc.).

Podemos determinar los tipos de puertos de un servicio mediante el examen de los mismos. Esto
permite a un consumidor de un documento WSDL determinar si desea comunicarse con un servicio
en particular, basndose en si admite o no distintos tipos de puertos. Esto resulta til si existe
alguna relacin implcita entre las operaciones de los tipos de puertos y si todo el conjunto de tipos
de puertos debe estar presente para cumplir una tarea determinada.

3. Enlace SOAP
WSDL incluye un enlace para los puntos finales de red de SOAP 1.1 que admite la siguiente informacin
especfica de protocolo:

La indicacin de que un enlace est vinculado al protocolo SOAP 1.1

Un mtodo para especificar una direccin para un punto final de SOAP

El URI del encabezado HTTP de SOAPAction para el enlace HTTP de SOAP

Una lista de definiciones de encabezados que se transmiten como parte del sobre de SOAP

Un mtodo para especificar las races de SOAP en XSD

Esta gramtica de enlaces ha dejado de ser una especificacin exhaustiva dada la evolucin del conjunto
de enlaces SOAP. Nada impide que algunos enlaces SOAP adicionales deriven de partes de esta
gramtica. Por ejemplo:

Los enlaces SOAP que no utilizan un esquema de direccionamiento de URI pueden sustituir otro
esquema de direccionamiento reemplazando el elemento soap:address definido en la seccin 3.8.

Los enlaces SOAP que no requieren SOAPAction omiten el atributo soapAction definido en la
seccin 3.4.

3.1 Ejemplos de SOAP


En el siguiente ejemplo se enva un mensaje unidireccional SubscribeToQuotes de SOAP 1.1 a un servicio
StockQuote mediante un enlace SMTP. La peticin toma un smbolo de comprobacin de tipo string e
incluye un encabezado que define el URI de subscripcin.

Ejemplo 3. Enlace SOAP de operacin unidireccional sobre SMTP que utiliza un encabezado de
SOAP

<?xml version="1.0"?>
<definitions name="StockQuote"
targetNamespace="http://example.com/stockquote.wsdl"
xmlns:tns="http://example.com/stockquote.wsdl"
xmlns:xsd1="http://example.com/stockquote.xsd"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<message name="SubscribeToQuotes">
<part name="body" element="xsd1:SubscribeToQuotes"/>
</message>
<portType name="StockQuotePortType">
<operation name="SubscribeToQuotes">
<input message="tns:SubscribeToQuotes"/>
</operation>
</portType>
<binding name="StockQuoteSoap" type="tns:StockQuotePortType">
<soap:binding style="document" transport="http://example.com/smtp"/>
<operation name="SubscribeToQuotes">
<input message="tns:SubscribeToQuotes">
<soap:header element="xsd1:SubscriptionHeader"/>
</input>
</operation>
</binding>
<service name="StockQuoteService">
<port name="StockQuotePort" binding="tns:StockQuoteSoap">
<soap:address location="mailto://subscribe@example.com"/>
</port>
</service>
<types>
<schema targetNamespace="http://example.com/stockquote.xsd"
xmlns="http://www.w3.org/1999/XMLSchema">
<element name="SubscribeToQuotes">
<complexType>
<all>
<element name="tickerSymbol" type="string"/>
</all>
</complexType>
</element>
<element name="SubscriptionHeader" type="uriReference"/>
</schema>
</types>
</definitions>
Este ejemplo muestra como una peticin GetLastTradePrice de SOAP 1.1 se puede enviar a un servicio
StockQuote mediante el enlace HTTP de SOAP 1.1. La peticin toma un smbolo de comprobacin de tipo
string, una hora de tipo timeInstant y devuelve el precio como un valor float en la respuesta de SOAP.

Ejemplo 4. Enlace SOAP de operacin RPC de peticin-respuesta sobre HTTP

<?xml version="1.0"?>
<definitions name="StockQuote"
targetNamespace="http://example.com/stockquote.wsdl"
xmlns:tns="http://example.com/stockquote.wsdl"

xmlns:xsd1="http://example.com/stockquote.xsd"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<message name="GetLastTradePriceRequest">
<part name="tickerSymbol" element="xsd:string"/>
<part name="time" element="xsd:timeInstant"/>
</message>
<message name="GetLastTradePriceResponse">
<part name="result" type="xsd:float"/>
</message>
<portType name="StockQuotePortType">
<operation name="GetLastTradePrice">
<input message="tns:GetLastTradePriceRequest"/>
<output message="tns:GetLastTradePriceResponse"/>
</operation>
</portType>
<binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetLastTradePrice">
<soap:operation soapAction="http://example.com/GetLastTradePrice"/>
<input>
<soap:body use="encoded"
namespace="http://example.com/stockquote"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body use="encoded"
namespace="http://example.com/stockquote"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>>
</binding>
<service name="StockQuoteService">
<documentation>Mi primer servicio</documentation>
<port name="StockQuotePort" binding="tns:StockQuoteBinding">
<soap:address location="http://example.com/stockquote"/>
</port>
</service>
</definitions>
3.2 Extensin de WSDL con el enlace SOAP
El enlace SOAP extiende WSDL con los siguientes elementos de extensin:

<definitions...>
<binding...>
<soap:binding style="rpc|document" transport="uri">
<operation...>
<soap:operation soapAction="uri"? style="rpc|document"?>?
<input>
<soap:body parts="nmtokens"? use="literal|encoded"
encodingStyle="uri-list"? namespace="uri"?>
<soap:header element="qname" fault="qname"?>*
</input>
<output>
<soap:body parts="nmtokens"? use="literal|encoded"
encodingStyle="uri-list"? namespace="uri"?>
<soap:header element="qname" fault="qname"?>*
</output>

<fault>*
<soap:fault name="nmtoken" use="literal|encoded"
encodingStyle="uri-list"? namespace="uri"?>
</fault>
</operation>
</binding>
<port...>
<soap:address location="uri"/>
</port>
</definitions>
Cada elemento de extensin del enlace SOAP se trata en secciones posteriores.
3.3 soap:binding
El objetivo del elemento de enlace SOAP es indicar que el enlace est vinculado al formato de protocolo
SOAP: sobre, encabezado y cuerpo. Este elemento no hace ninguna referencia a la codificacin o formato
del mensaje (por ejemplo, que sigue necesariamente la seccin 5 de la especificacin de SOAP 1.1).

El elemento soap:binding DEBE (MUST) estar presente cuando se utilice el enlace SOAP.

<definitions...>
<binding...>
<soap:binding transport="uri"? style="rpc|document"?>
</binding>
</definitions>
La valor del atributo style es el predeterminado para el atributo style de cada operacin incluida. Si se
omite el atributo style, se considerar como tal al elemento "document".Consulte la seccin 3.4 para
obtener ms informacin sobre la semntica de style.

El valor del atributo requerido transport indica a qu transporte de SOAP corresponde este enlace. El
valor de URI http://schemas.xmlsoap.org/soap/http corresponde al enlace HTTP en la
especificacin de SOAP. Se pueden utilizar otros URI para indicar otros transportes (tales como SMTP,
FTP, etc.).
3.4 soap:operation
El elemento soap:operation ofrece informacin de la operacin en conjunto.

<definitions...>
<binding...>
<operation...>
<soap:operation soapAction="uri"? style="rpc|document"?>
</operation>
</binding>
</definitions>
El atributo style indica si la operacin est orientada a RPC (mensajes que contienen parmetros y
valores de retorno) u orientada a documento (mensaje que contiene documentos). Esta informacin
puede utilizarse para seleccionar un modelo de programacin adecuado. Si no se especifica el atributo, se
establecer como valor predeterminado el especificado en el elemento soap:binding. Si el elemento
soap:binding no especifica un estilo, se considerar como tal al elemento "document".

El atributo soapAction especifica el valor del encabezado de SOAPAction para esta operacin. Este valor
de URI debera utilizarse directamente como valor del encabezado de SOAPAction; al hacer la peticin, no
se debe intentar convertir un valor relativo de URI en valor absoluto. Dicho valor se requiere para el
enlace de protocolo HTTP de SOAP (no tiene un valor predeterminado). Para otros enlaces de protocolo
SOAP, tal valor NO PUEDE (MAY NOT) haberse especificado y el elemento soap:operation PUEDE (MAY)
omitirse.
3.5 soap:body
El elemento soap:body especifica cmo aparecen las partes de un mensaje en el elemento SOAP Body.

Las partes de un mensaje pueden ser definiciones abstractas de tipos o bien definiciones concretas de
esquemas. En el caso de las definiciones abstractas, los tipos aparecen en serie conforme a un conjunto
de reglas definidas por un estilo de codificacin. Cada estilo de codificacin se identifica mediante una
lista de URI, como ocurre en la especificacin de SOAP. Puesto que algunos estilos de codificacin, tales
como la codificacin SOAP (http://schemas.xmlsoap.org/soap/encoding/), admiten variaciones en el
formato de los mensajes para un conjunto determinado de tipos abstractos, estar en manos del lector
del mensaje comprender todas las variaciones de formato: "el lector acta correctamente". Para evitar
tener que admitir todas las variaciones, se puede definir un mensaje de forma concreta y despus indicar,
a ttulo informativo, su estilo de codificacin original (si existe). En este caso, el creador del mensaje
debe ajustarse exactamente al esquema especificado: "el escritor acta correctamente".

El elemento soap:body se utiliza para definir tanto mensajes orientados a RPC como mensajes orientados
a documento. Si el estilo de la operacin padre es "rpc", cada parte es un parmetro o valor de retorno y
aparece dentro de un elemento empaquetador en Body (ver seccin 7.1 de la especificacin de SOAP). Si
el estilo es "document", cada parte es un documento y aparece directamente dentro de Body. Se utilizan
los mismos mecanismos para definir los contenidos de estos dos elementos (Body o elemento
empaquetador).

<definitions...>
<binding...>
<operation...>
<input>
<soap:body parts="nmtokens"? use="literal|encoded"?
encodingStyle="uri-list"? namespace="uri"?>
</input>
<output>
<soap:body parts="nmtokens"? use="literal|encoded"?
encodingStyle="uri-list"? namespace="uri"?>
</output>
</operation>
</binding>
</definitions>
El atributo opcional parts de tipo nmtokens indica qu partes aparecen en algn lugar dentro de la
porcin SOAP Body del mensaje (otras partes del mensaje pueden aparecer en otras porciones del
mensaje, como por ejemplo cuando SOAP se utiliza junto con el enlace MIME multiparte/relacionado). Si

se omite el atributo parts, se considerar que todas las partes definidas por el mensaje se incluyen en la
porcin SOAP Body.

El atributo requerido use indica si las partes del mensaje se codifican utilizando reglas de codificacin o
si, por el contrario, las partes han definido el esquema concreto del mensaje.

Si el valor del atributo use es encoded, entonces cada parte del mensaje hace referencia a un tipo
abstracto utilizando el atributo type. Estos tipos abstractos se utilizan para producir un mensaje concreto
aplicando una codificacin determinada por el atributo encodingStyle. Las partes names, types y el
valor del atributo namespace son entradas para la codificacin, aunque el atributo namespace slo se
refiere al contenido no definido explcitamente por los tipos abstractos. Si el estilo de codificacin
mencionado admite variaciones en su formato (como ocurre con la codificacin SOAP), entonces, todas
las variaciones DEBEN (MUST) ser admitidas ("el lector acta correctamente").

Si el valor del atributo use es literal, entonces cada parte hace referencia a un esquema concreto
utilizando el atributo element para partes simples o el atributo type para partes compuestas (ver
seccin 2.3.1). El valor del atributo encodingStyle PUEDE (MAY) utilizarse para indicar que el formato
concreto deriva del uso de una determinada codificacin (como por ejemplo la codificacin SOAP), pero
que slo se admite la variacin especificada ("el escritor acta correctamente").

El valor del atributo encodingStyle es una lista de URI, separados por un solo espacio. Los URI
representan codificaciones que se emplean en el mensaje, en orden de mayor a menor grado de
restriccin (exactamente igual que el atributo encodingStyle definido en la especificacin de SOAP).
3.6 soap:fault
El elemento soap:fault especifica el contenido del elemento SOAP Fault Details. Se crea segn el modelo
del elemento soap:body (ver seccin 3.5).

<definitions...>
<binding...>
<operation...>
<fault>*
<soap:fault name="nmtoken" use="literal|encoded"
encodingStyle="uri-list"? namespace="uri"?>
</fault>
</operation>
</binding>
</definitions>
El atributo name relaciona soap:fault con el elemento wsdl:fault definido para la operacin.

El mensaje de error DEBE (MUST) tener una nica parte. Los atributos use, encodingStyle y
namespace se utilizan del mismo modo que con soap:body (ver seccin 3.5).
3.7 soap:header
El elemento soap:header permite definir los encabezados que se transmitirn dentro del elemento Header

del sobre de SOAP. No es necesario hacer una lista exhaustiva de todos los encabezados en esta seccin.
Puede ser comn el que otras especificaciones del documento WSDL provoquen la agregacin de
encabezados a la carga real, por lo que no se requiere hacer una lista de todos esos encabezados aqu.

<definitions...>
<binding...>
<operation...>
<input>
<soap:header element="qname" fault="qname"?>*
</input>
<output>
<soap:header element="qname" fault="qname"?>*
</output>
</operation>
</binding>
</definitions>
El atributo element (de tipo QName) hace referencia al esquema concreto del elemento header. El
esquema para un encabezado NO PUEDE (MAY NOT) incluir definiciones de los atributos soap:actor y
soap:mustUnderstand.

El atributo opcional fault (similar al atributo element) permite la especificacin del esquema concreto
para el encabezado en caso de error relativo al mismo. La especificacin de SOAP establece que los
errores referentes a los encabezados deben devolverse en encabezados y que este mecanismo permite la
especificacin del esquema para tales encabezados.
3.8 soap:address
El enlace de direccin SOAP se utiliza para asignar una direccin a un puerto (un URI). Un puerto que
utilice el enlace SOAP DEBE (MUST) especificar una direccin exacta.

<definitions...>
<port...>
<binding...>
<soap:address location="uri"/>
</binding>
</port>
</definitions>
4. Enlace HTTP GET & POST
WSDL incluye un enlace para los verbos GET y POST de HTTP 1.1 con el fin de describir la interaccin
entre un explorador Web y un sitio Web. Esto permite que otras aplicaciones distintas de los exploradores
Web puedan interactuar con el sitio. Se debe determinar la siguiente informacin especfica de protocolo:

Una indicacin de que el enlace utiliza HTTP GET o POST

Una direccin para el puerto

Una direccin relativa para cada operacin (relativa a la direccin base definida por el puerto)

4.1 Ejemplos de HTTP GET/POST

El siguiente ejemplo muestra tres puertos enlazados de forma distinta para un tipo de puerto
determinado.

Si los valores que se pasan son part1=1, part2=2, part3=3, el formato de solicitud para cada puerto ser
el siguiente:

port1: GET, URL="http://example.com/o1/A1B2/3"


port2: GET, URL="http://example.com/o1?p1=1&p2=2&p3=3
port3: POST, URL="http://example.com/o1", PAYLOAD="p1=1&p2=2&p3=3"
Para cada puerto, la respuesta es una imagen GIF o bien JPEG.

Ejemplo 5. GET y FORM POST devuelven GIF o JPG

<definitions...>
<message name="m1">
<part name="part1" type="xsd:string"/>
<part name="part2" type="xsd:int"/>
<part name="part3" type="xsd:string"/>
</message>
<message name="m2">
<part name="image" type="xsd:binary"/>
</message>
<portType name="pt1">
<operation name="o1">
<input message="tns:m1"/>
<output message="tns:m2"/>
</operation>
</portType>
<service name="service1">
<port name="port1" binding="tns:b1">
<http:address location="http://example.com/"/>
</port>
<port name="port2" binding="tns:b1">
<http:address location="http://example.com/"/>
</port>
<port name="port3" binding="tns:b1">
<http:address location="http://example.com/"/>
</port>
</service>
<binding name="b1" type="pt1">
<http:binding verb="GET"/>
<operation name="o1">
<http:operation location="o1/A(part1)B(part2)/(part3)"/>
<input>
<http:urlReplacement/>
</input>
<output>
<mime:content type="image/gif"/>
<mime:content type="image/jpeg"/>
</output>
</operation>
</binding>
<binding name="b2" type="pt1">
<http:binding verb="GET"/>
<operation name="o1">
<http:operation location="o1"/>

<input>
<http:urlEncoded/>
</input>
<output>
<mime:content type="image/gif"/>
<mime:content type="image/jpeg"/>
</output>
</operation>
</binding>
<binding name="b3" type="pt1">
<http:binding verb="POST"/>
<operation name="o1">
<http:operation location="o1"/>
<input>
<mime:content type="application/x-www-form-urlencoded"/>
</input>
<output>
<mime:content type="image/gif"/>
<mime:content type="image/jpeg"/>
</output>
</operation>
</binding>
</definitions>
4.2 Extensin de WSDL con el enlace HTTP GET/POST
El enlace HTTP GET/POST extiende WSDL con los siguientes elementos de extensin:

<definitions...>
<binding...>
<http:binding verb="nmtoken"/>
<operation...>
<http:operation location="uri"/>
<input...>
<-- mime elements -->
</input>
<output...>
<-- mime elements -->
</output>
</operation>
</binding>
<port...>
<http:address location="uri"/>
</port>
</definitions>
Estos elementos se tratan en secciones posteriores.
4.3 http:address
El atributo location especifica el URI base para el puerto. El valor del atributo se combina con los valores
del atributo location del elemento de enlace http:operation. Para obtener ms detalles consulte la seccin
4.5.
4.4 http:binding
El elemento http:binding indica que este enlace utiliza el protocolo HTTP.

<definitions...>
<binding...>
<http:binding verb="nmtoken"/>
</binding>

</definitions>
El valor del atributo requerido verb indica el verbo de HTTP. Algunos valores comunes son GET o POST,
pero se pueden utilizar otros. Observe que los verbos de HTTP distinguen entre maysculas y minsculas.
4.5 http:operation
El atributo location especifica un URI relativo para la operacin. Este URI se combina con el URI
especificado en el elemento http:address para formar el URI completo de la solicitud HTTP. El valor de
URI DEBE (MUST) ser un URI relativo.

<definitions...>
<binding...>
<operation...>
<http:operation location="uri"/>
</operation>
</binding>
</definitions>
4.6 http:urlEncoded
El elemento urlEncoded indica que todas las partes de un mensaje estn codificadas en el URI de la
solicitud HTTP, utilizando las reglas de codificacin URI estndar (nombre1=valor&nombre2=valor...). Los
nombres de los parmetros corresponden a los nombres de las partes del mensaje. Cada valor ofrecido
por una parte se codifica mediante un par nombre=valor. Puede utilizarse con GET para especificar la
codificacin URL o con POST para especificar un FORM-POST. Para GET, el carcter "?" se adjunta
automticamente segn sea necesario.

<http:urlEncoded/>
Para obtener ms informacin sobre las reglas de los parmetros de codificacin URI, consulte [5], [6] y
[7].
4.7 http:urlReplacement
El elemento http:urlReplacement indica que todas las partes del mensaje se codifican en la solicitud
HTTP, utilizando un algoritmo de sustitucin:

Un conjunto de patrones de bsqueda investiga el valor del URI relativo de http:operation.

La bsqueda tiene lugar antes de que el valor de http:operation se combine con el valor del
atributo location de http:address.

Hay un patrn de bsqueda para cada parte del mensaje. La cadena de patrn de bsqueda es
el nombre de cada parte del mensaje, que debe ir entre parntesis "(" y ")".

El valor de la parte del mensaje correspondiente se sustituye por el de cada coincidencia en la


ubicacin de la misma.

Las coincidencias se realizan antes de que se sustituya cualquier valor (los valores reemplazados
no desencadenarn coincidencias adicionales).

Las partes del mensaje NO PUEDEN (MAY NOT) tener valores repetitivos.

<http:urlReplacement/>
5. Enlace MIME
WSDL incluye un mtodo para enlazar tipos abstractos a mensajes concretos en formato MIME. Se
definen algunos enlaces para los siguientes tipos MIME:

multipart/related

text/xml

application/x-www-form-urlencoded (formato que se utiliza para enviar un formulario en HTML)

Otros (especificando el tipo string de MIME)

El amplio conjunto de tipos MIME definidos est en continua evolucin, por lo que no compete a WSDL
definir exhaustivamente una gramtica XML para cada tipo MIME. Nada impide que se agreguen
gramticas adicionales para definir tipos MIME adicionales segn sea necesario. Si un tipo string de MIME
es suficiente para describir el contenido, se podr utilizar el elemento mime definido a continuacin.
5.1 Ejemplo de enlace MIME
Ejemplo 7. Utilizando multipart/related con SOAP

Este ejemplo describe cmo puede enviarse una solicitud GetCompanyInfo de SOAP 1.1 a un servicio
StockQuote mediante el enlace HTTP de SOAP 1.1. La solicitud toma un smbolo de comprobacin de tipo
string. La respuesta contiene varias partes codificadas en formato MIME multipart/related: un sobre de
SOAP que contiene la cotizacin de mercado actual como un float, cero o ms documentos sobre
mercadotecnia en formato HTML y un logotipo de empresa opcional en formato GIF o bien JPEG.

<definitions...>
<types>
<schema...>
<element name="GetCompanyInfo">
<complexType>
<all>
<element name="tickerSymbol " type="string"/>
</all>
</complexType>
</element>
<element name="GetCompanyInfoResult">
<complexType>
<all>
<element name="result" type="float"/>
</all>
</complexType>
</element>
<complexType name="ArrayOfBinary" base="soap:Array">
<all>
<element name="value" type="xsd:binary"/>
</all>
</complexType>
</schema>
</types>
<message name="m1">

<part name="body" element="tns:GetCompanyInfo"/>


</message>
<message name="m2">
<part name="body" element="tns:GetCompanyInfoResult"/>
<part name="docs" type="xsd:string"/>
<part name="logo" type="tns:ArrayOfBinary"/>
</message>
<portType name="pt1">
<operation name="GetCompanyInfo">
<input message="m1"/>
<output message="m2"/>
</operation>
</portType>
<binding name="b1" type="tns:pt1">
<operation name="GetCompanyInfo">
<soap:operation soapAction="http://example.com/GetCompanyInfo"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<mime:multipartRelated>
<mime:part>
<soap:body parts="body" use="literal"/>
</mime:part>
<mime:part>
<mime:content part="docs" type="text/html"/>
</mime:part>
<mime:part>
<mime:content part="logo" type="image/gif"/>
<mime:content part="logo" type="image/jpeg"/>
</mime:part>
</mime:multipartRelated>
</output>
</operation>
</binding>
<service name="CompanyInfoService">
<port name="CompanyInfoPort"binding="tns:b1">
<soap:address location="http://example.com/companyinfo"/>
</port>
</service>
</definitions>
5.2 Extensin de WSDL con el enlace MIME
El enlace MIME extiende WSDL con los siguientes elementos de extensin:

<mime:content part="nmtoken"? type="string"?/>


<mime:multipartRelated>
<mime:part> *
<-- mime element -->
</mime:part>
</mime:multipartRelated>
<mime:mimeXml part="nmtoken"?/>
Se utilizan en la siguiente ubicacin de WSDL:

<definitions...>
<binding...>
<operation...>
<input...>
<-- mime elements -->

</input>
<output...>
<-- mime elements
</output>
</operation>
</binding>
</definitions>

-->

Los elementos MIME aparecen bajo input y output para especificar el formato MIME. Si aparecen varios,
se considerarn como alternativas.
5.3 mime:content
Para evitar tener que definir un nuevo elemento para cada formato MIME, el elemento mime:content
puede utilizarse si no es necesario transmitir informacin adicional relativa a un formato distinto del tipo
string de MIME.

<mime:content part="nmtoken"? type="string"?/>


El atributo part se utiliza para especificar el nombre de cada parte del mensaje. Si el mensaje tiene una
nica parte, entonces el atributo part es opcional. El atributo type contiene el tipo string de MIME. Los
valores de type tienen dos porciones, separadas por una barra diagonal (/), pudiendo ser cualquiera de
ellas un comodn (*). La no especificacin del atributo type indica que se aceptan todos los tipos MIME.

Si el formato devuelto es XML, pero no se conoce el esquema con anterioridad, el elemento mime
genrico puede utilizarse indicando text/xml:

<mime:content type="text/xml"/>
El comodn (*) puede utilizarse para especificar una familia de tipos mime, por ejemplo todos los tipos de
texto.

<mime:content type="text/*"/>
Los dos ejemplos siguientes especifican todos los tipos mime:

<mime:content type="*/*"/>
<mime:content/>
5.4 mime:multipartRelated
El tipo MIME multipart/related agrega un conjunto arbitrario de secciones MIME formateadas a un
mensaje, utilizando el tipo MIME "multipart/related". El elemento mime:multipartRelated describe el
formato concreto de tal mensaje:

<mime:multipartRelated>
<mime:part> *
<-- mime element -->
</mime:part>
</mime:multipartRelated>
El elemento mime:part describe cada parte de un mensaje multipart/related. Los elementos MIME
aparecen dentro de mime:part para especificar el tipo MIME concreto para cada parte. Si aparece ms
de un elemento MIME dentro de mime:part, se considerarn como alternativas.

5.5 soap:body
Cuando se utiliza el enlace MIME con las solicitudes SOAP, es lcito utilizar el elemento soap:body como
un elemento MIME. Esto indica que el tipo de contenido es "text/xml" y se adjunta un sobre de SOAP.
5.6 mime:mimeXml
Para especificar las cargas XML no compatibles con SOAP (es decir, no tienen un sobre de SOAP), pero
que tienen un esquema particular, el elemento mime:mimeXml puede utilizarse para especificar ese
esquema concreto. El atributo part hace referencia a una parte del mensaje, definiendo el mensaje
concreto del elemento XML raz. El atributo part PUEDE (MAY) omitirse si el mensaje tiene una nica
parte. El atributo part hace referencia a un esquema concreto utilizando el atributo element para partes
simples o type para partes compuestas (ver seccin 2.3.1).

<mime:mimeXml part="nmtoken"?/>
6. Referencias
[2] S. Bradner, "Key words for use in RFCs to Indicate Requirement Levels", RFC 2119, Harvard
University, Marzo 1997 (en ingls)

[4] T. Berners-Lee, R. Fielding, L. Masinter, "Uniform Resource Identifiers (URI): Generic Syntax", RFC
2396, MIT/LCS, U.C. Irvine, Xerox Corporation, Agosto 1998 (en ingls).

[5] http://www.w3.org/TR/html401/interact/forms.html - submit-format (en ingls)

[6] http://www.w3.org/TR/html401/appendix/notes.html - ampersands-in-uris (en ingls)

[7] http://www.w3.org/TR/html401/interact/forms.html - h-17.13.4 (en ingls)

[10] W3C Working Draft "XML Schema Part 1: Structures" (en ingls). Trabajo en curso.

[11] W3C Working Draft "XML Schema Part 2: Datatypes" (en ingls). Trabajo en curso.

A 1. Notas acerca de los URI


Esta seccin no contribuye directamente a la especificacin pero ofrece unas bases que pueden resultar
muy tiles al implementar la especificacin.
A 1.1 Ubicaciones de los espacios de nombres y esquemas XML
Es un error habitual igualar el targetNamespace de un esquema XML, o el valor del atributo xmlns en
instancias de XML, con la ubicacin del esquema correspondiente. Debido a que los espacios de nombres
son en realidad URI y los URI pueden ser ubicaciones, y usted puede ser capaz de recuperar un esquema
desde esa ubicacin, esto no significa que sea el nico esquema que est asociado con el espacio de
nombres. Puede haber varios esquemas asociados con un espacio de nombres determinado, siendo el

procesador XML el que determinar cul utilizar en un contexto de procesamiento concreto. La


especificacin de WSDL proporciona el contexto de procesamiento mediante el mecanismo <import>,
basado en la gramtica de esquemas XML para el concepto similar.
A 1.2 URI relativos
A lo largo de este documento podr comprobar cmo se utilizan URI completos en documentos WSDL y
XSD. La finalidad de un URI completo es simplemente ilustrar los conceptos a los que se hace referencia.
El uso de URI relativos est totalmente permitido y garantizado en muchos casos. Para obtener
informacin sobre el procesamiento de URI relativos consulte http://www.normos.org/ietf/rfc/rfc2396.txt
(en ingls).
A 1.3 Generacin de URI
Cuando se trabaja con WSDL, a menudo resulta conveniente establecer un URI para una entidad, pero no
hacer el URI globalmente nico para siempre y definirlo para que "haga referencia" a esa versin de la
entidad (esquema, documento WSDL, etc.). Se reserva el uso de un determinado URI para este tipo de
comportamiento. El URI base http://tempuri.org/ puede utilizarse para construir un URI sin ninguna
asociacin nica a una entidad. Por ejemplo, dos personas o programas podran elegir utilizar
simultneamente el URI http://tempuri.org/myschema para dos esquemas totalmente distintos y,
siempre que el mbito de uso de los URI no se vea solapado, se considerarn suficientemente nicas. Lo
anterior presenta la ventaja aadida de que la entidad a que se refiere el URI puede tener ms versiones
sin tener que generar un nuevo URI, siempre y cuando tenga sentido dentro del contexto de
procesamiento. No se recomienda el uso de http://tempuri.org/ como base para entidades estables o
fijas.

A 2. Ejemplos de formato de conexin para WSDL


A 2.1. Ejemplo 1
Mensaje SOAP incrustado en una solicitud HTTP

POST /StockQuote HTTP/1.1


Host: www.stockquoteserver.com
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "Some-URI"
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<m:GetLastTradePrice xmlns:m="Some-URI">
<symbol>DIS</symbol>
</m:GetLastTradePrice>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Mensaje SOAP incrustado en una respuesta HTTP

HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"

Content-Length: nnnn
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
<SOAP-ENV:Body>
<m:GetLastTradePriceResponse xmlns:m="Some-URI">
<Price>34.5</Price>
</m:GetLastTradePriceResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
A 3. Ubicacin de elementos de extensibilidad
Los elementos de extensibilidad pueden aparecer en las siguientes ubicaciones de un documento WSDL:
Ubicacin

Significado

Posible uso

definitions

El elemento de
extensibilidad se
aplica al
documento WSDL
de forma general.

Introducir
informacin adicional
o definiciones en un
documento WSDL de
forma general.

definitions/types

El elemento de
extensibilidad es
un sistema de
tipos.

Especificar el
formato del mensaje
en un sistema de
tipos distinto de XSD.

definitions/service

El elemento de
extensibilidad se
aplica al servicio.

Introducir
informacin adicional
o definiciones para el
servicio.

definitions/service/port

El elemento de
extensibilidad se
aplica al puerto.

Especificar una
direccin para el
puerto.

definitions/binding

El elemento de
extensibilidad se
aplica al enlace de
forma general.

Ofrecer informacin
especfica de
protocolo relativa a
todas las operaciones
en el tipo de puerto
que est siendo
enlazado.

definitions/binding/operation

El elemento de
extensibilidad se
aplica a la
operacin de forma
general.

Ofrecer informacin
especfica de
protocolo relativa
tanto al mensaje
entrante como al
saliente.

definitions/binding/operation/input

El elemento de
extensibilidad se
aplica al mensaje
entrante para la
operacin.

Ofrecer detalles
sobre cmo a las
partes de un mensaje
abstracto se asigna el
protocolo concreto y
el formato de datos
del enlace.
Ofrecer informacin
adicional especfica
del protocolo para el
mensaje entrante.

definitions/binding/operation/output

El elemento de
extensibilidad se
aplica al mensaje
saliente de la
operacin.

Ofrecer detalles
sobre cmo a las
partes de un mensaje
abstracto se asigna el
protocolo concreto y
el formato de datos
del enlace.
Ofrecer informacin
adicional especfica de
protocolo para el
mensaje saliente.

definitions/binding/operation/fault

El elemento de
extensibilidad se
aplica al mensaje
de error de la
operacin.

Ofrecer detalles
sobre cmo a las
partes de un mensaje
abstracto se asigna el
protocolo concreto y
el formato de datos
del enlace.
Ofrecer informacin
adicional especfica de
protocolo para el
mensaje de error.

A 4. Esquemas
A 4.1 Esquema WSDL

<schema targetNamespace="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns="http://www.w3.org/1999/XMLSchema"
elementFormDefault="qualified">
<element name="documentation" >
<complexType content="mixed">
<any minOccurs="0" maxOccurs="unbounded"/>
<anyAttribute/>
</complexType>
</element>
<complexType name="documented" abstract="true" content="elementOnly">
<element ref="wsdl:documentation"/>
</complexType>
<complexType name="openAtts" abstract="true" content="elementOnly">
<annotation>
<documentation>
Este tipo se extiende mediante tipos de componente
para permitir la agregacin de atributos pertenecientes a
otros espacios de nombres.
</documentation>
</annotation>
<element ref="wsdl:documentation"/>
<anyAttribute namespace="##other"/>
</complexType>
<element name="definitions" type="wsdl:definitionsType">
<key name="message">
<selector>message</selector>
<field>@name</field>
</key>

<key name="portType">
<selector>portType</selector>
<field>@name</field>
</key>
<key name="binding">
<selector>binding</selector>
<field>@name</field>
</key>
<key name="service">
<selector>service</selector>
<field>@name</field>
</key>
<key name="import">
<!-- Es demasiado restrictivo?-->
<selector>import</selector>
<field>@namespace</field>
</key>
<key name="port">
<selector>service/port</selector>
<field>@name</field>
</key>
</element>
<complexType name="definitionsType" base="wsdl:documented"
derivedBy="extension">
<element ref="wsdl:import" minOccurs="0" maxOccurs="unbounded"/>
<element ref="wsdl:types" minOccurs="0" maxOccurs="1"/>
<element ref="wsdl:message" minOccurs="0" maxOccurs="unbounded"/>
<element ref="wsdl:portType" minOccurs="0" maxOccurs="unbounded"/>
<element ref="wsdl:binding" minOccurs="0" maxOccurs="unbounded"/>
<element ref="wsdl:service" minOccurs="0" maxOccurs="unbounded"/>
<any namespace="##other" minOccurs="0" maxOccurs="unbounded">
<annotation>
<documentation>para admitir elementos de
extensibilidad</documentation>
</annotation>
</any>
<attribute name="targetNamespace" type="uriReference" use="optional"/>
<attribute name="name" type="NMTOKEN" use="optional"/>
</complexType>
<element name="import" type="wsdl:importType" />
<complexType name="importType" base="wsdl:documented" derivedBy="extension"
>
<attribute name="namespace" type="uriReference" use="required"/>
<attribute name="location" type="uriReference" use="required"/>
</complexType>
<element name="types" type="wsdl:typesType"/>
<complexType name="typesType" base="wsdl:documented" derivedBy="extension" >
<any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</complexType>
<element name="message" type="wsdl:messageType">
<unique name="part">
<selector>part</selector>
<field>@name</field>
</unique>
</element>
<complexType name="messageType" base="wsdl:documented"
derivedBy="extension">
<element ref="wsdl:part" minOccurs="0" maxOccurs="unbounded"/>
<attribute name="name" type="NCName" use="required"/>
</complexType>
<element name="part" type="wsdl:partType"/>
<complexType name="partType" base="wsdl:openAtts" derivedBy="extension">
<attribute name="name" type="NMTOKEN" use="optional"/>
<attribute name="type" type="QName" use="optional"/>
<attribute name="element" type="QName" use="optional"/>
</complexType>
<element name="portType" type="wsdl:portTypeType">
<key name="operation">

<selector>operation</selector>
<field>@name</field>
</key>
</element>
<complexType name="portTypeType" base="wsdl:documented"
derivedBy="extension" content="elementOnly" >
<element ref="wsdl:operation" minOccurs="0" maxOccurs="unbounded"/>
<attribute name="name" type="NCName" use="required"/>
</complexType>
<element name="operation" type="wsdl:operationType">
<unique name="paramName">
<selector>input| output| fault</selector>
<field>@name</field>
</unique>
</element>
<complexType name="operationType" base="wsdl:documented"
derivedBy="extension" >
<choice minOccurs="1" maxOccurs="1">
<group ref="wsdl:one-way-operation"/>
<group ref="wsdl:request-response-operation"/>
<group ref="wsdl:solicit-response-operation"/>
<group ref="wsdl:notification-operation"/>
</choice>
<attribute name="name" type="NCName" use="required"/>
</complexType>
<group name="one-way-operation">
<sequence>
<element ref="wsdl:input" />
</sequence>
</group>
<group name="request-response-operation">
<sequence>
<element ref="wsdl:input"/>
<element ref="wsdl:output"/>
<element ref="wsdl:fault" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</group>
<group name="solicit-response-operation">
<sequence>
<element ref="wsdl:output"/>
<element ref="wsdl:input" />
<element ref="wsdl:fault" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</group>
<group name="notification-operation">
<sequence>
<element ref="wsdl:output"/>
</sequence>
</group>
<element name="input" type="wsdl:paramType"/>
<element name="output" type="wsdl:paramType"/>
<element name="fault" type="wsdl:faultType"/>
<complexType name="paramType" base="wsdl:documented" derivedBy="extension" >
<attribute name="name" type="NMTOKEN" use="optional"/>
<attribute name="message" type="QName" use="required"/>
</complexType>
<complexType name="faultType" base="wsdl:documented" derivedBy="extension" >
<attribute name="name" type="NMTOKEN" use="required"/>
<attribute name="message" type="QName" use="required"/>
</complexType>
<complexType name="startWithExtensionsType" base="wsdl:documented"
derivedBy="extension"
content="elementOnly" abstract="true">
<any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</complexType>
<element name="binding" type="wsdl:bindingType"/>
<complexType name="bindingType" base="wsdl:startWithExtensionsType"
derivedBy="extension"

content="elementOnly">
<element name="operation" type="wsdl:binding_operationType" minOccurs="0"
maxOccurs="unbounded"/>
<attribute name="name" type="NCName" use="required"/>
<attribute name="type" type="QName" use="required"/>
</complexType>
<complexType name="binding_operationType"
base="wsdl:startWithExtensionsType"
derivedBy="extension" content="elementOnly">
<element name="input" type="wsdl:startWithExtensionsType" minOccurs="0"
maxOccurs="1"/>
<element name="output" type="wsdl:startWithExtensionsType" minOccurs="0"
maxOccurs="1"/>
<element name="fault" minOccurs="0" maxOccurs="unbounded">
<complexType base="wsdl:startWithExtensionsType"
derivedBy="extension">
<attribute name="name" type="NMTOKEN" use="required"/>
</complexType>
</element>
<attribute name="name" type="NCName" use="required"/>
</complexType>
<element name="service" type="wsdl:serviceType"/>
<complexType name="serviceType" base="wsdl:documented" derivedBy="extension"
>
<element ref="wsdl:port" minOccurs="0" maxOccurs="unbounded"/>
<any namespace="##other" minOccurs="0" maxOccurs="1"/>
<attribute name="name" type="NCName" use="required"/>
</complexType>
<element name="port" type="wsdl:portType"/>
<complexType name="portType" base="wsdl:documented" derivedBy="extension">
<any namespace="##other" minOccurs="0" maxOccurs="1"/>
<attribute name="name" type="NCName" use="required"/>
<attribute name="binding" type="QName" use="required"/>
</complexType>
</schema>
A 4.2 Esquema del enlace SOAP

<schema targetNamespace="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://www.w3.org/1999/XMLSchema">
<element name="binding" type="soap:bindingType"/>
<complexType name="bindingType" content="empty">
<attribute name="transport" type="uriReference" use="optional"/>
<attribute name="style" type="soap:styleChoice" use="optional"/>
</complexType>
<simpleType name="styleChoice" base="string" derivedBy="restriction">
<enumeration value="rpc"/>
<enumeration value="document"/>
</simpleType>
<element name="operation" type="soap:operationType"/>
<complexType name="operationType" content="empty">
<attribute name="soapAction" type="uriReference" use="optional"/>
<attribute name="style" type="soap:styleChoice" use="optional"/>
</complexType>
<element name="body" type="soap:bodyType"/>
<complexType name="bodyType" content="empty">
<attribute name="encodingStyle" type="uriReference" use="optional"/>
<attribute name="parts" type="NMTOKENS" use="optional"/>
<attribute name="use" type="soap:useChoice" use="optional"/>
<attribute name="namespace" type="uriReference" use="optional"/>
</complexType>
<simpleType name="useChoice" base="string">
<enumeration value="literal"/>
<enumeration value="encoded"/>
</simpleType>
<element name="fault" type="soap:faultType"/>
<complexType name="faultType" base="soap:bodyType" derivedBy="restriction">
<attribute name="parts" type="NMTOKENS" use="prohibited"/>

</complexType>
<element name="header" type="soap:headerType"/>
<complexType name="headerType" content="empty">
<attribute name="element" type="QName" use="required"/>
<attribute name="fault" type="QName" use="optional"/>
</complexType>
<element name="address" type="soap:addressType"/>
<complexType name="addressType" content="empty">
<attribute name="location" type="uriReference" use="required"/>
</complexType>
</schema>
A 4.3 Esquema del enlace HTTP

<schema targetNamespace="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns="http://www.w3.org/1999/XMLSchema">
<element name="address" type="http:addressType"/>
<complexType name="addressType" content="empty">
<attribute name="location" type="uriReference" use="required"/>
</complexType>
<element name="binding" type="http:bindingType"/>
<complexType name="bindingType" content="empty">
<attribute name="verb" type="NMTOKEN" use="required"/>
</complexType>
<element name="operation" type="http:operationType"/>
<complexType name="operationType" content="empty">
<attribute name="location" type="uriReference" use="required"/>
</complexType>
<element name="urlEncoded">
<complexType content="empty"/>
</element>
<element name="urlReplacement">
<complexType content="empty"/>
</element>
</schema>
A 4.4 Esquema del enlace MIME

<schema targetNamespace="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns="http://www.w3.org/1999/XMLSchema">
<element name="content" type="mime:contentType"/>
<complexType name="contentType" content="empty">
<attribute name="type" type="string" use="optional"/>
<attribute name="part" type="NMTOKEN" use="optional"/>
</complexType>
<element name="multipartRelated" type="mime:multipartRelatedType"/>
<complexType name="multipartRelatedType" content="elementOnly">
<element ref="mime:part" minOccurs="0" maxOccurs="unbounded"/>
</complexType>
<element name="part" type="mime:partType"/>
<complexType name="partType" content="elementOnly">
<any namespace="targetNamespace" minOccurs="0" maxOccurs="unbounded"/>
<attribute name="name" type="NMTOKEN" use="required"/>
</complexType>
<element name="mimeXml" type="mime:mimeXmlType"/>
<complexType name="mimeXmlType" content="empty">
<attribute name="part" type="NMTOKEN" use="optional"/>
</complexType>
</schema>

http://www.microsoft.com/spanish/msdn/articulos/archivo/090201/voices/
wsdl.asp

5.6.3 UDDI

Introduccin a los Servicios UDDI


Descripcin, descubrimiento e integracin universales (<i>Universal Description,
Discovery and Integration</i>, UDDI) es una especificacin del sector para publicar y
buscar informacin acerca de servicios Web. La familia Windows Server 2003 incluye
Servicios UDDI, un componente opcional que proporciona capacidades UDDI para
utilizarse en la empresa o entre compaas asociadas. Los servicios UDDI son un
servicio Web XML basado en estndares que permite que los programadores de las
empresas publiquen, descubran, compartan y reutilicen de forma eficaz los servicios
Web directamente a travs de sus herramientas de desarrollo y aplicaciones
empresariales.
Basados en Microsoft .NET Framework, los servicios UDDI son una solucin confiable
y escalable que proporciona una fcil integracin con las tecnologas y herramientas
empresariales. Los administradores de tecnologa de la informacin (TI) pueden
aprovechar el soporte nativo para esquemas de categorizacin estndar, Microsoft
SQL Server y autenticacin de Active Directory. Como servicio compatible con la API
de UDDI versiones 1.0 y 2.0, los Servicios UDDI incluyen tambin una interfaz Web
traducida a todos los idiomas compatibles con la familia Windows Server 2003.
La documentacin del producto Servicios UDDI est disponible en la Ayuda de
Servicios UDDI. Para ver la documentacin del producto, instale los Servicios UDDI y,
a continuacin, vea la Bienvenidos. Para obtener informacin acerca de la instalacin de
los Servicios UDDI, vea Usar los servicios UDDI.
http://www.microsoft.com/technet/prodtechnol/windowsserver2003/es/libr
ary/ServerHelp/d595854e-7bba-44f4-a65a-f7a79f23664f.mspx

5.7 Publicacin de un servicio WEB.

Publicar un servicio Web

Las extensiones de servicio Web de Visual FoxPro le permiten publicar servidores COM de Visual FoxPro
como servicios Web para tener acceso a ellos desde cualquier lugar del Web. Estas extensiones
proporcionan capacidades de publicacin de servicios Web mediante varios objetos del kit de
herramientas.

Para publicar un servicio Web


1.

Haga clic con el botn secundario del mouse (ratn) en el proyecto de servidor COM y
seleccione el elemento de men Generador.

2.

En el cuadro de dilogo Seleccin de los asistentes seleccione el elemento de la lista


Publicador de servicios Web.

O bien
3.

En el men Herramientas, elija Asistentes y, a continuacin, elija Servicios Web.

O bien

4.

En el men Herramientas, haga clic en Asistentes y, a continuacin, elija Todos los


asistentes.

5.

En el cuadro de dilogo Seleccin de los asistentes seleccione el elemento de la lista


Publicador de servicios Web.

O bien

Ejecute el cuadro de dilogo Publicador de servicios Web mediante programacin con el


cdigo siguiente:

DO (_wizard) WITH "project",,"Web"


Cuadro de dilogo Publicador de servicios Web
Puede utilizar el cuadro de dilogo Publicador de servicios Web bsico para acelerar el proceso de
publicacin de un servicio Web. Este cuadro de dilogo utiliza la ubicacin URL predeterminada
(directorio virtual) para sus valores. El cuadro de dilogo Avanzadas muestra estos valores
predeterminados y le permite realizar cambios. Los valores se mantienen por lo que puede volver a
publicar el servicio Web ms tarde con los archivos de soporte generados recientemente.

Nombre

Descripcin

Cuadro combinado
Servidor COM

Muestra el nombre de archivo del servidor


COM que se va a publicar. De forma
predeterminada, se muestra un servidor
COM asociado con un proyecto activo. El
cuadro de dilogo contiene una lista de
todos los servidores COM asociados con los
proyectos abiertos y los servidores COM
publicados anteriormente.

Cuadro combinado
Seleccionar clase

Le permite especificar una clase individual


(OLEPUBLIC) del servidor COM que se va a
publicar. Este cuadro combinado incluye
todas las clases que se encuentran en el
servidor COM. Haga clic en el botn (...)
para mostrar el cuadro de dilogo Abrir
archivo y as poder seleccionar un servidor
COM (DLL/EXE).

Botn Avanzadas

Muestra un cuadro de dilogo que


proporciona un mayor control sobre los
archivos de soporte generados para el
servicio Web. Los valores seleccionados en
el cuadro de dilogo Avanzadas se utilizan
cuando hace clic en el botn Generar.

Botn Generar

Genera todos los archivos de soporte del

servicio Web necesarios para publicar el


servidor COM como un servicio Web,
incluidos una escucha ASP y los archivos
WSDL.
Cuadro de dilogo Avanzadas de Publicador de servicios Web
El cuadro de dilogo Avanzadas le permite anular los valores predeterminados del servicio Web que
desea publicar. Los valores se mantienen por lo que puede volver a publicar el servicio Web ms tarde
con los archivos de soporte generados recientemente.

Nombre

Descripcin

Cuadro combinado URL


WSDL

Especifica la direccin URL para el archivo


WSDL. Este cuadro combinado contiene una
lista de ubicaciones sugeridas basndose en
el conjunto de directorios virtuales del
servidor Web predeterminado. Haga clic en
el botn () para mostrar el cuadro de
dilogo Ubicacin URL de servicios Web y
as poder elegir un directorio virtual
existente o nuevo.

Cuadro de texto Archivo


WSDL

Muestra el nombre de archivo WSDL. Haga


clic en el botn () para mostrar el cuadro
de dilogo Guardar como y as poder
cambiar el nombre del archivo WSDL.

Botn de opcin ISAPI de Al hacer clic en este botn, se especifica


escucha
que la escucha utilizada es una escucha
ISAPI. Es la opcin predeterminada y la que
ofrece mejor rendimiento.
Botn de opcin ASP de
escucha

Al hacer clic en este botn, se especifica


que se utiliza un archivo ASP como escucha
para el servicio Web.

Cuadro combinado
Especifica la direccin URL para el archivo
Direccin URL de escucha de escucha ASP. Este cuadro combinado
ASP
contiene una lista de ubicaciones sugeridas
basndose en el conjunto de directorios
virtuales del servidor Web predeterminado.
Cuadro de texto Archivo
de escucha ASP

Muestra el nombre de archivo de escucha


ASP. Haga clic en el botn () para mostrar

el cuadro de dilogo Guardar en archivo y


as poder cambiar el nombre del archivo de
escucha ASP.
Aplicacin de escucha
ASP

Nombre de aplicacin que se utiliza en la


secuencia de comandos ASP del archivo de
escucha.

Botn de opcin VBScript Si hace clic en l, VBScript es el lenguaje de


secuencia de comandos utilizado en el
archivo de escucha ASP.
Botn de opcin JScript

Si hace clic en l, JScript es el lenguaje de


secuencia de comandos utilizado en el
archivo de escucha ASP.

Casilla de verificacin
Si est activada, cuando haga clic en el
Secuencias de comandos botn Generar del cuadro de dilogo
de IntelliSense
Publicador de servicios Web se agregar
una entrada de IntelliSense para el servicio
Web.
Nombre de secuencias de Especifica el nombre descriptivo que
comandos de IntelliSense aparece en la lista de tipos de IntelliSense
(por ejemplo, LOCAL oWS AS).
Casilla de verificacin
Generar
automticamente

Si est activada, configura un enganche de


proyecto con el proyecto del servidor COM
para que se generen automticamente los
archivos de soporte del servicio Web cuando
se vuelva a generar el servidor COM.

Casilla de verificacin
Generar con UTF-16

Si est activada, se utiliza la codificacin


Unicode UTF-16 al generar archivos WSDL.

Nota El Asistente para publicacin de servicios Web de Visual FoxPro slo admite la generacin de
archivos WSDL que contienen un nico servicio y puerto (clase). Adems, se incluyen todos los mtodos
de la clase seleccionada. Si desea seleccionar varias clases o filtrar los mtodos especficos, debera
utilizar el asistente para SOAP Toolkit 2.0 incluido en el kit de herramientas.

http://msdn.microsoft.com/library/spa/default.asp?
url=/library/SPA/fox7help/html/fomscWebServicePublishing.asp

5.8 Consumo de un servicio WEB.


Consumo de XML Web Services con FrontPage

Julio de 2002
Jimco
Resumen: en este artculo se explica el modo de consumir servicios XML Web Services de
Microsoft .NET con FrontPage. (8 pginas.)
Descargue el archivo de muestra FPWebSvc.exe en MSDN Code Center (en ingls).
Contenido
XML Web Services
Requisitos para el consumo de servicios Web
Preparacin de servicios Web para su uso

XML Web Services


Uno de los aspectos ms interesantes de Microsoft .NET Framework es la incorporacin de XML
(Lenguaje de marcado extensible) Web Services. Los servicios Web permiten la comunicacin y el
intercambio de informacin entre aplicaciones a travs de procesos basados en estndares. La
implementacin de servicios Web por parte de Microsoft conlleva numerosas ventajas inherentes. El
intercambio de informacin se realiza en formato XML, utilizando el protocolo de transferencia de
hipertexto (HTTP) y el protocolo de control de transporte/protocolo Internet (TCP/IP), por lo que los
servicios Web pueden utilizar la infraestructura existente e implementarse en entornos fcilmente.
En este artculo, utilizaremos el servicio Web EightBall del sitio Web GotDotNet de Microsoft. Crearemos
una pgina Web desde la que podremos enviar una solicitud a este servicio. ste, por su parte, tomar la
solicitud, la procesar y devolver una respuesta que aparecer en nuestra pgina Web. Este proceso,
por el cual se utiliza la respuesta de un servicio Web, se conoce como "consumo" de un servicio Web.

Requisitos para el consumo de servicios Web


Para consumir un servicio Web, es necesario disponer de varios elementos de forma adecuada. Al utilizar
Microsoft Visual Studio .NET, estos elementos se colocarn correctamente de forma automtica. No
obstante, para el propsito de este artculo, consumiremos el servicio Web utilizando la herramienta de
creacin y administracin de sitios Web de Microsoft FrontPage.
Para consumir un servicio Web utilizando FrontPage, necesitar:

El kit de desarrollo de software Microsoft .NET Framework SDK

Los Servicios de Internet Information Server (IIS) de Microsoft, el servidor Web que integra el
sistema operativo Windows 2000 Server

Un proxy de servicios Web

Un formulario Web de ASP.NET

Microsoft .NET Framework SDK


Microsoft .NET Framework constituye el modelo de programacin de la plataforma Microsoft .NET que
permite crear servicios y aplicaciones Web eficaces. .NET Framework nos permitir crear la pgina
ASP.NET que necesitamos para consumir el servicio Web EightBall. Para completar los pasos que se
describen a continuacin, necesitar .NET Framework SDK. Lo puede encontrar en el sitio de descarga de
.NET Framework SDK (en ingls).

Servicios de Internet Information Server de Microsoft


En primer lugar, necesitamos un servidor Web compatible con ASP.NET. Los Servicios de Internet
Information Server de Microsoft se pueden utilizar tanto en Windows 2000 como en Windows XP.
Asimismo, tal vez sea necesario instalar determinadas actualizaciones de seguridad. Para determinar si
necesita instalar alguna actualizacin, visite Windows Update.

Si instala IIS tras instalar .NET Framework SDK, tambin deber instalar la compatibilidad ASP.NET. Para
ello, ejecute Aspnet_regiis.exe en el directorio de .NET Framework. Si desea obtener ms informacin,
consulte Microsoft Knowledge Base (en ingls).

Proxy de servicios Web


Los clientes y los servicios Web se comunican a travs de mensajes de SOAP (Simple Object Access
Protocol). Si desea obtener ms informacin, consulte el sitio Web de SOAP (en ingls). El proxy de
servicios Web se encarga de la formacin de los mensajes SOAP y de su posterior envo a travs de la
red, lo que facilita considerablemente el consumo de un servicio Web, ya que no tendr que asignar sus
parmetros a elementos XML. El proxy de servicios Web consta de una biblioteca de vnculos dinmicos
(DLL) en el servidor Web local. La utilidad WSDL.exe, distribuida con .NET Framework SDK, nos permitir
generar un archivo de cdigo fuente de Microsoft Visual Basic .NET o C# y, a continuacin, utilizarlo
para compilar nuestro proxy de servicios Web. Se trata de una tarea bastante sencilla que trataremos en
detalle ms adelante.

Formulario Web de ASP.NET


Debemos proporcionar al usuario los medios necesarios para poder realizar consultas a la "octava bola
mgica". Para ello, utilizaremos un formulario Web de ASP.NET. FrontPage no puede generar componentes
ASP.NET en la interfaz de usuario, por lo que tendremos que escribir manualmente el cdigo del
formulario Web en la vista HTML.

Preparacin de servicios Web para su uso


Asumiendo que ha instalado Microsoft .NET Framework SDK y los Servicios de Internet Information
Server de Microsoft, pasaremos a analizar el consumo del servicio Web EightBall. Estos son los pasos
necesarios para consumir dicho servicio:
1.

Examen del servicio Web.

2.
3.
4.
5.
6.
7.

Generacin de un archivo de cdigo fuente.


Compilacin del proxy de servicios Web.
Diseo de la interfaz ASP.NET.
Conexin del servicio Web.
Copia del proxy.
Comprobacin de la aplicacin ASP.NET.

Examen del servicio Web


Para examinar nuestro servicio Web y ver el tipo de informacin que proporciona, es necesario ir al punto
de acceso del mismo. El vnculo de este servicio Web en concreto es
http://www.gotdotnet.com/playground/services/EightBall/eightballws.asmx (en ingls). En esta URL
podr consultar la lista de las operaciones que admite este servicio Web. En este caso, encontrar un
vnculo a la operacin Ask.

Figura 1: Informacin sobre HTTP Post de la operacin Ask


Si hace clic en el vnculo a la operacin Ask, ver un ejemplo de solicitud y respuesta para SOAP del
servicio Web. Si examina la solicitud y la respuesta, podr ver que la operacin Ask espera que se le pase
una cadena (observe el texto psQuestion=string en la seccin HTTP POST) y que, del mismo, esta
operacin devuelve una cadena. En esta pgina se incluye un cuadro de texto en el que puede escribir
una pregunta para, posteriormente, recibir una respuesta del servicio Web EightBall en formato XML.
Esta informacin es necesaria para disear una interfaz en FrontPage que nos permita consumir este
servicio Web. El anlisis de la informacin presente en el punto de acceso del servicio Web nos ha llevado
a determinar que es necesario disear un formulario que incluya un cuadro de texto en el que se pueda
escribir una pregunta y un botn para enviar dicha consulta al servicio Web. A continuacin, debemos
incluir un elemento en la pgina para que contenga la respuesta devuelta del servicio Web; pero esto lo
trataremos con ms detalle en otra seccin. Lo que nos concierne ahora es generar un archivo de cdigo
fuente que podamos utilizar para compilar nuestra clase de proxy de servicios Web.

Generacin de un archivo de cdigo fuente


El ensamblado .NET real de un servicio Web reside en el servidor Web que lo aloja. No obstante, una
clase de proxy del cliente es responsable de la creacin de solicitudes SOAP de formato correcto para el
servicio Web. Por tanto, es necesario crear un ensamblado .NET en el servidor Web local para que acte
como la clase de proxy. Microsoft facilita en gran medida esta tarea a travs de las herramientas que
proporciona .NET Framework SDK.
Para generar un archivo de cdigo fuente para nuestra clase de proxy, emplearemos la utilidad de
lenguaje de descripcin de servicios Web, WSDL.exe. Si desea obtener ms informacin, consulte
http://www.w3.org/TR/wsdl (en ingls). Podr encontrar esta utilidad en el directorio en el que instal
.NET Framework SDK (que de forma predeterminada se encuentra en la carpeta c:\Archivos de
programa\Microsoft Visual Studio .NET\FrameworkSDK\Bin). WSDL.exe nos permitir crear un archivo de
cdigo fuente para nuestra clase de proxy.
Antes de generar el archivo de cdigo fuente, es necesario crear un directorio en la raz de la unidad C
para los archivos del servicio Web. Llame al directorio 8Ball. Una vez creado este directorio, podremos

generar los archivos necesarios para consumir el servicio Web EightBall.


Para generar un archivo de cdigo fuente:
1.
2.
3.

Haga clic en Inicio, Todos los programas, Accesorios y, a continuacin, en Smbolo del
sistema para abrir una ventana de interfaz de comandos.
Cambie al directorio que contiene la utilidad WSDL.exe.
En la lnea de comandos, escriba lo siguiente y presione INTRO:

wsdl /l:VB /o:c:\8ball\8ball.vb


http://www.gotdotnet.com/playground/services/EightBall/eightballws.a
smx?wsdl
Para generar nuestro archivo de cdigo fuente utilizaremos los siguientes modificadores con WSDL.exe:
/l - Este modificador especifica el lenguaje del archivo de cdigo fuente. En este caso, hemos
especificado Visual Basic. Asimismo, puede especificar si lo desea CS (C#); se generar un archivo de
cdigo fuente de C#.
/o - Este modificador especifica el nombre del archivo de salida. La extensin de un archivo de cdigo
fuente de Visual Basic es .vb. La de un archivo de cdigo fuente de C# es .cs.
Nota: Si desea obtener ms informacin sobre WSDL, utilice el modificador /?.
La URL que pasamos a WSDL es la del contrato del servicio Web. Este contrato es un documento en el
que se describe el tipo de informacin que el servicio Web espera que proporcione, as como el tipo de
informacin que devolver el servicio. La URL del contrato del servicio Web es simplemente la URL del
punto de acceso del servicio Web con ?wsdl agregado al final.
Ya hemos generado con xito un archivo de cdigo fuente de Visual Basic .NET que utilizaremos para
compilar nuestra clase de proxy de servicios Web.

Compilacin del proxy de servicios Web


Una vez creado el archivo de cdigo fuente de Visual Basic .NET, es preciso compilarlo en un proxy de
servicios Web. Para ello, utilizaremos el compilador de Visual Basic .NET que se distribuye con el .NET
Framework SDK.
Para compilar la clase de proxy, escriba lo siguiente en la interfaz de comandos que ha abierto:

Vbc /t:library /out:c:\8Ball\8BallClient.dll /r:System.dll


/r:System.XML.dll
/r:System.Web.Services.dll c:\8Ball\8Ball.vb
Para generar nuestra clase de proxy utilizamos los siguiente modificadores:
/t - Este modificador especifica el tipo de ensamblado que se va a crear. En este caso, vamos a compilar
un archivo DLL, por lo que especificaremos el tipo de ensamblado como library.
/out - Este modificador especifica el nombre del archivo de salida. Debido a que especificamos el tipo de
ensamblado como library, la extensin del archivo de salida debe ser .dll.
/r - Este modificador especifica las referencias del ensamblado. En este caso, hacemos referencia a tres
espacios de nombres de Microsoft .NET necesarios para todos los clientes proxy de servicios Web. Se
trata de los espacios de nombres System, System.XML y System.Web.Services.
Una vez que el compilador finalice la compilacin de la clase de proxy, deber disponer de un archivo de
nombre 8BallClient.dll en el directorio 8Ball en la unidad C. Se trata del cliente proxy. Ms adelante lo

moveremos a la ubicacin correcta. Puede cerrar la ventana de la lnea de comandos. Pasaremos a crear
la interfaz necesaria para interactuar con el servicio Web EightBall.

Diseo de la interfaz ASP.NET


Ya tenemos una idea general acerca de la interfaz que queremos crear y hemos compilado con xito una
clase de proxy de servicios Web. El siguiente paso consiste en crear un formulario ASP.NET para
interactuar con el servicio Web EightBall.
Antes de pasar al diseo de la interfaz ASP.NET, debemos crear un proyecto FrontPage. Para ello,
crearemos un sitio Web nuevo de una sola pgina llamado 8Ball. Es importante que cree este sitio en el
servidor Web en el que instal ASP.NET.
Una vez creado el sitio 8Ball, asegrese de que est marcado como raz de aplicacin. Para ello:
1.

Haga clic en Inicio, Configuracin y, a continuacin, en Panel de control para abrir este
ltimo.

2.
3.

Haga doble clic en Herramientas administrativas.


Haga doble clic en Administrador de servicios Internet (Windows 2000) o Servicios de
Internet Information Server (Windows XP Professional).
Expanda el nodo Sitio Web predeterminado para ver el sitio 8Ball. (En Windows XP Professional,
primero deber expandir el nodo Sitios Web para obtener el nodo Sitio Web predeterminado.)
Haga clic con el botn secundario del mouse en el nodo 8Ball y elija Propiedades.
Se abrir el cuadro de dilogo Propiedades mostrando la ficha Directorio. Si no es as, haga clic
en esta ficha.
En la seccin Configuracin de la aplicacin, haga clic en el botn Crear para hacer de este sitio
una raz de aplicacin.
Haga clic en Aceptar.

4.
5.
6.
7.
8.

Ahora que su sitio Web es una raz de aplicacin, podemos continuar con la creacin de la interfaz de
usuario de ASP.NET.
Vamos a utilizar tres controles de formulario Web de ASP.NET en nuestra interfaz. Usaremos el control
TextBox para escribir nuestra pregunta al servicio Web EightBall, Button para iniciar la solicitud a dicho
servicio y Label para ver la respuesta recibida del propio servicio. Todos estos controles se incluirn en
un formulario de ASP.NET.
Gracias a Microsoft Visual Studio .NET, el diseo de un formulario Web resulta bastante sencillo. Basta
con arrastrar y colocar los elementos del formulario deseados y configurar las propiedades de dichos
elementos en la interfaz de usuario. En nuestro caso, no vamos a utilizar Visual Studio .NET, por lo que
deberemos codificar manualmente los elementos de nuestro formulario.
Creacin del formulario Web
El primer paso consiste en crear el cdigo del propio formulario Web. Si est familiarizado con el cdigo
de los formularios de lenguaje de marcado de hipertexto (HTML), este cdigo le resultar bastante
familiar. Abra la pgina principal del sitio 8Ball y cambie a la vista HTML. Escriba el siguiente cdigo entre
las etiquetas <body> existentes:

<form runat="server">
</form>
Se trata de un cdigo exactamente igual al de un formulario HTML salvo por la presencia del atributo
runat. El valor de este atributo es server, lo que indica que este formulario es un control de servidor de
ASP.NET. Estamos frente a un excelente ejemplo de simplicidad de ASP.NET. Para convertir un elemento
HTML en un control de servidor ASP.NET, es suficiente con agregar el atributo runat y definir su valor
como server.
Llegados a este punto, debera guardar esta pgina. Gurdela como 8ball.aspx.
Adicin de controles de formulario Web de ASP.NET

Una vez creado el formulario, debemos agregarle los controles de formulario Web de ASP.NET.
En primer lugar, agregaremos el control TextBox. En este cuadro, el usuario de la pgina Web escribir
una pregunta al servicio Web EightBall. Para agregar el control TextBox, agregue el siguiente cdigo
entre las etiquetas de apertura y cierre <form> agregadas anteriormente:

<asp:TextBox id="tbQuestion" runat="server"/>


Puede que este cdigo no le resulte del todo familiar si no ha escrito anteriormente cdigo en ASP.NET. El
elemento asp: al final del nombre del control indica que se trata de un control de formulario Web de
ASP.NET. Si desea obtener ms informacin, consulte este sitio relativo a los controles de formulario Web
de ASP.NET (en ingls).
Agregue el resto del cdigo a la pgina. El aspecto del cdigo debe ser el siguiente:

<form runat="server">
<asp:TextBox id="tbQuestion" runat="server"/>
<asp:Button id="btnGo" runat="server"
Text="Submit Question" onClick="getAnswer"/><br><br>
<asp:Label id="lblAnswer" runat="server"/>
</form>
Probablemente se haya percatado de que estos controles no aparecen en la vista normal de FrontPage.
Se trata de un hecho normal que se debe a la presencia de controles de formulario Web de ASP.NET.
FrontPage no puede procesarlos.

Conexin del servicio Web


Si revisa el cdigo que tenemos hasta el momento, podr observar que se llama a un procedimiento
getAnswer al hacer clic en el botn. Se trata de nuestro procedimiento del lado del servidor responsable
de lo siguiente:

Creacin de una instancia de la clase de cliente proxy.

Llamada a la funcin Ask del servicio Web EightBall y paso de la pregunta realizada.

Definicin del texto del control Label para que muestre la respuesta recibida del servicio Web.

Para crear este procedimiento, es necesario agregar el siguiente cdigo a la pgina inmediatamente
despus de la etiqueta de cierre </head>:

<script runat="server">
Sub getAnswer(sender as Object, e As System.EventArgs)
Dim clsEightBall As EightBallWS = New EightBallWS
Dim strAnswer As String
strAnswer = clsEightBall.Ask(tbQuestion.Text)
lblAnswer.Text = strAnswer
End Sub
</script>
Analicemos brevemente este cdigo.
<script> es una etiqueta de secuencia de comandos bsica. No obstante, le hemos agregado
runat="server" para que se procese en el servidor. A continuacin definimos el procedimiento
getAnswer, el cual incluye dos parmetros: sender y e. Se trata de la firma necesaria para los
controladores de eventos de Microsoft .NET.
A continuacin creamos una instancia de la clase de proxy cliente. Cmo sabemos que la clase se llama
EightBallWS? Si utiliza el Bloc de notas para examinar el archivo de cdigo fuente de Visual Basic que se

cre utilizando WSDL, ver el siguiente cdigo:

Public Class EightBallWS


Todas las clases de proxy tienen un nombre asociado, que ser el que utilicemos a la hora de crear una
nueva instancia de la clase. Llamamos a la instancia de la clase EightBallWS clsEightBall. Se trata de un
nombre arbitrario.
A continuacin creamos un valor de cadena (strAnswer) para mantener la respuesta devuelta por el
servicio Web. Recuerde que al examinar el servicio Web determinamos que se haba realizado una
operacin Ask que acept una cadena como un parmetro y que, a continuacin, devolvi otra cadena.
Posteriormente asignamos un valor a strAnswer llamando a la operacin Ask del servicio Web y
pasndole nuestra pregunta.

strAnswer = clsEightBall.Ask(tbQuestion.Text)
Le enviamos la pregunta pasando la propiedad Text del control de formulario Web TextBox (tbQuestion)
que creamos anteriormente. Ya sabemos que la operacin Ask del servicio Web nos devuelve la respuesta
como una cadena. Por tanto, tras ejecutar la lnea anterior, strAnswer contendr una cadena formada
por la respuesta a nuestra pregunta procedente del servicio Web.
Lo nico que queda por hacer es mostrar la respuesta devuelta. Para ello, asignamos la propiedad Text
del control Label al valor contenido en strAnswer.

lblAnswer.Text = strAnswer
Guarde la pgina ahora. Asegrese de que lo hace como 8ball.aspx.

Copia de la clase de proxy


El ltimo paso que debemos realizar antes de probar nuestra nueva pgina ASP.NET consiste en copiar la
clase de proxy compilada en la ubicacin adecuada de la aplicacin ASP.NET.
1.

Cree una carpeta nueva en el sitio FrontPage llamada bin.

2.

Importe a esta carpeta el archivo 8BallClient.dll compilado anteriormente.

Comprobacin de la aplicacin ASP.NET


Ya estamos preparados para probar la aplicacin ASP.NET. Vaya a la pgina 8ball.aspx. Deber ver un
cuadro de texto y un botn. Escriba una pregunta en el cuadro de texto y haga clic en el botn. Deber
ver la respuesta del servicio Web debajo del cuadro de texto.

Figura 2: El servicio Web EightBall en accin

Conclusin
En este artculo, se ha creado un formulario Web de ASP.NET muy sencillo para consumir un servicio Web
simple utilizando Microsoft FrontPage. Se han puesto de relieve las ventajas que aporta la arquitectura de
los XML Web Services y se ha descrito el modo de obtener informacin especfica sobre un servicio Web
determinado revisando su punto de acceso.
El consumo de un servicio Web simple (como el servicio Web EightBall) es bastante sencillo. Para
consumir un servicio Web complejo, utilice Microsoft Visual Studio .NET, ya que podr hacer uso de un
eficaz conjunto de herramientas para el consumo de servicios Web y el diseo de formularios Web de
ASP.NET en un entorno del tipo "lo que se ve es lo que se obtiene" (WYSIWYG).

ANEXOS:
Qu es el ASP?
Al navegar ms de alguna vez nos hemos topado con alguna pgina que tiene
archivos con extensin ".asp" y nos hemos preguntado que significa ste tipo de
archivos.
Microsoft introdujo esta tecnologa llamada Active Server Pages en diciembre de
1996, por lo que no es nada nueva. Es parte del Internet Information Server (IIS)
desde la versin 3.0 y es una tecnologa de pginas activas que permite el uso de
diferentes scripts y componentes en conjunto con el tradicional HTML para mostrar
pginas generadas dinmicamente.
Traduciendo la definicin de Microsoft: "Las Active Server Pages son un ambiente de
aplicacin abierto y gratuito en el que se puede combinar cdigo HTML, scripts y
componentes ActiveX del servidor para crear soluciones dinmicas y poderosas para
el web".
El principio de la tecnologa ASP es el VBScript, pero existe otra diversidad de
lenguajes de programacin que pueden ser utilizados como lo es Perl, JScript, etc.

El ASP es una tecnologa dinmica funcionando del lado del servidor, lo que significa
que cuando el usuario solicita un documento ASP, las instrucciones de programacin
dentro del script son ejecutadas para enviar al navegador nicamente el cdigo HTML
resultante. La ventaja principal de las tecnologas dependientes del servidor radica en
la seguridad que tiene el programador sobre su cdigo, ya que ste se encuentra
nicamente en los archivos del servidor que al ser solicitado a travs del web, es
ejecutado, por lo que los usuario no tienen acceso ms que a la pgina resultante en
su navegador.
Para explicar mejor el funcionamiento del ASP se presenta la siguiente grfica:

Para insertar instrucciones ASP dentro del cdigo HTML se incluye encerrado entre "<
% %>". Estos comandos son los que procesa el servidor antes de enviar la pgina al
navegador.
A continuacin tenemos un ejemplo del cdigo ASP en el servidor y los resultados
HTML que sern vistos en el navegador:
Cdigo ASP

<P>
<% For I = 1 To 5 Step 1 %>
<FONT SIZE="<%= I %>">Maestros
del Web!</FONT><BR>
<% Next %>
</P>

Cdigo HTML
<P>
<FONT SIZE="1">Maestros del Web!
</FONT><BR>
<FONT SIZE="2">Maestros del Web!
</FONT><BR>
<FONT SIZE="3">Maestros del Web!
</FONT><BR>
<FONT SIZE="4">Maestros del Web!
</FONT><BR>
<FONT SIZE="5">Maestros del Web!
</FONT><BR>
</P>

Resultado en el
Navegador
Maestros del Web!

Maestros del Web!

Maestros del Web!

Maestros del Web!

Maestros del
Web!

El ejemplo anterior crea un ciclo que se repite 5 veces y aumenta el tamao del tipo de
letra en una frase establecida.
El desarrollo que se ha venido dando a lo que es ASP ha sido bastante amplio. Entre
sus funciones principales estn el acceso a base de datos, envi de correo electrnico,
creacin dinmica de grficos y otros. Bsicamente, muchas cosas que podemos
realizar por medio de CGI pueden ser realizadas con esta tecnologa. Esto debido a
que el ASP es tan eficiente con escribir cdigo directamente a la interfase de
aplicacin del servidor, con la ventaja de que es ms eficiente que el CGI que depende

de un compilador ya que el ASP corre como un servicio en el servidor, tomando


ventaja de la arquitectura de multitareas.
Para empezar con el desarrollo de las Active Server Pages es necesario un servidor
con Windows NT 4.x o mayor y el Internet Information Server. El IIS es una aplicacin
gratuita que puede conseguirse en el Option Pack del NT. Tambin es posible utilizar
ASP en Windows 9x por medio del Personal Web Server junto al Option Pack
mencionado anteriormente.
En caso del uso de un servidor Linux, Chilisoft ha desarrollado el Chilisoft ASP que
tambin permite el uso de esta tecnologa. Otra opcin es InstantAsp tambin para
correr ASP en servidores que no sean el IIS.
La mayora de proveedores de Hosting pagado con plataformas NT tienen acceso a
esta tecnologa en sus servidores. El cdigo puede ser trabajado en cualquier editor
HTML o de texto. Existen en el mercado dos herramientas para trabajar
profesionalmente el ASP en modo visual como lo son el Drumbeat 2000 y el Visual
Interdev de Microsoft.
http://www.maestrosdelweb.com/editorial/aspintro/

Creacin de pginas web con FrontPage 2000


Pginas web con Word o con Power Point
Una pgina Web tiene una componente importante de esttica: fondos, tipos de letra, insercin de
imgenes, etc. Si bien el programa FrontPage incluye muchas posibilidades, podemos empezar por la
utilizacin del Word o del Power Point.
Probablemente quien lee estas lneas tiene cierta familiaridad con Word, desde luego mucha ms que con
el FrontPage. Pues bien, puede crear la pgina Web en Word y, al terminar, ordenar Archivo Guardar
como pgina Web, con lo que crea un archivo html, que estar disponible para leerse desde el Internet
Explorer. As de fcil.
Concretamente el Word tiene una opcin muy apropiada para este caso que se encuentra en Formato
Temas. Esta opcin ofrece conjuntos de fondos, tipos de letra, estilos, lneas horizontales, vietas, etc.,
armonizados con gusto. El usuario dispone de 68 temas para elegir.
Pero los temas aaden otra caracterstica: rompen con la paginacin. Ordinariamente Word tiene en
cuenta la paginacin. As por ejemplo, una imagen sale en una pgina o en la siguiente, pero no a caballo.
De la misma manera, resulta poco esttico poner como ltima lnea de una pgina un titular, que se
desarrolle en la pgina siguiente (lneas viudas y hurfanas). Al dar formato a un documento teniendo en
cuenta la paginacin, el hecho de aadir o suprimir despus prrafos o imgenes puede descabalar el
documento y es necesario revisar su presentacin final. Pues bien, los temas eliminan estos problemas.
Van orientados a documentos que se van a consultar preferentemente en pantalla, como las pginas
Web. Puesto que se est creando un documento que se va a leer en pantalla, no tiene sentido la divisin
en pginas. Se crea un documento continuo. Puedes poner las imgenes donde quieras, despreocuparte
de la posicin de los titulares respecto del principio o fin de pgina. Se trabaja como en un papel continuo
de verdad, insertas y borras sin que nada se desajuste.
No vamos a explicar aqu cmo crear con Word un documento grficamente atractivo: Word Art,
autoformas, grficos (de barras, circulares, etc.) cuadros de texto, insercin de imgenes, etc.
Una observacin. Al guardar un documento como pgina Web se pierden algunas caractersticas
menores. As por ejemplo, si tienes palabras con doble subrayado, o con sombras, cuando guardes el
documento recibirs el aviso de que se pierden esos detalles. Cuando guardas como pgina Web,
comprueba que en guardar como tipo, figura Pgina Web.

Cuando guardas un documento de Word, obtienes un nico fichero. En cambio, al guardar como pgina
Web, obtienes un fichero principal pero tambin otros adicionales de forma automtica, sin que tengas
que hacer nada. Por ejemplo, las imgenes se graban aparte, de ordinario en formato gif. As el
documento principal no incluye las imgenes, sino slo la llamada a esos ficheros. Son imgenes
incrustadas en tu pgina. Naturalmente al enviar la pgina Web a tu proveedor de Internet debes remitir
tanto el fichero principal como los dems que se han creado (en el ejemplo expuesto, ficheros de
imgenes).

Marcadores
Cuando el documento no es breve, sino que ocupa unas cuantas pantallas, se necesita moverse con
agilidad de una parte a otra del mismo. Esto se hace mediante los marcadores. As, en este documento,
debajo del titular, aparece un a modo de ndice, con vietas, sealando los distintos apartados del
documento. Haciendo clic en cualquiera de los tems de esos mens, sale en pantalla la parte del
documento solicitada. De la misma manera, el botn ARRIBA es un marcador que lleva a principio del
documento. Un marcador es un botn, una llamada que lleva a otra parte del documento.
Entendido lo que es un marcador y cmo se utiliza, veamos la forma de crearlo. Un marcador se crea en
dos fases. Describiremos la creacin del marcador de este epgrafe. Primero crearemos la seal o
banderola en el punto de destino.
Se lleva el cursor a donde dice PGINAS WEB CON WORD O POWER POINT en el texto, como ttulo
de este epgrafe (la parte que est sin subrayar y sin vietas, debajo del botn ARRIBA). Concretamente
delante de la P. Solicitas Insertar marcador, le pones como nombre Word y das a Aceptar.
Pero desde dnde quiero que me enven a ese punto? Desde arriba, desde el ndice, donde dice lo
mismo (PGINAS WEB CON WORD O POWER POINT) pero con vietas y subrayado, debajo del ttulo
del documento. Pues bien: selecciono con el ratn todo este texto y pido Insertar - hipervnculo. Ah
solicitas marcador y, de los que te ofrece la pantalla, eliges Word. Has asociado a toda esa lnea de texto
del ndice, en cualquier punto en el que se haga clic, un marcador que remite al punto deseado: el titulo
del epgrafe en el cuerpo del documento.

Nos hemos extendido en cmo crear una pgina Web con Word. Si el lector maneja mejor el Power Point,
puede crearla con l. Power Point tiene ms facilidad de manejar algunos tipos de grficos. En cambio no
dispone de los temas. El Power Point por su naturaleza se presta a emplearse cuando el documento
ocupa una pantalla y no ms. Una vez creado el documento se graba en Archivo Guardar como
pgina Web. Son vlidos los mismos comentarios que se han realizado respecto al Word, en particular
los referentes a que las imgenes se graban en fichero aparte.
NOTA: Mientras no mejore la velocidad de Internet una pgina Web no debe ocupar ms de 150 Kb
incluidas las imgenes. De lo contrario, la mayora de los visitantes se cansarn de la espera y detendrn
la carga de la pgina, para ir a visitar otra.

FrontPage 2000: Vista pgina. Crear una web de una pgina


Si arrancas el Front Page 2000 y abres una pgina como sta, obtienes:

Observa que estamos en Vista Pgina, y que debajo hay 3 pestaas: Normal, HTML y Vista previa.
Vista Pgina - pestaa Normal es el lugar donde se trabaja una pgina Web. La pestaa HTML es para
usuarios muy avanzados. Vista previa pretende mostrar la pgina tal como se visualizar desde el
navegador (Internet Explorer o similar). El motivo es que en Normal aparecen smbolos (en la imagen
puedes apreciar bastantes) que son cdigos que luego no se vern desde el Internet Explorer. De todos
modos la visualizacin desde la pestaa Vista previa no es exacta. Es posible que alguno de los tipos de
letra programados desde el Front Page, no tengan correspondencia al ser ledos desde el Internet
Explorer, puede suceder lo mismo con colores especiales.. Para ver exactamente el resultado, es
necesario utilizar el icono de Vista Previa que pregunta cul es tu navegador y exige haber grabado la
pgina que deseas ver. La pestaa Vista previa es una buena orientacin, nada ms. Es conveniente dar
a Ver Barra de Vistas, para eliminar el marco de la izquierda y disponer de la pantalla completa.
Sigamos con la pestaa Normal. Mira a continuacin la barra de herramientas ampliada para apreciar
mejor los iconos que ms nos interesan.

Lista de carpetas. Dedica una parte de la ventana de la vista a la estructura de carpetas. Es


ms interesante a medida que el sitio Web se complica. Funciona de manera semejante al
Explorador del Windows: puedes abrir una pgina haciendo doble clic, desplegar y replegar
carpetas, haciendo clic en los smbolos ? y ?, hacer clic con el botn derecho para obtener un
men contextual, mover y renombrar ficheros, etc. (Es distinto de la Vista Carpetas que luego
comentaremos).
Vista previa (icono ya mencionado). Muestra la pgina Web tal como se ver desde el
navegador. Al utilizar por primera vez este icono, preguntar cul es nuestro navegador. Para ver
la pgina es preciso grabarla previamente.

Dejamos para ms adelante los dems iconos.

En Herramientas Personalizar Comandos puedes aadir a las barras (de herramientas, de formato,
etc.) los iconos que desees: los de mayor uso, para una utilizacin ms rpida del programa.

Para crear una pgina Web puedes hacer clic en el icono izquierdo de la barra de herramientas: Nueva
pgina. Es ms correcto hacer clic en Archivo Nuevo Web, o bien en la flecha a la derecha de Nueva
pgina y solicitar Web. Ah sealas el tipo de Web (lo que puede habilitar el asistente correspondiente) y
su ubicacin. Si pides acto seguido la Lista de Carpetas, observars que se ha creado la pgina index y
las carpetas images y _private. Si lo deseas, cambia el nombre de la Web. El nombre de la pgina index
no lo cambies. Cuando construyamos sitios Web compuestos de varias pginas, te recordaremos que es
necesario que la pgina inicial se titule index. Se recomienda poner los nombres en minsculas y no se
permiten caracteres que no sean lcitos para nombre de ficheros.
Te recomendamos que comiences por elegir un Tema de Formato. Son parecidos a los sealados en el
Word, pero ms completos: varios niveles de vietas, la lnea horizontal sale mejor y tiene propuestas
para los botones.
Cuando escribas, observars que la tecla Intro cambia de prrafo dando un salto de dos lneas, mientras
que Shift + Intro slo salta una lnea.
Front page es ms limitado que Word a la hora de tratar el texto: tiene bastantes menos posibilidades.
As, no admite la justificacin a ambos lados, derecha e izquierda, a la vez, no funciona el tabulador, etc.
Dispones de Insertar Lnea horizontal para facilitar la claridad de tu Web.
En Estilo se llama Encabezado a 6 niveles de ttulos, desde el mayor al ms pequeo. No lo confundas
con cabeceras y pies.
Cuando necesitas vietas anidadas (o en ms de un nivel) la solucin ofrecida por Temas es interesante.
Una vez que has escrito lneas en el primer nivel de vietas, un doble clic en el icono de aumentar la
sangra pasa al nivel siguiente de vietas. Vuelves a la situacin anterior con un doble clic en disminuir
sangra. Con listas numeradas existe la misma opcin.

Nivel 1
Nivel 1

o
o

Nivel 2
Nivel 2

Nivel 3
Nivel 3

Nivel 2

Nivel 1

En el apartado Vietas y numeracin del men de Formato existe otra opcin interesante que es: Habilitar
esquemas contrables. Consiste en que las vietas de segundo nivel, pueden ser desplegadas o
replegadas por el usuario con un doble clic.
Ten cuidado con los subrayados, pues la cultura de Internet lleva a esperar de ellos un vnculo. S
restrictivo.

Hemos comentado unos cuantos detalles de Formato para que contaras con algunos elementos al crear
tu primera Web. Han sido, sobretodo, aspectos relacionados con Formato - Temas. Damos como sabidas
las posibilidades de formato del Word, que en buena parte se reiteran en el Front Page. En el prximo
epgrafe ampliaremos posibilidades de Formato especficas de este programa.
Guardar un documento es elemental, como en cualquier programa Windows. El propio Front Page ha ido
guardando las modificaciones ms importantes que has creado, para remediar un posible olvido, fallo
elctrico, etc. Te recuerdo que las imgenes se guardan aparte. No es como en el Word. Aqu el fichero de
la pgina Web slo guarda, adems del texto, el nombre de las imgenes y su ubicacin, para luego
cargarlas. Por eso al Guardar, sale un cuadro de dilogo que pregunta dnde se guarda cada imagen. Te
recomendamos que las guardes en la carpeta images de esta pgina Web. (Atencin: una vez
guardadas, no las cambies de ubicacin).
Posteriormente es elemental abrir pginas Web existentes (para continuar su elaboracin por ejemplo).
Puede interesarte la opcin Herramientas Opciones Abrir automticamente el Web ms reciente
al iniciar Front Page.

Posibilidades de formato. Sonido y algunos efectos


Tenemos un sitio Web compuesto de una nica pgina y estudiaremos los procedimientos ms usuales
para hacerla un poco ms vistosa, variada, con ms recursos, todava sin extendernos en el tratamiento
de imgenes.
Otro pequeo detalle novedoso del Front Page respecto al Word es que dispone en Formato - Bordes de
varios Estilos de borde.
Vamos a comentar Archivo - Propiedades ... (de pgina). La pestaa Mrgenes se refiere a los de
pantalla, si en algn caso se quieren utilizar. Si no hemos utilizado Temas, aparece tambin la pestaa
Fondo. Puedes elegir una imagen como fondo y Front Page la dispondr como mosaico. En un lugar de
la pestaa General pone Sonido de Fondo. Has de poner el nombre del fichero y si deseas que se oiga
siempre (como un bucle continuo) o que se repita slo n veces. Los formatos de sonido ms frecuentes
son wav, que tiene bastante calidad y midi, que con una calidad ligeramente inferior ocupa menor espacio.
En cualquier caso, el sonido supone bastantes KB, y en una pgina Web no es recomendable utilizar ms
que pequeos efectos para el clic del ratn y cosas as.
Por ltimo, vamos a ver dos efectos vistosos. En Formato - Transicin de pgina puedes crear fundidos
y efectos de ese estilo. Has de sealar el evento (por ejemplo al abrir la pgina), el efecto (como mezclar
o revelar) y la duracin, que se recomienda sea de 2 a 5 seg.
Otro efecto se encuentra en Formato - Efectos de HTML dinmico. Empieza por seleccionar el texto
que quieras destacar. Pide a continuacin Formato - Efectos de HTML dinmico y rellena las tres celdas
desplegables. Prueba con clic - Volar hacia fuera - A la izquierda.

Hipervnculos
As como los libros son secuenciales: una letra y otra y una pgina y as hasta el final; los documentos
multimedia no: son hipertextos. El visitante va a navegar por los apartados que ms inters le ofrecen, se
detiene en un punto, vuelve atrs: navega.
Como consecuencia, documentos como pginas Web no constan de un nico fichero secuencial, sino que
estn ramificados. La pgina Web del CPR ofrece en una pantalla los datos bsicos del mismo, en otra
las actividades previstas para el curso, hemos incluido el fichero de biblioteca, para que se pueda
consultar sin necesidad de ir hasta el CPR, los datos de los asesores, los Centros de la zona y otras
informaciones relevantes. Hay que organizar las posibilidades de navegacin de una pantalla a otra. Ha
de plantearse una navegacin clara, sin confusiones, sabiendo en todo momento dnde estamos. Hay
referencias cruzadas. As, desde las actividades hay que facilitar el acceso al formulario que permite
inscribirse por Internet; o al relacionar a los asesores, viene bien dejar una llamada a las actividades que
cada uno lleva.

Cuando se va a crear una pgina Web es importante pensar los contenidos y su estructura, dedicando
una pgina a cada tema que tenga cierta entidad o cierta unidad, y estableciendo los vnculos
correspondientes entre pginas. Hablando con ms propiedad, nos estamos refiriendo a un sitio Web,
que estar compuesto de varias pginas Web.
Suponiendo que ya sabes crear las pginas aisladas, se trata ahora de estudiar cmo se crean los
vnculos, los botones, que llevan de una a otra.
Vers que es muy fcil. Seleccionas las palabras de texto o la imagen a las que vas a asociar el
hipervnculo y solicitas Insertar Hipervnculo o ms sencillamente su icono
pantalla:

. Obtienes la siguiente

Como estars en la carpeta adecuada, en pantalla salen las pginas de tu sitio Web, y con hacer doble
clic en la que te interese has creado el vnculo. Ya est. Lo que has hecho con el doble clic es poner en la
casilla Direccin URL el nombre del fichero de la pgina de destino. (sin http://).
Si quieres, puedes grabar ya la pgina. Al abrirla desde un navegador (Internet Explorer) los vnculos
salen subrayados y en color distinto (si eran vnculos asociados a unas palabras). En cualquier caso, el
puntero del ratn toma forma de mano al pasar por encima. Adems, si detienes el ratn, puedes ver la
direccin de destino a la que remite.
La pgina con la que se abre tu sitio Web ha de llamarse index.
Los vnculos pueden probarse en Vista previa. Tambin en Vista normal apretando la tecla Ctrl a la vez
que se hace clic con el ratn.
Los vnculos tienen cierta variedad, cierta riqueza que pasamos a comentar.
Puedes crear un vnculo a un sitio Web externo al tuyo, es decir, crear en tu pgina un enlace, por
ejemplo al PNTIC. Eso es crear un hipervnculo externo. Para eso, en la casilla Direccin URL has de
poner su direccin completa (comenzando por http://). En la pantalla mostrada inmediatamente arriba
hemos resaltado unos iconos. El primero de ellos permite navegar por la red, de forma que cuando visites

la pgina que deseas, su direccin pasa a la casilla Direccin URL del cuadro de dilogo de creacin de
hipervnculos. No tienes que teclearla y adems has comprobado que es correcta.
Puedes crear vnculos a pginas Web que estn grabadas en tu ordenador, pero que no pertenezcan al
sitio Web que ests creando. Puedes buscarlas con el siguiente icono, que es una especie de Explorador
del Windows para este caso.

Direcciones absolutas y relativas


Una direccin absoluta de un fichero o una pgina es del estilo: c:\Mis Documentos\Mis Web\index.htm
(para un vnculo que desde otra pgina nos lleve a la inicial).
Si pones esto en la casilla de Direccin URL, el vnculo funciona trabajando en tu ordenador. Pero qu
sucede cuando envas tu sitio Web a tu proveedor de Internet? Probablemente lo has alojado en una
carpeta del estilo ~majadaho dentro del ordenador del PNTIC. Tu pgina index no est en la misma ruta
que como estaba en tu ordenador. No est en c:\Mis Documentos\Mis Web del ordenador del PNTIC. El
ordenador del PNTIC tiene su propia estructura y organiza sus propias ubicaciones. La direccin absoluta
que era vlida en tu ordenador, no lo es en el del PNTIC. La conclusin es que las direcciones absolutas
no deben utilizarse, salvo excepciones, ms que para vnculos externos: http:// ...
Ubicacin relativa se refiere respecto de la pgina principal (index). Si tienes todas las pginas de tu sitio
Web en la misma carpeta, la direccin relativa es simplemente el nombre del fichero, sin nada por
delante. Si tu sitio Web no es excesivamente complejo, sta puede ser la solucin ms aconsejable. Al
remitirlo a tu proveedor de Internet, las direcciones relativas funcionan exactamente igual que en tu
ordenador. Si alojas tus distintas pginas Web en carpetas que cuelgan de la principal, la direccin
relativa es la ruta desde la pgina principal hasta la carpeta y fichero en cuestin. Se supone que remitirs
a tu proveedor de Internet toda tu estructura de subcarpetas a partir de la principal. Entonces, volvemos a
insistir, las direcciones relativas funcionarn en el proveedor perfectamente.
Cuando se maneja el cuadro de dilogo Crear Hipervnculo, y la forma de crearlo es el doble clic en el
fichero de la pgina correspondiente, se estn utilizando siempre direcciones relativas.
Si alguna vez pusieras las Direcciones URL a mano, te recordamos que has de poner el nombre del
fichero de destino, y no el ttulo de la pgina (que se crea en Archivo Propiedades).

Marcadores
Ya se han explicado desde el Word, y funcionan en Front Page exactamente igual. Por ejemplo, veamos
el marcador del prximo epgrafe. Hemos ido al ttulo del epgrafe posicionando el cursor delante de la I
de Imgenes. Luego se solicita Insertar marcador, y le hemos puesto el nombre Imgenes. As se crea
el destino del marcador, con ese nombre. A continuacin vas al quinto tem del principio, a la quinta vieta,
seleccionas todo el texto IMGENES y das a Insertar Hipervnculo. Eliges marcador y, de entre los
que ofrece, Imgenes. Ya est creado. Cada vez que arriba hagas clic en IMGENES, el cursor se
desplaza al epgrafe Imgenes del cuerpo del documento.
En el cuadro de dilogo Crear Hipervnculo (arriba expuesto) se ve la casilla MARCADOR debajo de
Direccin URL. Esto quiere decir que cuando creo un vnculo, a una determinada pgina, puedo aadir un
marcador, de forma que el salto sea a determinado punto de esa pgina de destino.
En resumen, un marcador puede crearse para moverse dentro de la propia pgina. En este caso, en
Direccin URL sale como direccin: #Imgenes por ejemplo. Y tambin puede crearse para, al ejecutarse
un vnculo a otra pgina, ir concretamente a un punto de la misma.

Hay vnculos de correo electrnico. Se crean con el icono


. Es necesario introducir una direccin de
correo electrnico, de ordinario aqulla en la que quiero recibir los mensajes de quienes visiten la pgina
y quieran comunicarse conmigo. Una vez creados estos vnculos, haciendo clic en ellos se abrir el
Outook Express con la direccin prefijada puesta en el campo Para. Todo listo para enviar un e-mail.

Terminamos los tipos de vnculos con el vnculo a pgina nueva


. Deseamos crear ahora el vnculo,
pero la pgina de destino an no ha sido creada. Entonces creo un vnculo a pgina nueva, poniendo el
nombre que deseo a la pgina. Luego la confeccionar.
Supongamos que, teniendo el sitio Web en avanzado estado de elaboracin, deseo cambiar de nombre a
alguna pgina, o moverla a otra ubicacin. Nos preguntamos qu suceder con los vnculos dirigidos al
nombre antiguo y a la ubicacin antigua. La respuesta es que, si el cambio se hace desde el Front Page,
desde la Lista de carpetas, l mismo se encarga de actualizar los vnculos. Sin embargo, si los cambios
se realizan por ejemplo desde el Explorador del Windows, entonces los vnculos se quedan sin destino.
Se llaman vnculos rotos. Son vnculos que no funcionarn.
En Ver Informes Vnculos rotos puedes chequear si has tenido algn descuido en la confeccin de tu
sitio Web que haya producido vnculos rotos.
Terminemos este epgrafe sobre hipervnculos viendo cmo se editan.
Estamos en Vista Pgina. Para borrar un hipervnculo, seleccionar su texto o imagen y cortar, o tecla
Supr. Para cambiar ese texto, poner el punto de insercin en su interior y efectuar las modificaciones
necesarias. Si el nuevo texto queda subrayado, significa que el vnculo ha sido correctamente modificado.
Si lo que se desea es modificar su destino, hacer clic con el botn derecho y solicitar Propiedades,
modificando los datos oportunos en el cuadro de dilogo de Modificar Hipervnculo. Dada la facilidad
con la que se crean los vnculos, si tuvieras algn problema para modificar alguno casi vale la pena
borrarlo y crear correctamente el nuevo.
Se puede presentar el caso de desear copiar vnculos externos desde una Web que ests visitando a tu
sitio Web. Haz clic en ese vnculo con el botn derecho y pide Copiar Acceso Directo. A continuacin lo
pegas donde quieras. Tambin es posible copiarlo simplemente arrastrndolo desde el Internet Explorer
hasta tu pgina en el Front Page.

Habilitar los efectos de conversin de hipervnculos


Se encuentra en Archivo Propiedades (Propiedades de pgina) Fondo. Se solicita Habilitar ... y
Efectos de conversin. Puedes determinar que cuando el visitante pase el ratn el texto se ponga
intermitente, o en el color y tamao que quieras, etc.

Imgenes
Al trabajar con imgenes en un sitio web es importante saber que los archivos que se manejan en Internet
son de dos clases: los .jpeg y los .gif.
Los primeros se utilizan para fotografas, las cuales al utilizar este formato comprimido, ocupan menos al
costo de bajar un poco la calidad.
El formato .gif, se utiliza para ttulos, logotipos, y grficos con menos de 256 colores. Tambin se pueden
usar para fotos pero la calidad ser peor.
Si el fichero no es de fotografa, sino que utiliza colores planos, entonces suele manejar pocos colores. Si
no llega a 256 colores, Front Page guardar la imagen en formato GIF. En cambio los ficheros de fotos los
guarda en formato JPEG, que realiza cierta compresin de la imagen. La cuestin es que un fichero de
fotografa ocupa muchsimo espacio (una pantalla viene a ser 15 Mb) y es necesario reducirlo, aunque
sea a costa de un poco de calidad. El ordenador pregunta la razn de compresin que, por defecto, es de
un 75 %.
La forma de insertar imgenes est en el men Insertar Imgenes, que tiene dos opciones: en
Imgenes ofrece los clip art instalados con el Office 2000. En Desde Archivo, podemos buscar cualquier
fichero de imgenes, por ejemplo en los CD comerciales con miles de imgenes, o tambin los que aporta
el disco 2 del Office 2000, que no se instalan en el disco duro del ordenador.
Cuando se insertan imgenes de un CD ROM, o de un programa como el Office, el Front Page
nicamente crea el vnculo correspondiente a esa imagen en su ubicacin actual. Al enviar la pgina al

proveedor que nos la aloja, no tendr ese CD ROM, y no aparecer la imagen. La solucin es empezar
por copiar la imagen a la carpeta en la que estamos trabajando la pgina web e insertarla desde ah.
Otra forma de insertar una imagen es crearla y organizarla en otro programa y despus cortar y pegarla
en el Front Page. Y es que Front Page dispone de escasas posibilidades para tratamiento de imgenes
individuales. El propio Word dispone de los letreros tipo Word Art, las autoformas, los grficos; todos estos
elementos se pueden cortar y pegar despus en Front Page. No digamos si utilizas un programa de
diseo.
Si se trabaja con un escner, se puede cargar la imagen directamente desde el Front Page (tambin
podras hacerlo pasando previamente por otro programa). Se trabaja desde Insertar Imagen Escner
Origen. En este punto seleccionas cul es tu dispositivo y das a Adquirir.

Acerca del Tamao de las imgenes


Como ya dijimos antes, el tamao de los archivos grficos en una pgina Web debe ser pequeo para
optimizar el tiempo de descarga de la pgina. Si abrimos la imagen en algn editor como PhotoShop o el
Microsoft PhotoEditor, se debe elegir ver la imagen al 100% para saber cul es el tamao real de la
imagen que se ver en la pgina. Con esto se lograr un mayor control de la misma.
Otro punto importante es que nunca es conveniente insertar una imagen grande y luego achicarla
mediante los manejadores de la misma (los pequeos cuadraditos que aparecen en los bordes para
cambiar el tamao) del Front Page, ya que si hacemos esto, se achica la imagen que se ve en pantalla
pero no el tamao del archivo.
Para cambiar el tamao abrimos la imagen en el editor y modificamos el zoom hasta el tamao deseado.
En PhotoShop se debe ir a Image/Image size, en los cuadros de la unidad, seleccionamos Percent y
teniendo marcada la casilla Constrain Proportions. A continuacin se indica en cualquiera de los cuadros
de Height o Width (pero solo en uno) el valor del zoom, con lo cual la imagen se reducir al tamao
deseado. Despus se guarda la imagen, con el mismo nombre o con otro para saber que es un archivo
distinto.
Si usamos el Microsoft PhotoEditor el proceso es similar. Debemos ir a Imagen/Cambiar tamao y fijarse
que NO est tildada la casilla Permitir distorsin una vez hecho esto, se vara el porcentaje de Alto o
Ancho.

Propiedades de imagen
Accedes a ellas desde Formato Propiedades, o haciendo clic con el botn derecho en la imagen.

En la pestaa General, Origen de la imagen es de dnde la has tomado, el nombre y ubicacin del fichero
de origen. Este campo lo rellena Front Page l slo cuando insertas la imagen, y no debes tocarlo.
Te ofrece guardarla como GIF o JPEG, de lo que hablamos ms arriba.
Las Representaciones alternativas consisten en que si la imagen es grande y va a tardar en cargarse,
se puede ofrecer un bosquejo suyo en baja resolucin o un breve texto, en el mismo lugar que la posterior
imagen.
En Apariencia puedes determinar la alineacin y tamao exacto de la imagen, en caso de que no te
baste modificarla con el ratn.
Debajo de la referencia a los formatos GIF y JPEG se encuentran las casillas Entrelazado y Barridos
progresivos. Se refieren tambin a que a la hora de cargar la imagen puede hacerse mediante un efecto,
por el que la imagen va apareciendo como borrosa, por lneas, hasta su carga completa. Puede ser ms
til en imgenes de cierto volumen, que tarden en cargarse.
No confundas estas propiedades con las de pgina, que se encuentran en Archivo Propiedades.
Te mostramos a continuacin la barra de herramientas de imgenes:

La posibilidad de aadir texto a una imagen slo existe en el formato GIF, igual que la de establecer un
color como transparente. Pasar a miniatura consiste en que se carga una miniatura de la imagen,
considerando que la carga completa va a ser lenta y puede no ser indispensable para el visitante. Si ste
desea la imagen completa, simplemente hace clic en la miniatura. Ver el plano de acceso al CPR en su
pgina Web.

Ubicacin

Ningn estilo de Ajuste: la imagen se ajustar como un carcter ms.


Izquierda: La imagen se alinear a la izquierda y se rodear con texto.
Derecha: Similar al anterior.
Ningn estilo de ubicacin: en este caso, no se podr mover la imagen de la ubicacin que
tiene, para hacerlo, se selecciona:
Relativo: en este caso se pueden especificar los valores de ubicacin y tamao en los cuadros
de dilogo, as como el orden Z, es decir, la profundidad de la imagen con respecto a los dems
objetos de la pgina, es decir, atrs o adelante del texto, o de otras imgenes.
Absoluto: este mtodo se utilice para ubicar una imagen con total libertad, pero en este caso, el
texto no se ajustar a ella.
Recortar: con esta herramienta podemos eliminar parte de una imagen que no precisemos, con
lo cual tambin reduciremos su tamao. Hacemos clic en la esquina de la porcin de imagen que
deseamos conservar y desplazamos el ratn hasta lograr un cuadrado. Para recortarla, se vuelve
a hacer clic en el botn recortar en la barra de herramientas.
Establecer color transparente: haciendo clic en un color de la imagen, este se volver
transparente. Slo se puede elegir un color.
Descolorar: es til cuando se desea utilizar la imagen en el fondo y que no interfiera con el
texto.
Nuevo muestreo: cuando modificamos el tamao de la imagen con los manejadores, dijimos
que no se modificaba el tamao del archivo, pero si luego de achicarla, apretamos este botn, se
har un nuevo muestreo y se reducir el archivo de modo que el tamao normal sea el que
hemos modificado nosotros con los manejadores.
Restaurar: restaura a la imagen a su estado original, si es que hicimos algn cambio en ella.

Mapas de imgenes
Es algo que rebasa el propsito de este curso y que nos limitamos a describir. Imagina que tienes en una
pantalla el mapa de Espaa, con las autonomas dibujadas. Quieres unos vnculos de forma que si haces
clic en la autonoma de Madrid, te lleva a una pgina sobre ella, si das en la de Galicia o Andaluca, o en
cualquier otra, te llevarn a su pgina respectiva. Es decir, se trata de, a partir de una imagen, crear en
ella unas zonas activas, cada una con un vnculo. Estas zonas pueden ser rectangulares, o tambin
poligonales.

Tablas
Las tablas permiten bastante juego a la hora de situar textos por la pantalla, son la manera de saltarse las
limitaciones que el lenguaje HTML tiene con la ubicacin de los textos.

El 90 % de las posibilidades y manejo de las tablas en Front Page coincide con el modo de usar tablas en
Word, y no lo vamos a reiterar.
Una diferencia pequea pero importante es que una celda se selecciona presionando la tecla Alt mientras
se hace clic con el ratn. (O en Tabla Seleccionar Celda).
Observa las Propiedades de tabla que se obtienen en el men contextual (clic con el botn derecho), o
en Tabla Propiedades Tabla.

Especificar ancho en porcentaje facilita que la tabla se ajuste a la ventana en caso, por ejemplo, de
utilizar marcos.
Para eliminar los bordes, pon en Tamao un 0.
Distinguir un borde claro y otro oscuro proporciona un interesante efecto 3D.
Se puede poner una imagen de fondo a la tabla.
Observa Tabla Insertar Ttulo y en su men contextual las Propiedades de ttulo, que permiten
situarlo tambin debajo de la tabla.
Reproducimos ahora el cuadro de dilogo de Propiedades de celda que se obtiene en su men
contextual.

Por defecto, una celda ocupa una fila y una columna, pero se puede determinar otra cosa, lo cual
desplazar la columna o fila correspondiente, y quedar una tabla no rectangular.
Algunas opciones son idnticas a las de Propiedades de Tabla, slo que aplicadas a la celda
seleccionada.
No ajustar afecta al ancho de la celda cuando se rellene. En efecto, lo habitual es que, si el texto de la
celda excede de su ancho, entonces este texto crea una nueva lnea dentro de la misma celda, que ve
incrementada su altura. Pues bien, la opcin No ajustar va aumentando el ancho de celda a medida que
se teclea, sin pasar a otra lnea.
Tambin existe Tabla Autoajustar que ajusta el ancho de una columna al de la celda que tiene el texto
ms extenso.
La barra de herramientas de Tablas es parecida a la del Word.

Insercin de componentes
Comentarios
Se trata de incluir en la pgina Web comentarios que no salgan, no estn accesibles, al visitante. Se
consiguen en Insertar Comentarios. Slo se ven en Vista Normal, no as en Vista Pgina. El objetivo
es hacerte anotaciones que te recuerden asuntos pendientes. Por ejemplo, en una Web ms importante,
creada por un equipo de personas, las anotaciones para que los dems estn al tanto de los detalles a
tener en cuenta, suelen ser interesantes.

Contadores de visitas

Son para contar el nmero de visitantes. Los podemos poner en la pgina principal (index), que es por
donde los visitantes suelen acceder a nuestro sitio Web. Tambin se pueden poner en otras pginas, y as
sabremos cules son los asuntos que ms interesan a nuestros visitantes.
Se crean en Insertar Componente Contador de visitas a la pgina.
Restablecer pone el contador en el nmero que le digamos, por ejemplo a 1 de enero lo podemos poner
a cero.
Nmero fijo de dgitos quiere decir que saldrn los ceros a la izquierda de las cifras significativas.

Administrador de titulares
El nombre no indica bien de qu se trata. Consiste en crear una sucesin de imgenes. Cada ciertos
segundos se van sustituyendo. Se puede asignar un vnculo a ese espacio de la pantalla.

Fecha y hora
Los internautas agradecen saber si nuestras pginas estn actualizadas, o, por el contrario, su
informacin lleva ya mucho tiempo y, presumiblemente, se ha descuidado el mantenimiento del sitio Web.
Al Insertar - Fecha y Hora aparece la fecha de la ltima modificacin. Automticamente, cuando
actualicemos la pgina, se cambiar la fecha por la de este da.

Marquesina
Ofrece marquesinas de posibilidades muy limitadas.
Puede ser til mirar Estilo Formato Fuente , Borde, etc. Prueba con las diversas opciones, por
ejemplo con Comportamiento Alternar.

Botones activables

El objetivo es crear vnculos ms estticos que los que meramente contienen texto. Puedes crear algn
efecto, cuando el puntero del ratn pasa por encima. En Personalizado se puede aadir sonido o alguna
imagen. Naturalmente se puede indicar un vnculo.

Otros componentes
Se dispone de ms componentes que vemos menos aplicables:
Se puede insertar una hoja de clculo Excel en la pgina Web. As por ejemplo, un banco puede ofrecer el
clculo de una hipoteca. Podramos decir que es una hoja mixta, en la que el banco puede crear la hoja
con su formato, sus titulares, sus frmulas, y despus el visitante, partiendo de esos datos, completa su
caso personal y obtiene los resultados que necesita.
Imagen programada o Inclusin programada de pgina. Deseo que una determinada imagen, o una
pgina entera, entre en vigor a las cero horas del 1 de enero. La creo ahora y la envo a mi proveedor de
Internet como imagen programada, indicando en qu momento debe hacerse pblica.
Existen otros componentes, pero el lector apreciar que corresponden a un curso de otro nivel.

Formularios
Un sitio Web puede generar correspondencia hacia su propia entidad. En el sitio Web del CPR hay un
formulario de Solicitudes para inscribirse a cursos por va telemtica. Es frecuente en la red. Por ejemplo
si deseas un proveedor de Internet gratuito, tendrs que darte de alta, y solicitar tus datos mediante un
formulario.
En Archivo Nuevo Pgina puedes cargar plantillas de formularios. Por ejemplo el llamado
Comentarios. En Vista Previa puedes observar sus posibilidades.
El formulario es algo tpico de Access, aunque tambin se puede crear en Word. De todas maneras
vamos a tratarlo aqu, ya que nos parece un captulo menos conocido que el de las tablas.
Antes de ponerte a insertar campos de formulario, son precisas unas ideas generales:
1.

Cuando insertas el primer campo de tu formulario, Front Page aade los botones Enviar y
Restablecer. En los sucesivos campos no. La idea es que todo formulario debe tener un botn
Enviar, y as lo prev ya desde el principio. Estudiaremos ms abajo este tipo de botones.
En cuanto al botn Restablecer, su accin es borrar todos los campos del formulario, para el
caso de que hayas introducido errores y quieras volver a empezar.

2.

Formulario es, propiamente, lo que aparece cerrado entre un marco de lnea discontinua. Por
eso podramos tener en la misma pgina varios formularios. Observa el formulario siguiente, en
el que se han descrito los principales tipos de campos:

3.

La mayora de los campos se modifican de tamao como cualquier imagen

Cuadro de texto
Rectngulo vaco. El visitante de la Web puede rellenar el l campos de escritura libre, como sus
apellidos.
Cuadro de texto con desplazamiento
Cuando la respuesta es ms larga se pueden usar estos campos que llevan barras de
desplazamiento.
Casilla de verificacin
El visitante de la Web la activar o no. Cuando hay varias, cosa frecuente, puede activarse una,
o varias o ninguna. Por ejemplo: un texto puede estar subrayado, en negrita y/o en cursiva.
Puede tener todas estas propiedades, o una o ninguna.
Botn de opcin
Parecido, pero aqu ha de elegirse uno y slo uno. Por ejemplo, sexo: hombre o mujer.
Men desplegable
En el formulario de solicitud de inscripcin en curso, de la pgina Web del CPR hay varios
campos de men desplegable. As, en el tipo de Centro del profesor, las respuestas son: Pblico,
Privado y Concertado. Tambin son cerradas las respuestas sobre si el profesor es de Primaria o
de Secundaria. En ejemplos de este tipo es preferible introducir previamente todo el elenco de
respuestas, y que el visitante slo tenga que elegir una, sin darle opcin a escribir. De otra forma
se recibirn respuestas variadas: profesor de ESO, profesor de Secundaria, Secundaria, etc.

Los valores se introducen de la siguiente manera: se hace clic con el botn derecho en el campo,
y se elige Propiedades de Campo de Formulario. Ah vas dando a Agregar introduciendo todas
las posibles opciones.

Botn de comando
Despus de crearlo, haces clic con el botn derecho y eliges: Propiedades de Campo de
Formulario.
En Valor/Etiqueta pondrs el texto que quieras. Por ejemplo, para un botn de tipo Restablecer
puedes preferir el texto Borrar.

En Tipo de botn, ya te hemos hablado de los tipos Enviar y Restablecer. En el caso del botn
Enviar, habr que sealar nuestra direccin de correo electrnico. Esto se hace en Propiedades
de Formulario y lo explicamos al terminar los campos de formulario.+

Imagen
Sirve para que un botn lleve una imagen en lugar de un texto.

Falta decir que los campos suelen llevar antes o despus etiquetas, que sealan lo que esperamos que el
usuario teclee en ellos. Estas etiquetas se teclean directamente en el formulario, delante o detrs de los
campos.

Propiedades del formulario


Haciendo clic con el botn derecho en cualquier parte del formulario, puedes elegir la opcin
Propiedades del Formulario.

La principal es borrar donde dice Nombre de Archivo y rellenar, en su lugar, la Direccin de correo
electrnico.
Haz clic en el botn Opciones, y en la pestaa Resultados por Correo electrnico.
Puede ser interesante que con el formulario te remitan los nombres de los campos, y que vaya rellena por
ti, por el creador de la pgina Web, el asunto. De esta manera, cuando recibas los correos, enseguida
sabrs a qu se refieren.
Cuando un usuario te enva un formulario relleno, si todo ha ido bien, recibir al instante un acuse de
recibo educado. Pero puede suceder que t quieras disear esa contestacin. Puedes hacer una pgina
Web para ello y poner en Pgina de Confirmacin su direccin URL.
Una cuestin esttica es alinear esos letreros y campos. La manera seria, aunque algo pesada, de
hacerlo es mediante una tabla. Se crea dentro del formulario una tabla, por ejemplo de dos columnas. As,
en la columna de la izquierda, por ejemplo, pones los letreros y etiquetas, y en la de la derecha los

campos. Otra forma ms primitiva consiste en elegir el estilo Con formato, que lleva consigo un tipo de
letra feo, pero que facilita los ajustes, ya que todas las letras, espacios y signos de puntuacin tienen la
misma anchura.
Las pginas Web profesionales no manipulan a mano los formularios recibidos, sino que los insertan
directamente en ficheros, bases de datos, etc. Nosotros nos conformaremos con imprimirlos.

Marcos
Son unos elementos que facilitan la navegacin. En la pgina Web del CPR puedes ver un marco. Te
ofrece vnculos a las distintas pginas. Lo caracterstico es que en cualquier pgina en que ests, tienes
el marco a la vista, por lo que navegas con rapidez a donde quieres. Slo los usaremos en este sentido,
aunque tambin se emplean para mejorar la esttica, de forma semejante a las tablas pero con ms
potencia.
Para crear un marco es necesario hacerlo con una plantilla. Archivo Nuevo Pgina Pginas de
marcos. Eliges uno cualquiera viendo en Vista previa su resultado.
Al abrir la plantilla aparecen dos botones:

Establecer pgina inicial consiste en sealar qu pgina Web ir en ese marco cuando
arranque, poniendo su direccin URL.
Nueva pgina significa que abres una pgina en blanco para disearla ahora, y ser la que luego
aparecer en el marco.

El reborde azul corresponde al rea activa del marco. En el men de marco puedes eliminar esa rea, o
dividirla en dos (filas o columnas).
Es elemental modificar las dimensiones de cualquiera de las reas con el ratn.

Para un caso como el del sitio Web del CPR, la pgina del marco debe ser la inicial, o sea, index. Luego
vinculas a las distintas partes del marco las pginas iniciales correspondientes, como hemos dicho. Les
podras llamar ndice1, ndice2, etc.
Hay que guardar la pgina de marcos en Archivo Guardar como. Ya hemos dicho que le llames index.
Tambin hay que guardar las pginas que hayas ubicado en cada rea, porque han sufrido una
modificacin. Para ello, las activas y pides Marcos Guardar pgina como. Si no lo haces, al cerrar la
pgina completa del marco te pregunta si deseas guardar las pginas de cada rea, y contestas que s.
El ltimo paso es cmo crear hipervnculos a marcos de destino. En la pgina Web del CPR, cuando
pides Actividades, o Centros, queremos que esos contenidos no salgan a pantalla completa, sino en uno
de los marcos (el rea ms grande) permaneciendo visible la relacin de vnculos en otro marco.

Abre el cuadro de dilogo Marco de Destino y puedes elegir el marco que desees. El significado de El
mismo es el mismo marco en que estaba el vnculo. Toda la pgina se explica por s mismo. Pgina
nueva es abrir una pgina nueva, de manera que tendras dos Internet Explorer abiertos con dos pginas:
la del marco y la nueva con el destino del vnculo.
Haciendo clic con el botn derecho en un marco y pidiendo propiedades de marco, puedes poner un
ttulo al marco, que es el que luego debes poner en el cuadro de texto Destino, en caso de que el marco
de destino no sea ninguno de los tres del prrafo anterior.
Muchas veces todos los vnculos de un marco tienen como destino otro marco fijo. En este caso se puede
predeterminar. Haciendo clic con el botn derecho en el marco donde estn los vnculos, pide
Propiedades de pgina. En la pestaa General, cuadro de texto: Marco de destino predeterminado,
sealas adonde irn los vnculos.
Los marcos se eliminan en Marco Eliminar marco.

Publicacin en la web en el proveedor de Internet

Teniendo la Web en el Front Page, solicita Archivo Publicar Web. En nuestro caso la direccin es:
http://centros5.pntic.mec.es/~majadaho/public. Es normal que tarde unos minutos en ser enviada por
completo.
Otra solucin es hacer FTP con un programa del estilo del CUTE. Conectas con el ordenador del PNTIC
(centros5.pntic.mec.es) pones en la ventana de la izquierda la carpeta en la que est tu Web, y en la
derecha ~majadaho/public, y mueves los ficheros como si estuvieras en el explorador del Windows.
En ambos casos pide contrasea.
A veces el proveedor de Internet que aloja nuestra pgina trabaja con sistemas operativos que distinguen
las maysculas de las minsculas, y que no admiten ms de ocho caracteres en la denominacin de los
ficheros. Esto puede suponer que vnculos o imgenes que no daban problemas en tu ordenador, no
funcionen o no se vean al remitirlos al proveedor. As: puedes tener un fichero llamado Fichero.htm y un
vnculo a l que diga fichero.htm. Cuando lo enves al proveedor, no funcionar.

Algunos comentarios
A la izquierda del Front Page tenemos las distintas opciones de Vistas (Informes, Exploracin, etc.). En
nuestra opinin se trata de una superestructura demasiado pesada para una Web sencilla como las
nuestras. Una Web compleja, por ejemplo de comercio electrnico, con catlogos, etc.; una Web que sea
desarrollada por un equipo de diseadores, s merece cuidar el orden y pulcritud en el trabajo, pero para
nosotros es una carga ms que una ayuda.
Queremos que distingas la Vista Carpetas de la Lista de Carpetas. La primera es un tem ms de los
sealados en el prrafo anterior. La Lista de carpetas en cambio s nos parece muy til. Ya dijimos que es
aqu, y no en el Explorador del Windows, donde deben realizarse los cambios de nombres, movimiento de
ficheros, etc.
Pero tambin podemos hacer que desaparezca esta franja de vistas, y poner y quitar la lista de carpetas.
A veces, el deseo de disponer de mayor espacio en pantalla puede llevar a quitar de la misma los
elementos citados. Ambas opciones se encuentran en el men Ver.
Hablamos en su momento de los Informes de vnculos rotos. Otro informe interesante es el de pginas
lentas. Se encuentra en Ver Informes. Como orientacin, una pgina no puede tardar en cargarse con
un MODEM de 56.000 bps ms de 20 25 seg. Cuando tienes una pgina cualquiera en pantalla, a la
derecha de la lnea de estado (abajo) da esta informacin referida a la pantalla actual.
En el mercado existen unos cuantos programas para hacer ms vistosas las pginas Web. Son
programas para realizar efectos, transiciones, marquesinas, etc. Un ejemplo es el Anfy.

http://www.programacion.com/tutorial/frontpage/

Introduccin a los CGIs


Introduccin
Las siglas CGI vienen de Common Gateway Interface, un mtodo para ejecutar programas en el servidor
Web que reciben datos de una pgina Web. Los programas CGI permiten a los navegantes interactuar
con tus pginas Web para:

Buscar en una base de datos o en el propio sitio Web.


Ofrecerte comentarios sobre diferentes temas.
Hacer preguntas que un programa puede contestar automticamente.
Elegir entre varias opciones ofrecidas por un formulario y recibir una respuesta en base a su
eleccin.
Crear un sistema de compras desde casa.
Etc.

Como creador de pginas Web lo ms seguro es que tengas que realizar las dos partes necesarias en el
uso de CGIs: La parte que ven los usuarios, es decir el documento HTML con los formularios necesarios;
y la parte escondida para ellos, los programas CGI, que se ejecutarn en el ordenador donde est el
servidor cuando sea necesario dar una respuesta al usuario.
Hasta ahora los CGIs eran la nica manera de ofrecer funciones avanzadas a una pgina Web como las
comentadas antes. Sin embargo el WWW va evolucionando y ya han surgido alternativas. Las que tienen
ms xito actualmente son:

Applets Java
Lenguajes de script de los navegadores: JavaScript, VBScript y pronto ECMAScript
(estandarizado por el W3C)
Lenguajes de script para servidores como PHP, ASP y 'JavaScript Liveware' de Netscape.
Ciertos controles ActiveX que slo funcionan en navegadores y servidores Web de Microsoft.

NOTA: Este es un tutorial del interfaz que trata el uso del CGI en servidores Web Unix. La gran mayora
de los servidores que hay en el mundo son de este tipo, an as todo lo que se cuenta puede ser
extendido con ligeras variaciones a servidores en otras plataformas, como pueden ser las de Windows
NT.
El problema de los dos primeros es que son tecnologas propietarias, y por tanto hay que pagar a la
compaa correspondiente (o a un tercero) para poder usarlos.
Los applets Java, si son una buena alternativa a los CGIs, pero las diferencias entre un sistema y otro son
muchas, y por tanto no puede sustituirle siempre.

Qu es un programa CGI?
Empecemos por el principio. El interfaz CGI consiste en un conjunto de normas que permiten a una
pgina Web comunicarse y ejecutar con programas externos a la pgina. Estos programas deben a su
vez seguir tambin una serie de normas. A los programas que cumplen estas reglas, impuestas por el
interfaz CGI, se les llama programas CGI, scripts CGI o simplemente CGI's, y pueden estar escritos en
cualquier lenguaje, tanto interpretados como compilados, siendo los ms usados los siguientes:
Perl
Este lenguaje interpretado es el ms usado a la hora de hacer CGI's debido a las grandes
facilidades que ofrece en el tratamiento de texto. Suele estar presentes en todas las plataformas
tipo Unix, como Linux.
Bash (sh) o cualquier otra shell de Unix
Son usados por su increble sencillez y facilidad de aprendizaje. Sin embargo tienen fallos de
seguridad y no es aconsejable usarlos excepto para CGI's muy sencillos.
C o C++
Son tambin muy usados. Ofrecen la ventaja de que son lenguajes mucho ms potentes, pero
tienen otros inconvenientes: son ms difciles de aprender, es necesario compilarlos y sobre todo
porque lleva ms tiempo hacer un programa usndolos que usando por ejemplo Perl.
A partir de ahora hablaremos de CGI's para referirnos a este tipo de programas. Su principal caracterstica
ser que se ejecutan en el ordenador donde est el servidor Web, y nunca en el del navegante que visita
la pgina.
La siguiente pregunta bsica es qu limitaciones tiene un CGI? Como he mencionado antes usando
CGI's se puede dotar a una pgina Web de una interactividad que sera impensable con ningn otro
mtodo. Sin embargo no es posible ejecutar cualquier programa desde una pgina Web. Por ejemplo no
puedes entrar en la pgina de Microsoft y ejecutar all mismo la ltima versin de por ejemplo el MS-Word
o ir a un servidor Unix cualquiera y ejecutar el interfaz grfico X-Window.
El propio interfaz CGI's impone severas limitaciones, que se derivan por el propio funcionamiento del
sistema:

En una pgina Web se incluye la direccin URL de un CGI. En principio puede introducirse una
direccin de un CGI, en cualquier lugar donde puede introducirse una direccin de una pgina
Web.
Como consecuencia de una accin del usuario el navegador enva al servidor Web una peticin
de acceso a esa direccin (junto con informacin adicional).
El servidor se da cuenta de que la direccin es un programa CGI y lo ejecuta, usando como
entrada al programa la informacin adicional enviada por el navegador.
Al ejecutar un CGI desde una pgina se le puede mandar toda la informacin que se quiera, por
ejemplo la informacin que el usuario ha introducido en un formulario.

El CGI procesar esta informacin y devolver en general una pgina en formato HTML que crea
sobre la marcha con los resultados obtenidos o bien una direccin de una pgina ya existente o
bien una imagen. Tambin es posible devolver otros tipos de datos pero son menos usados y no
entraremos en ellos.
El servidor recibe la respuesta del CGI y se la enva al navegador, quien la formatea
adecuadamente y la muestra al usuario.

En resumen, debe quedar claro que el CGI recibe unos datos, los procesa y devuelve otros datos. El
usuario no puede interacturar directamente con el programa CGI. Para obtener ese efecto hay que usar
apropiadamente el lenguaje HTML y hacer sucesivas llamadas a uno o varios CGI's.
Lo ltimo que nos queda por decir de los programas CGIs es respecto a su forma de interactuar con el
servidor Web. Es muy sencillo, toma los datos de entrada por la entrada estndar (como si hubiera un
usuario escribindolos en un teclado) y enva los datos de salida por la salida estndar (como si los
mandramos a una pantalla). Gracias a esta sencillez cualquiera que haya programado en un lenguaje de
programacin puede realizar un CGI sin tener que aprender muchas cosas nuevas.

Diferencias con Java y JavaScript


Antes de continuar veamos las diferencias con estas dos otras tecnologas de las que ya hemos hablado
anteriormente.
Java es un lenguaje orientado a objetos muy similar a C++ (aunque algo ms sencillo) que no ofrece
prcticamente ninguna limitacin a los programadores que lo usen. Utilizando este lenguaje pueden
escribirse los llamados applets. Estos applets tras ser escritos en Java se compilan. En concreto se
traducen a bytecodes, un lenguaje intermedio entre el Java y el cdigo mquina. El programa ya
compilado se guarda en un archivo con terminacin .class y se inserta en una pgina usando las
etiquetas apropiadas de HTML. Cuando un usuario visita la pgina el archivo .class es transferido a su
ordenador donde se ejecuta. Usando CGI's esto es radicalmente distinto ya que el programa CGI SE
EJECUTA EN EL SERVIDOR! Esto quiere decir que cuando tu accedes a una pgina que usa un CGI,
pongamos por ejemplo YAHOO, y ejecutamos dicho CGI el programa se ejecuta en el ordenador donde
estaba la pgina, en nuestro ejemplo en el ordenador de YAHOO. El programa nunca llega al ordenador
del usuario.

JavaScript tiene caractersticas similares a Java, pero es un lenguaje interpretado (no necesita ser
compilado) y se introduce junto con el cdigo HTML. Tambin se ejecuta en el ordenador del usuario.
Si queremos realizar algo sencillo que puede ser hecho con JavaScript o incluso Java, es preferible
usarlos antes que acudir a un CGI, pero esto no ser posible siempre. Por ejemplo, cuando necesitemos
acceder a una base de datos o a cualquier otra fuente de datos del servidor los CGIs sern nuestra nica
solucin.

Puedo yo usar CGI's?


Para poder usar CGIs el servidor Web en el que tenemos nuestra pgina se deben cumplir algunos
requisitos. Adems, generalmente, necesitaremos permiso para usar nuestros propios CGIs . Para saber
lo que tenemos que hacer en nuestro caso concreto tenemos que preguntar al encargado de mantener el
sitio Web (llamado habitualmente WebMaster).
En general si alojamos nuestras pginas en algn servidor gratuito no podremos usar nuestros propios
CGIs, aunque siempre nos quedar la posibilidad de usar los existentes. En caso de que los haya estarn
documentados (pregunta a tu WebMaster), y lo nico que tendremos que hacer es incluir las etiquetas
que nos indiquen para incluirlo en la pgina.
Si eres de los afortunados con acceso a un servidor Web con posibilidad de albergar CGIs una vez hayas
programado uno tendrs que incluirlo en un directorio dedicado a almacenar este tipo de programas. Tu
WebMaster te dir que directorio del sistema ser. Una vez dejados ah los programas sern accesibles
en el del WWW aadiendo al URL un directorio virtual generalmente llamado cgi-bin.
En lo que se refiere a la programacin del CGI, es aconsejable tener experiencia anterior en
programacin. Adems es recomendable echar un vistazo a algn CGI escrito por algn experto, para
hacernos una idea de lo que necesitaremos.

Introducir un CGI en una pgina Web


Para introducir un CGI en un WEB es necesario usar el lenguaje HTML. Existen tres formas de hacerlo:

Usando la etiqueta A:

<a http="direccion_del_CGI">Texto</a>
Usando la etiqueta IMG:

<img src="direccion_del_CGI">
Usando un formulario (este mtodo se tratar ms adelante en detalle):
<form action="direccion_del_CGI" >
<!-- Elementos del formulario -->
</form>

El primer mtodo slo sirve para scripts sencillos y se us en su da para crear mapas de imgenes
situados en el servidor. Hoy en da no es muy usado.
El segundo mtodo suele servir para invocar un CGI que da como respuesta una imagen.
Un ejemplo de este tipo de uso son los contadores. En ellos, cuando el navegador llega a esta lnea del
cdigo HTML pide al servidor que le mande un archivo con el nombre direccion_del_CGI. El servidor
se dar cuenta que en realidad lo que debe hacer es ejecutar el programa de ese nombre. Este programa,
que ser un script CGI, busca en una base de datos (que puede ser ms o menos complicada), cuantos
accesos ha habido hasta ahora y enva al navegador la imagen adecuada. La imagen ser (como habrs
adivinado ya) un nmero correspondiente al nmero de visitas recibidas, incluida la tuya.
El tercer mtodo es sin duda el ms verstil y usado de todos, y en al que prestaremos mayor atencin de
ahora en adelante. Su funcin es procesar los datos provenientes de un formulario.

Un ejemplo simple
Vamos a entrar en materia creando un CGI simple, cuya funcin ser dar la hora actual cuando el usuario
lo pida.
El cdigo HTML que se incluir en la pgina ser el siguiente:
<a href="http://www.unsitio.es/cgi-bin/fecha">
Dime la fecha
</a>
Cuando el navegante pulse sobre el texto Dime la fecha se enviar una peticin al servidor y se ejecutar
el CGI, tal y como hemos visto antes.
El programa necesario para generar la fecha es muy sencillo, as que hemos elegido como lenguaje de
programacin bash:
#!/bin/bash
echo Content-type: text/plain
echo
/bin/date
La primera lnea simplemente dice que se debe usar el intrprete de bash para ejecutar este programa, es
necesario indicarlo siempre que programemos en bash.
Las dos lneas siguientes usan el comando echo cuya funcin es mandar el texto a continuacin por la
entrada estndar. En el caso de los CGIs todo lo que vaya por la entrada estndar ser recogido por el
servidor Web y mandado al navegador. El estndar CGI establece que la primera lnea que se enve debe
ser de la forma:
Content-type: Tipo Mime
En este caso el tipo Mime es text/plain para indicar que todo lo que vamos a enviar al navegador ser
texto. La lnea siguiente a esta debe estar en blanco, lo que conseguimos con otra llamada al comando
echo.
La ltima lnea del programa es la que realmente realiza toda la funcionalidad. Llama al programa de Unix
/bin/date que devuelve la fecha actual por la entrada estndar. Entonces es mandada al Navegador
que la muestra por pantalla.

Acceso a bases de datos


Despus de ver un ejemplo es hora de explicar en ms detalle cual es la estructura de todo programa
CGI.

Introduccin
Un CGI recibir algn tipo de informacin del navegador a travs del servidor. Despus de procesarla
devolver algn otro tipo de datos. Pero la salida de estos datos debe seguir una serie de normas.
Como hemos adelantado en el ejemplo, la primera lnea debe indicar el tipo de respuesta que estamos
dando. Los tres posibles mtodos son: Content-type, Location y Status. El ms popular es el
primero, as que ser el que veremos. La forma de usarlo ser indicando el tipo mime de los datos que
estamos enviando. Los ms comunes son:
Content-type: text/html
Documento HTML
Content-type: text/plain
Texto

Content-type: image/gif
Imagen con formato GIF
Content-type: image/jpeg
Imagen con formato JPEG
Content-type: video/mpeg
Vdeo en formato MPEG
La lnea con el tipo MIME, debe ir seguida obligatoriamente de una lnea en blanco. La forma de enviar
esta lnea en blanco depender del lenguaje que estemos usando.

Los datos de salida


Despus de la cabecera el resto de lo que enviemos sern los propios datos que nos ha pedido el
navegador, y debern ser concordes con el tipo MIME que hemos indicado en la cabecera.

CGIs con argumentos


Tambin es posible pasar argumentos a un CGI igual que lo hacemos con cualquier otro programa. La
forma de hacerlo es la siguiente:
<a href="/cgi-bin/cgi?arg1+arg2+arg3">ejectame</a>

Como vemos el nombre del CGI va separado de los argumentos por una interrogacin. Despus de sta
podemos poner tantos argumentos como queramos separados por el smbolo +. La forma de recoger
estos argumentos desde el cdigo del programa CGI, ser la misma que use el lenguaje de programacin
que estemos usando para recoger los argumentos que se pasan por la lnea de comando.
Hay otra forma adicional para pasar argumentos. En general se usa para pasar datos que no varan en las
distintas invocaciones del CGI. El mtodo consiste en usar el smbolo / siguiendo al nombre del CGI y
antes de la interrogacin que indica el comienzo de los argumentos. El texto que haya entre estos dos
smbolos ser pasada al CGI. Un ejemplo (genrico) de una llamada al CGI usando este mecanismo
sera:
/cgi-bin/cgi/informacion_extra?arg1+arg2+arg3

El programa CGI podr acceder a la informacin pasada de esta forma a travs de la variable de entorno
PATH_INFO. El CGI debe acceder a esta varible para obtener los datos pasados. Cmo hacer esto
depender del lenguaje de programacin.

CGIs para procesar formularios


Conceptos bsicos
Esta es la funcin ms comn para los CGIs hoy en da. Llamar a un CGI directamente desde un enlace,
como hemos hecho hasta ahora, slo permite pasarle unos parmetros fijados al escribir el cdigo HTML
de la pgina. Los formularios permiten que el navegante introduzca toda clase de informacin, que sea
mandada al servidor y procesada por el CGI. Los programas usados son los mismos que hemos visto
hasta ahora.
Cmo ya vimos al hablar de formularios, la forma de indicar la direccin del programa CGI que debe
procesar la informacin se indica en el atributo ACTION:
<form action="cgi-bin/procesaform">
</form>
Cuando el usuario pulse al botn de envo del formulario el navegador llamar al CGI y mandar con la
llamada toda la informacin que se haya introducida. Esta informacin estar codificada en pares
nombre_campo/valor. Adems la informacin sufrir una codificacin especial, siguiendo las siguientes
normas:

Cada par nombre_campo/valor est separado por un ampersand: &


Los valores estn del nombre del campo por el signo igual: =
Todos los caracteres especiales, es decir, aquellos que no pertenezcan al ASCII de 7 bits sern
codificados con tres smbolos: Un signo de porcentaje y un valor hexadecimal de dos dgitos
indicando su nmero de ASCII extendido: %NN
Tambin sern enviados de esta manera los caracteres especiales, incluyendo &, = y % para no
confundir cuando se usan como datos y cuando se usan como carcter de control.

Por ltimo todos los espacios se codifican con el signo +.

Debido a esta codificacin lo primero que debe hacer todo CGI ser llevar a cabo una decodificacin.

GET y POST
Los dos mtodos para mandar la informacin asociada a un formulario son GET y POST. Cual usar el
navegador se indicar en el cdigo HTML con el atributo METHOD.
Si usamos GET todos los datos se almacenarn en la variable de entorno QUERY_STRING, y el
programa CGI debe leerlos de ah. El problema es que esta variable suele tener una longitud limitada. En
ocasiones esta limitacin es de 256 caracteres, lo que limita su uso a formularios muy sencillos. Cabe
decir que en los casos de la seccin anterior en los que invocbamos a un CGI con la etiqueta A,
estbamos usando este mtodo.
Si usamos POST el CGI recibir los datos por la entrada estndar, y por tanto no hay limitacin en el
tamao de los mismos. Si es necesario conocer dicho tamao para procesar los datos puede obtenerse
leyendo la variable de entorno CONTENT_LENGTH. ste es el mtodo ms seguro de usar y por tanto el
ms utilizado.

Variables de un CGI
Como hemos visto, es habitual que un CGI deje informacin en una variable de entorno. Existen una serie
de variables extra donde se almacena informacin de gran utilidad, como la direccin IP del navegante, el
navegador que usa, etc. Las ms importantes estn resumidas en la siguiente tabla:

Variable
SERVER_NAME
SERVER_SOFTWARE
GATEWAY_INTERFACE
SERVER_PROTOCOL
SERVER_PORT
REQUEST_METHOD
HTTP_ACCEPT
HTTP_USER_AGENT
HTTP_REFERER
PATH_INFO
PATH_TRANSLATED
SCRIPT_NAME

Significado
Direccin IP del host donde est el CGI.
Tipo de servidor Web que se est usando.
Versin del interfaz CGI.
Versin del protocolo HTTP.
El puerto TCP que se est usando. En la mayora de
servidores Web es el 80.
Mtodo de envo de informacin: POST o GET.
Lista de los tipos MIME (content-types) que acepta
el navegador.
El navegador usado por el usuario.
Direccin URL del documento HTML donde estaba el
formulario.
Informacin extra (visto antes)
La variable PATH_INFO adaptada al sistema
especfico donde est el CGI.
Nombre del CGI.

QUERY_STRING
REMOTE_HOST
REMOTE_ADDR
REMOTE_USER
REMOTE_IDENT
CONTENT_TYPE
CONTENT_LENGTH

Argumentos pasado al CGI.


Nombre del ordenador que envi los datos.
Direccin IP de dicho ordenador.
Nombre del usuario.
Sirve para el mtodo de identificacin ident.
Tipo de informacin que llega por la entrada estndar.
Por defecto ser: x-www-form-urlencoded que es la
codificacin que hemos visto antes.
Longitud de los datos que llegan por la entrada
estndar cuando hemos usado POST.

Para saber ms
Con lo explicado en este documento ya conoces las bases de la creacin de CGIs y lo que puedes lograr
con ellos. Si quieres aprender ms y hacer algn CGI complejo, el siguiente paso a seguir es elegir un
lenguaje (Perl o C son dos buenas elecciones) y leer un tutorial o un libro dedicado especficamente a la
creacin de CGIs con ese lenguaje. Adems es muy aconsejable leer el cdigo de varios CGIs hechos por
expertos, especialmente para aprender las tcnicas ms comunes, as como aspectos de seguridad en
CGIs.
Existe una serie de programadores que han puesto a disposicin de todo el mundo los scripts CGI que
han hecho. Podemos usar estos CGIs de dos formas: copindolo al ordenador donde est nuestro
servidor Web (si nos dejan) o usarlo desde el servidor donde lo han puesto los propios autores. En este
ltimo caso nos lo dirn explcitamente. Una direccin donde puede obtenerse un listado de estos CGIs
es:
http://www.cgi-resources.com/Programs_and_Scripts/
Tanto si vamos a usar estos CGIs como si queremos escribir los nuestros propios es muy apropiado coger
alguno de estos programillas de uso gratuito para ver como estn programados. Se puede aprender
mucho viendo el cdigo de programadores experimentados.

http://www.programacion.com/tutorial/cgi/
La programacin web de las pginas ofertadas se realiza en los siguientes
lenguajes:
HTML: HyperText Markup Language. El primero de los lenguajes de
programacin web. Se escribe el cdigo caracter a caracter para lograr
que las pginas ocupen el menor tamao posible y sean rpidas a la
hora de cargar.
CSS: Cascading Style Sheets. Hojas de Estilo en cascada. Lenguaje que
se encarga de especificar al navegador como debe de presentar el
documento al usuario. Las hojas de estilos sern todas validadas.
JavaScript: Un viejo conocido lenguaje de programacin web de script
del lado del cliente que permite aadir una serie de efectos dinmicos
a las webs.
PHP: Lenguaje dinmico del lado del servidor. PHP es, con ASP y JSP,
uno de los grandes conocidos de hoy en da en lo que a programacin
web se refiere. Estos lenguajes permiten hacer prcticamente todo lo

que sea posible desde el lado del servidor. Las pginas se generan
automticamente y son enviadas al cliente, lo que da una gran
cantidad de posibilidades con respecto a la programacin. El soporte de
servidores para este tipo de lenguajes suele ser algo ms caro que el
habitual, no son muchas las empresas que dejan usar PHP de forma
gratuita.
MySQL: Las bases de datos son algo indespensable en determinados
sitios, MySQL es, hasta hoy, el perfecto compaero (aunque no el nico)
de PHP para generar sites dinmicos con grandes volmenes de
informacin y acceso a bases de datos. La integracin de las bases de
datos en la programacin web actual, junto con los lenguajes de
programacin web dinmicos, dan infinitas posibilidades en el
desarrollo de cualquier sitio web. El soporte de MySQL en servidores
suele ser ms caro que el soporte de PHP.
Scripts PHP: Puedes encontrar scripts interesantes para tu web en PHP,
todos ellos bajo la licencia GNU GENERAL PUBLIC LICENSE (GPL),
tambin encontrars el "Tribuna Libre", un shoutbox o tagboard con el
que tus visitantes pueden dejar mensajes en tu web., es muy fcil de
instalar y configurar y no requiere base de datos, aunque tambin est
disponible una versin que usa MySQL.

Curso de Flash
Unidad 1.

Introduccin a Flash 5

Qu es FLASH?
Flash 5 es una
potente
herramienta
creada por
Macromedia que
ha superado las
mejores
expectativas de
sus creadores.
Inicialmente
Macromedia
Flash fue creado
con el objeto de
realizar
animaciones
vistosas para la
web, as como
para crear GIFs

animados.
Los motivos
que han
convertido a
Flash 5 en el
programa elegido
por la mayora de
los diseadores
web profesionales
y aficionados son
varios. Veamos
pues, porqu es
interesante Flash
5:

Porqu usar FLASH 5?


Las posibilidades de Flash son extraordinarias, cada nueva versin ha mejorado
a la anterior, y el actual Flash 5 no ha sido menos. Aunque su uso ms frecuente
es el de crear animaciones (a lo largo de este cu
rso veremos lo sencillo que puede resultar) sus usos son muchos ms. Son
tantos, que todos los diseadores web deberan saber utilizar Flash.
Flash ha conseguido hacer posible lo que ms se echa en falta en Internet:
Dinamismo, y con dinamismo no slo nos referimos a las animaciones, sino que
Flash permite crear aplicaciones interactivas que permiten al usuario ver la web
como algo atractivo, no esttico (en contraposicin a la mayora de las pginas,
que estn realizadas empleando el lenguaje HTML). Con Flash podremos crear de
modo fcil y rpido animaciones de todo tipo.
Flash es fcil de aprender, tiene un entorno amigable que nos invita a sentarnos
y pasar horas y horas creando lo que nos dicte nuestra imaginacin, pero esto no
es suficiente para ser el preferido por los diseadores profesionales... Entonces
qu es?

Las alternativas a Flash 5. Javascript


Desde hace mucho tiempo, el lenguaje HTML ha mostrado carencias
importantsimas en todos los aspectos. El HTML crea pginas web estticas,
pginas en las que todo el movimiento que podemos encontrar se debe a
imgenes animadas (GIFS) o a vdeos insertados en ellas... Este lenguaje,
revolucionario en su da, demostr pronto que era insuficiente en todos los
campos. Pronto comenzaron a surgir alternativas:
El Javascript naci con el objeto de crear acciones o programas cortos que se
pudieran insertar en la web para darle vida. El Javascript, no es un lenguaje de
programacin propiamente dicho, pues slo crea "acciones" que se ejecutarn
posteriormente en el navegador que visualice la pgina, jams podremos crear un
programa en Javascript, slo complementos para la web. Este lenguaje presenta
varios inconvenientes, en primer lugar, su ejecucin puede resultar peligrosa para
la persona que accede a una web, por lo que muchas personas optan por
desactivar el "Javascript" de sus navegadores. Si nuestra pgina web contiene
mucho cdigo Javascript, simplemente, no lo vern. En segundo lugar y como con
casi todo, existen navegadores (Cada vez menos, eso s) que no lo soportan y
sera intil intentar ejecutar un cdigo Javascript si el navegador no lo reconoce.

Adems, el Javascript no sirve para crear pginas web, tan slo las complementa,
por lo que su uso general suele estar enfocado a pequeas "ayudas" en la
interactividad de la web, como por ejemplo realizar comprobaciones en los
formularios, efectos en la barra de estado... ).
Debemos destacar adems, que Flash puede trabajar conjuntamente con
javascript y ejecutar cdigos y funciones Javascript sin problemas, por lo que
Javascript se convierte en una ayuda para todos los usuarios de Flash 5
Para ver unos ejemplos de usos de Javascript y sus cdigos, visita nuestra
Pgina Avanzada

Las alternativas a Flash 5. CSS


Aunque muchos no se hayan dado cuenta, HTML tiene una potencia muy
limitada en el tratamiento de textos. De hecho, el principal problema del HTML a la
hora de mostrar y distribuir textos por pantalla no suele ser su incapacidad para
hacerlo (las posibilidades que permite suelen ser ms que suficientes para
cualquier usuario normal), sino que su problema es la falta de precisin. As,
resulta prcticamente imposible asegurar que el texto vaya a aparecer tal y como
yo quiero en el navegador de otra persona, o por ejemplo, el HTML no permite
crear justificados de textos o simplemente dejar un margen a la izquierda del
documento... Para esto se crearon las Hojas de Estilo en Cascada (CSS en
ingls).
Su potencia es mucha, y cuentan con la ventaja de que se han convertido en un
estndar (aunque siempre habr alguien incapaz de visualizar un contenido que
use una hoja de estilo). Adems de permitir administrar los textos e imgenes
como queramos por nuestra pgina web, son una forma magnfica de simplificar el
cdigo de la pgina web y de acelerar su creacin, ya que como su nombre indica
son "Hojas de Estilo", una vez creado el tratamiento que queremos dar a un tipo de
texto (por ejemplo, a los ttulos), todos los ttulos que creemos y los identifiquemos
como tales, tendrn ese tratamiento (color, tamao de la letra, tipo de fuente...).
Gracias a las CSS hemos ganado en control sobre nuestras pginas web, y tal vez
en vistosidad y diseo, pero no sirven para crear animaciones.

Las alternativas a Flash 5.


DHTML
Hemos visto como se solucionan los principales problemas que tiene el HTML,
pero an falta por saber cmo se intenta eliminar esa "estaticidad" caractersticas
de las pginas HTML. La primera solucin viene del propio HTML. Se llama
DHTML (O HTML Dinmico) y como su nombre indica se cre para crear
contenidos en movimiento en las pginas web. Su funcionalidad llega hasta mover
objetos por la web, y sobre todo, se emplea para crear mens animados. Seguro
que habeis visto un montn sin daros cuenta. Suelen tener esta apariencia:

En realidad el DHTML no es ms que


una combinacin de HTML y Javascript (de
ah que lo hayamos dejado para el final),
aunque es una buena solucin para crear
mens vistosos sin animaciones
extraordinarias.
Su inconveniente? Hay demasiados
navegadores que tiene problemas con l y
su carga puede ser lenta o retardada...

El Eterno Debate
Y ante todo esto Qu nos ofrece Flash? Pues Flash es, con diferencia, la
herramienta ms potente del mercado para crear contenido multimedia para la
web. Presenta 2 inconvenientes importantes.
El primero es la compatibilidad con FLASH. Al igual que algunos navegadores
no soportan javascript o no pueden ver contenidos DHTML (o incluso CSS), para
poder ver FLASH se requiere un PLUGIN especial de la casa Macromedia. Un
PLUGIN es un programita especial que permite a tu navegador identificar las
pelculas FLASH y descargarlas y visualizarlas correctamente.
Este PLUGIN es gratuito. Te har falta para seguir este curso, sino lo tienes
puedes descargarlo AQU. Por suerte, cada vez ms navegadores lo llevan
incorporado y cada vez ms gente sabe lo que es y no se asusta cuando se le
ofrece. As que cada vez ms gente lo tiene.
El segundo
problema es el
tamao que
ocupan las
pelculas y su
tiempo de
descarga.
Mientras que
una pgina
HTML puede
ocupar unos 10
KB como media,
una animacin
Flash ocupa
mucho ms.
Evidentement
e depende del
contenido que
tenga, pero
suelen superar
los 100 KB con
facilidad, y si
adems
incorpora
sonidos es fcil
que la cifra se

Con Flash se pueden hacer pginas web realmente


asombrosas

dispare. Al
ocupar ms
tiempo, el tiempo
que tarda en
estar visible el
contenido Flash
es mayor y no
todos los
visitantes estn
dispuestos a
esperar...
simplemente, se
irn a otra
pgina.
Por otra parte,
las conexiones
de banda ancha
son cada vez
ms numerosas,
lo que ellimina el
problema del
tiempo de
descarga, pero
el da en el que
todo el mundo
se conecte a
internet a alta
velocidad an
est lejos, as
que el debate
seguir abierto
mucho tiempo.
Aqu teneis
algunas pginas
interesantes
hechas con
FLASH 5
Real
Desig
English
Eye4
n
Institut
u
Malag
e
a

Todos estos
temas, se
tratarn en
profudidad en el
tema final.
Optimizacin de
pelculas.

Resumiendo, insertar o no contenido Flash en una pgina web puede ser


cuestionable (a da de hoy), aunque depende de muchas cosas, al igual que
insertar DHTML, por ejemplo. An as, no hemos de olvidar que Flash tiene
muchsmas aplicaciones ms (hecho que ha provocado que otras compaas
traten de sacar a la venta "clnicos" del Flash). Por ejemplo la creacin de CDs
interactivos (como los que incluyen las revistas de informtica, por ejemplo), la
creacin de banners publicitarios o lo que ms est de moda ahora: La creacin de
dibujos animados usando Flash 5 (os sorprendera saber la cantidad de dibujos
animados conocidos creados o animados mediante Flash). Adems, Flash tiene
uso industral, pues se emplea para optimizar planos, crear diseos de interiores y
trabajar con imgenes vectoriales en general. No dejeis de aprender a manejar el
programa con ms futuro... (al menos en cunto a diseo web)

Unidad 2.

Mi primera Animacin Flash

Comenzando
Una de las caractersticas principales de
Flash 5 es su sencillez, esta sencillez en su
utilizacin permite crear animaciones de un
modo efectivo y rpido.
Pongamonos en situacin, supongamos
que queremos crear una animacin en la que
una pelota realice un movimiento de "bote",
es decir, que baje y suba. Puede parecer un
trabajo de horas, pero nada ms lejos de la
realidad. Veamos cmo Flash nos lo pone
fcil

Realizando la Animacin

En este apartado no pretendemos ensear cmo crear una animacin Flash (pues
eso se ver ms adelante), el objetivo es que entedamos cmo crea Flash las
animaciones y de que modo nos facilita el trabajo.
A primera vista, lo lgico parece ser dibujar la pelota en cada instante del
movimiento, de modo que cuantos ms instantes dibujemos, ms real parecer el
movimiento. Pues bien, con Flash bastar con crear 3 fotogramas: en el primero
dibujaremo la pelota en el instante inicial (arriba del todo), en el segundo se dibujar la
pelota en el momento de tocar el suelo y en el tercero la pelota volver a estar arriba
(en realidad este tercer fotograma no har falta crearlo, pues bastar con copiar el
primero). Por tanto, vemos que el trabajo ms largo (dibujar los objetos) ya est hecho.

Ahora, se determina el tiempo que durar cada movimiento (es decir, el tiempo que
transcurre entre los instantes en los que la pelota est arriba y abajo) y por ltimo se le
indica a Flash que cree una animacin de movimiento entre estos fotogramas. Fcil
verdad?
Observa como ha quedado:

Unidad 3.

El Entorno de Trabajo

La Interfaz de Flash 5
Flash 5 cuenta con un entorno o interfaz de trabajo de lo ms manejable e
intuitiva. Adems, tiene la ventaja de que es similar a la de otros programas de
Macromedia (Dreamweaver, Freehand, Director...), todo esto hace ms fcil
aprender Flash y ms rpido su manejo y dominio. Esto es lo que nos
encontraremos al abrir Flash 5 por primera vez:

A lo
largo de
todo el
curso
trabajare
mos con
la
versin
inglesa
de Flash
5. El
motivo
es que
es la
versin
ms
extendid
ay
cuenta
con una
versin
gratuita
de 30
das de
uso. La
versin
espaola
no, de
ah su
escaso
nmero
de
usuarios.
Para
facilitar
el
aprendiz
aje
daremos
las
traduccio
nes de
todas las
palabras
que sean
necesari
as para
la
correcta
compren
sin de
las
explicaci
ones.

En la
imagen
se puede
ver la
interfaz
que nos
encontre
mos la
primera
vez que
abramos
el
programa
Flash.
Flash
recordar
nuestras
preferenc
ias y
abrir el
programa
tal y
como lo
dejamos
la ltima
vez que
lo
utilizamo
s.
En
esta
imagen
faltan
algunos
mens.
Todos se
irn
viendo a
lo largo
de este
curso
aunque
no
aparezca
n en esta
imagen,
que slo
pretende
mostrar
las
partes
principale
s de la
interfaz

de Flash.
Veamos
cules
son:

La Barra de Mens
La Barra de Mens
tiene como propsito facilitar el acceso a las distintas utilidades del programa. Es
similar a la de cualquier otro programa de diseo web o grfico, aunque tiene
algunas particularidades. Veamos los principales Submens a los que se puede
acceder:
File (Archivo): Permite crear nuevos archivos, abrirlos, guardarlos... Destaca la
potencia de la utilidad Importar que inserta en la pelcula actual casi todo tipo de
archivos (sonidos, vdeo, imgenes e incluso otras pelculas Flash), o la de
Publish Settings (Configuracin de Publicacin) desde donde se pueden
modificar las caractersticas de la publicacin. Tambin permite configurar la
impresin de las pginas, imprimirlas...
Edit (Edicin): Es el clsico Men que te permite Cortar, Copiar, Pegar... tanto
objetos o dibujos como fotogramas. Tambin permite personalizar algunas de las
opciones ms comunes del programa.
View (Ver): Adems de los tpicos Zooms, te permite moverte por los
fotogramas y por las escenas. Tambin incluye la posibilidad de crear una
cuadrcula yunas guas. Esto se puede seleccionar desde los Submens Grid
(cuadrcula) y Guides (guas) desde donde tambin se pueden configurar sus
opciones.
Insert (Insertar): Te permite insertar objetos en la pelcula, as como nuevos
fotogramas, capas, acciones, escenas...

Modify (Modificar): La opcin Transform permite modificar los grficos


existentes en la pelcula, y la opcin Trace Bitmap (Trazar Mapa de Bits)
convierte los grficos en mapas vectoriales (este tema se tratar ms adelante). El
resto de opciones permite modificar caractersticas de los elementos de la
animacin Smooth (suavizar), Optimize (Optimizar) o de la propia pelcula
(Instance, Scene...).
Text (Texto): Sus contenidos afectan a la edicin de texto. Ms adelante se
tratar en profundidad.
Control: Desde aqu se modifican las propiedades de reproduccin de la
pelcula. Play, Rewind, Test Movie (Probar Pelcula) ....
Window (Ventana): Este men, adems de las opciones clsicas acerca de
cmo distribuir las ventanas, incluye accesos director a TODOS los Paneles.
Para practicar estas operaciones te aconsejamos realizar Ejercicio Crear
Guas

La Lnea de Tiempo
La Lnea de
Tiempo representa
una forma de ver
los fotogramas de
modo simplificado.
Consta de 2 partes.
1) Los
Fotogramas
(frames) que
vienen delimitados
por lneas verticales
(formando
rectngulos)
2) Los Nmeros
de Fotograma que
permiten saber qu
nmero tiene
asignado cada
fotograma, cunto
dura o cundo
aparecer en la
pelcula.
Adems, en la
parte inferior hay
herramientas para
trabajar con Papel
cebolla e
informacin sobre el
Nmero de
Frotograma actual

(1 en la imagen), la
Velocidad de los
Fotogramas (12.0
en la imagen) y el
Tiempo de
pelculatranscurrido
(0.0s en la imagen

A nivel conceptual, la Lnea de Tiempo representa la sucesin de Fotogramas


en el tiempo. Es decir, la pelcula Flash no ser nada ms que los fotogramas que
aparecen en la Lnea de tiempo uno detrs de otro, en el orden que establece la
misma Lnea de tiempo.
Para saber ms acerca de la Lnea de Tiempo y de los distintos tipos de
fotogramas que existen visita nuestra Pgina Avanzada

Las Capas
El concepto de Capa (Layer) es fundamental
para manejar Flash de forma eficiente. Dada la
importancia de estas, se le dedicar un tema
completo. An as, veamos a grandes rasgos qu son
las capas.
Una Capa se puede definir como una pelcula
independiente de un nico nivel. Es decir, una capa
contiene su propia Lnea de Tiempo (con infinitos
fotogramas).
Los objetos que estn en una determinada capa
comparten fotograma y por tanto, pueden "mezclarse"
entre s. Esto es interesante a menudo, pero otras
veces es conveniente separar los objetos de modo
que no interfieran entre s. Para ello, crearemos tantas
capas como sea necesario. El uso de mltiples capas
adems, da lugar a pelculas bien ordenadas y de fcil
manejo (es conveniente colocar los sonidos en una
capa independiente llamada "Sonidos", por ejemplo).
Las ventajas y desventajas de usar capas se ver en
el Tema 8.

El rea de Trabajo

El rea de trabajo
consta de numerosas
partes, vemoslas:
La parte ms
importante es el
Escenario, sobre el
escenario dibujaremos y
colocaremos los
diferentes elementos de
la pelcula que estemos
realizando. El escenario
tiene unas propiedades
muy importantes, ya que
coinciden con las
Propiedades de la
Pelcula. Para acceder
a ellas, hagamos clic
con el botn derecho
sobre cualquier parte del
escenario en la que no
haya ningn objeto:
Frame Rate
(Velocidad del
Fotograma): O nmero
de fotogramas por
segundo que
aparecern en la
pelcula.
Dimensions
(Dimensiones):
Determinan el tamao
de la pelcula. El tamao
mnimo es de 18 x 18 px
(pxeles) y el mximo de
2880 x 2880 px.
Backgrouond Color
(Color de Fondo): El
color aqu seleccionado
ser el color de fondo de
toda la pelcula.
Ruler Units
(Unidades de Regla):
Unidad que se emplear
para medir las
cantidades.
Para practicar estas operaciones te aconsejamos realizar Ejercicio Cambiar
Propiedades de la Pelcula

Las Vistas o Zooms


La Herramienta Lupa
se emplea para acercar o alejar la vista de un
objeto, permitiendo abarcar ms o menos zona del Entorno de Trabajo. Cada vez
que hagamos clic en la Lupa duplicaremos el porcentaje indicado en el Panel
Zooms .
Panel Zooms: Son un conjunto de accesos directos a
Submens existentes en el Men View (Ver). Son muy tiles y
ayudan a acelerar el trabajo cuando se emplean correctamente.
Para saber ms acerca de los Zooms visita nuestra Pgina
Bsica

Los Paneles
Los Paneles (Panels) son conjuntos de comandos agrupados segn su
funcin. (por ejemplo, todo lo que haga referencia al texto, ir en el Panel
"Carcter"). Su misin, simplificar y facilitar el uso de los comandos.
Todos ellos se estudiarn en profundidad a lo largo del curso. An as, vamos a
nombrarlos y a resumir sus funciones.

Panel Info: Muestra el tamao y las coordenadas de los objetos seleccionados,


permitindonos modificarlas. Muy til para alineaciones exactas.
Panel Stroke (Trazo): Permite modificar los atributos de Herramientas como el
Lpiz, la Pluma o al Lnea.
Panel Transform (Transformar): Ensancha, encoge, gira ... los objetos
seleccionados.
Panel Fill (Relleno): Desde aqu se modifican los colores que se emplearn en
los rellenos que creemos. Tambin se hacen desde aqu los degradados y se elige
el tipo de relleno a aplicar.
Panel Align (Alinear): Coloca los objetos del modo que le indiquemos. Muy til.
Panel Mixer (Mezclador): Mediante este panel creamos los colores que ms
nos gusten.
Panel Swatches (Muestras): Nos permite seleccionar un color de modo rpido
y grfico. (Incluidas nuestras creaciones).
Panel Carcter: Elegiremos el tipo de fuente, tamao, estilo etc... que
queremos aplicar a los textos.
Panel Paragraph (Prrafo): Elegiremos el sangrado, los mrgenes... de
nuestros textos.
Panel Text Option (Opciones de Texto): Opciones avanzadas. Tipo de texto

(entrada, dinmico, normal) y otras propiedades.


Panel Instance (Instacia): Nos permite establecer atributos para las Instancias
que estn en nuestros fotogramas.
Panel Effect (Efecto): Si queremos dar brillo, transparencia. tintar... a nuestras
instancias, se hace desde aqu.
Panel Clip Parametrers (Parmetros de Clip): Proporciona atributos
avanzados a los movie clips.
Panel Frame (Fotograma): Desde aqu definiremos el nombre de nuestros
fotogramas o el tipo de animacin que contienen.
Panel Sound (Sonidos): Sirve para trabajar con los sonidos que pueda haber
en nuestras pelculas.
Panel Scene (Escena): Modifica los atributos de las escenas que usemos.
Si an no sabes lo que son las Escenas, te lo explicamos en nuestro tema
bsico
Panel Actions (Acciones): De gran ayuda para emplear Action Script y asociar
acciones a nuestra pelcula.
Para practicar estas operaciones te aconsejamos realizar Ejercicio Acceder a
los Paneles

Ejercicios del Tema 3.

Unidad 4.

Prueba evaluativa del Tema 3.

Dibujar y Colorear

El Dibujo en Flash 5
Cuando se disea una pgina web o una animacin el diseador pasa por
muchas fases. Tras la fase de "Qu quiero crear y cmo va a ser" viene
(normalmente) la fase de diseo grfico. Llevar lo que ha producido tu imaginacin
al papel (en este caso al papel de Flash).
No conviene engaarnos, Flash no es un programa de diseo grfico, pero su
potencia es casi tan grande como la de stos programas. Vamos a ver cmo
emplear cada herramienta de dibujo para sacarle el mximo partido.

La Barra de Herramientas. Herramientas


Bsicas.

La Barra de Herramientas contiene todas las Herramientas


necesarias para el dibujo. Veamos cules son las ms importantes y
cmo se usan:
Herramienta Flecha (Arrow Tool):
. Es la herramienta ms
usada de todas. Su uso principal es para seleccionar objetos. permite
seleccionar los bordes de los objetos, los rellenos (con un slo clic), los
bordes (con doble clic), zonas a nuestra eleccin... Adems, su uso
adecuado puede ahorrarnos tiempo en el trabajo.
Herramienta Lnea: (Line Tool):
Permite crear lneas rectas de
un modo rpido. Las lneas se crean como en cualquier programa de
dibujo, se hace clic y se arrastra hasta donde queramos que llegue la
lnea recta. Una vez creada la podemos modificar sin ms que
seleccionar situar el cursor encima de los extremos para estirarlos y en
cualquier otra parte cercana a la recta para curvarla.
Herramienta Texto (Text Tool):
Crea un texto en el lugar en el
que hagamos clic. Sus propiedades en el tema siguiente.
Herramienta valo (Oval Tool):
La herramienta valo permite
trazar crculos o elipses de manera rpida y sencilla.
Para practicar el manejo de esta Herramienta, te aconsejamos
realizar Ejercicio Crear valo
Para practicar el manejo de esta Herramienta, te aconsejamos
realizar Ejercicio Dar color a un valo
Herramienta Rectngulo (Rectangle Tool):
Su manejo es
idntico al de la Herramienta valo, tan solo se diferencian en el tipo de
objetos que crean.
Herramienta Lpiz (Pencil Tool):
Es la primera Herramienta de
dibujo propiamente dicho.Permite dibujar lneas con la forma que
decidamos, modificando la forma de estas a nuestro gusto. El color que
aplicar esta Herramienta se puede modificar, bien desde el Panel
Mezclador o bien desde el subpanel Colores que hay en la Barra de
Herramientas.
Herramienta Brocha (Brush Tool):
Su funcionalidad equivale a
la del lpiz, pero su trazo es mucho ms grueso. Se suele emplear para
aplicar rellenos. Se puede modificar su grosor y forma de trazo. Para ver
su funcionamiento y las distintas formas de uso, podeis ver la siguiente
animacin:
Herramienta Cubo de Pintura (Paint Bucket Tool):
Permite
aplicar rellenos a los objetos que hayamos creado. Al contrario que
muchos otros programas de dibujo, no permite aplicar rellenos si la
zona no est delimitada por un borde. El color que aplicar esta
Herramienta se puede modificar, bien desde el Panel Mezclador o bien

desde el subpanel Colores que hay en la Barra de Herramientas.


Herramienta Borrador (Eraser Tool):
Su funcionamiento es
anlogo a la Herramienta Brocha. Pero su funcin es la de elimina rtodo
aquello que "dibuje".

La Barra de Herramientas. Herramientas


Avanzadas.
Herramienta Lazo (Lasso Tool):
Su funcin es complementaria a la de la
Herramienta Flecha, pues puede seleccionar cualquier cosa, sin importar la
forma, (la Herramienta Flecha slo puede seleccionar objetos o zonas
rectangulares o cuadradas). En contrapartida, la Herramienta Lazo no puede
seleccionar rellenos u objetos (a menos que hagamos la seleccin a mano).
Al seleccionar esta Herramienta, en el Panel Options aparecen estas imgenes:
. Esto, es la Herramienta "Varita Mgica", tan popular en otros
programas de dibujo. Permite hacer selecciones segn los colores de los objetos.
El tercer dibujo que aparece es este:

permite hacer selecciones poligonales.

Herramienta Pluma (Pen Tool):


Crea polgonos (y por tanto rectas,
rectngulos...) de un modo sencillo. Mucha gente encuentra esta herramienta
complicada, aunque es una de las ms potentes que ofrece Flash. Su empleo
consiste en hacer clic en los lugares que queramos definir como vrtices de los
polgonos, lo que nos asegura una gran precisin. Para crear curvas, hay que
sealar los puntos que la delimitan y posteriormente trazar las tangentes a ellas.
Con un poco de prctica se acaba dominando.
Herramienta Subseleccionador (Subselect Tool):
Esta Herramienta
complementa a la Herramienta Pluma, ya que permite mover o ajustar los vrtices
que componen los objetos creados con dicha herramienta.
Herramienta Bote de Tinta (Ink Bottle Tool):
Se emplea para cambiar
rpidamente el color de un trazo. Se aplica sobre objetos, si tienen borde, cambia
al color mostrado de dicho borde, por el mostrado en el Panel Mezclador (que
coincide con el subpanel Colores que hay en la Barra de Herramientas.)
Herramienta Cuentagotas (Dropper Tool):
Su misin es "Capturar"
colores para que posteriormente podamos utilizarlos. Para ver cmo funciona,
aconsejamos ver la siguiente animacin:

La Barra de Herramientas. Opciones


Algunas Herramientas poseen unas opciones especiales que facilitan y
potencian su uso. Para acceder a estas utilidades, a veces no basta con hacer clic
en la Herramienta correspondiente. La forma de acceder a este Submen consiste
en hacer clic en la lnea o en el objeto que has dibujado.
Entonces aparecer (o se iluminar si ya estaba presente) un
submen como este:
Ajustar a Objetos (Snap To Objects):
Se usa para obligar a los
objetos a "encajar" unos con otros, es decir, para que en caso de ser
posible, sus bordes se superponga, dando la sensacin de estar
"unidos".
Suavizar (Smooth):
rgidas.

Convierte los trazos rectos en lneas menos

Enderezar (Straighten):
Realiza la labor inversa. Convierte los
trazos redondeados en ms rectilineos.
Girar (Rotate):

Permite girar un objeto.

Escalar (Scale):
las proporciones.

Modifica el tamao de un objeto manteniendo

El Panel Mezclador
El Panel Mezclador, como su nombre indica se usa para fabricar nuestros
propios colores y para seleccionar los que ms nos gusten.
Para seleccionar un color determinado,
bastar con hacer clic en las pestaas que se
encuentran junto a los iconos de las
Herramientas de Lpiz y de Bote de Pintura.
(Si queremos modificar el color de un borde,
pulsaremos sobre la pestaa que est junto
Herramienta Lpiz y si queremos modificar un
relleno, haremos clic en la pestaa que est
junto a la Herramienta Bote de Pintura.) Al
hacerlo aparecer un Panel con multitud de
colores para que seleccionemo el que ms nos
gusta. Tambin permite introducir el cdigo del
color segn el standard que establece el HTML.
Para aprender a crear un color transparente
(semi-transparente), realiza el Ejercicio Crear
Color Transparente

El Panel Relleno

El Panel Relleno sirve para seleccionar el tipo de relleno que aplicars a los
objetos creados (mediante la Herramienta Bote de Pintura). Por algn motivo, no
est colocada junto a los Paneles de dibujo, por lo que es relativamente difcil de
encontrar. Se puede acceder a ella desde Window --> Panels --> Fill
Se pueden crear diferentes tipos de
Rellenos
Slido: Consiste en un relleno formado por un
solo color.
Degradado Lineal: Es un tipo especial de
relleno, de modo que un color se degrada hasta
convertirse en otro. Puede ir de arriba abajo o de
un lado al otro
Degradado Radial: Es igual que el anterior,
pero los degradados tiene forma circular.
Bitmap: Permite colocar como relleno alguna
imagen existente en la pelcula (O ajena a ella si
antes se "importa")
Ejercicios del Tema 4

Unidad 5.

Trabajar con Textos

Comenzando
Flash abarca todo aquello que nos pueda hacer falta a la hora de crear una
animacin, y por tanto, tambin todo aquello relativo a los textos. Sin embargo, Flash
fue concebido para crear animaciones grficas, de modo que tratar cualquier texto
como si de un objeto ms se tratase, listo para ser animado a nuestro gusto. Esto nos
permitir posteriormente animar textos y crear espectaculares animaciones con muy
poco esfuerzo. Flash distigue entre 3 tipos de texto, texto esttico o normal, texto
dinmico y texto de entrada (para que el usuario introduzca sus datos, por ejemplo),
tambin se puede crear texto que soporte formato HTML ...

Caracteres
Para poder escribir, deberemos hacer clic en la Herramienta Texto y posteriormente
en el punto del escenario en el que queramos empezar a escribir
Para saber ms acerca de la Cmo escribir textos visita nuestra Pgina Avanzada

El Panel Caracter (Character Panel) contiene


las principales propiedades de los textos que
podemos necesitar.
Font:
Desde aqu,
al igual que en los editores de texto ms comunes
podemos seleccionar el tipo de letra o "fuente" que
ms nos guste.
Altura:
Determina la altura de los
caracteres. No es conveniente deformar los textos,
pues da la impresin de que la pgina no es
profesional
Ajuste entre palabras:
Define el
espacio que habr entre cualesquiera 2 caracteres
que escribamos juntos.
Posicin:
Nos permite
convertir nuestro texto en subndices o en
superdices (o dejarlo normal)
URL:
Si
queremos que al pulsar sobre nuestro texto, el
usuario vaya a una direccin web, nada ms fcil
que escribirla ah. Flash la asociar al texto que
ests escribiendo en ese momento.
Configuracin:
Son las clsicas
opciones que permiten convertir el texto en Negrita
(B), Cursiva (I) y cambiar el color del texto
Kern (Ajuste entre caracteres):
Si lo
seleccionamos el texto usar la informacin que
incorpora la fuente elegida acerca de cmo debe
separar los caracteres. Esta opcin slo se debe
seleccionar si realmente es necesario, ya que
provoca que la fuente se "incorpore" a la pelcula,
aumentando su tamao.

Prrafos
Un Prrafo (Paragraph) no es ms que un conjunto de caracteres con
propiedades comunes a todos ellos. Estos prrafos admiten ciertas opciones que nos
permiten trabajar con bloques de texto.
Alineacin: Distribuye las lneas que forman los prrafos del modo que nosotros
decidamos.
A la Izquierda:
Todas las lneas empezarn tan a la izquierda como sea posible
(dentro del recuadro de texto que hayamos definido).
Centrar:
del Prrafo.

Las lneas se distribuyen a la derecha y a la izquierda del punto medio

A la derecha:

Todas las lneas empezarn tan a la derecha como sea posible

(dentro del recuadro de texto que hayamos definido).


Justificado:
El texto se ensancha si es necesario con tal de que no quede
"dentado" por ninguno de sus lmites.
El resto de opciones nos permiten determinar los mrgenes (izquierdo y derecho),
los sangrados de prrafo y la distancia entre lneas.

Tipos de Textos
Como ya hemos comentado, Flash distingue entre diversos tipos de textos y les
da un tratamiento especial, segn el tipo que sean.
Todos los tipos de textos responden a las propiedades comentadas en los
puntos anteriores, y es en el Panel Text Options (Opciones de Texto) en lo que
se diferencian. Este Panel se encuentra en Window -> Panels -> Text Options
aunque por defecto tambin est disponible junto a la pestaa Character vista
anteriormente (esto ltimo se puede configurar, de modo que no lo podemos
asegurar)

Texto Esttico
El Texto Esttico se caracteriza por no presentar ningn cambio a lo largo de
la animacin. Es importante que no confundamos la palabra "esttico" con que el
texto no se mueva o malinterpretemos la frase "es el texto que no presenta
cambios a lo largo de la pelcula".
Lo que queremos decir es que no cambia el contenido del recuadro de texto,
es decir, que el texto puede estar animado (girar, cambiar de color...) y sin embargo
ser esttico. As, un recuadro de texto en el que pone "Aprende Flash 5" durante
toda la pelcula, es esttico, aunque dicho texto cambie de posicin, forma o color.
Sin embargo, si en ese mismo recuadro de texto pasa a poner "Con este Curso",
este recuadro de texto NO es esttico. Se insistir en este punto en los ejercicios
de evaluacin.
Estos textos slo tiene 2 propiedades extras:
Use Device Fonts (Usar Fuentes del Dispositivo): Esta opcin permite que la
pelcula Flash emplee las Fuentes que tenga instaladas el usuario que ve la
pelcula en su ordenador. Si dicho usuario dispone de las fuentes que hemos
utilizado en la pelcula, la ver exactamente como queremos que la vea, pero si no
las tiene, Flash emplear la fuente que ms se le parezca. Esto muchas veces
lleva a que el resultado final (el que ve el usuario) no se parezca al que
pretendiamos, por lo que suele ser conveniente mantener esta opcin sin
seleccionar, aunque esto conlleve un mayor tamao de la pelcula final.
Selectable (Seleccionable): Con esta opcin activada el usuario podr
seleccionar los textos que aparezcan en la pelcula (cortarlos, copiarlos...) Actvala

si lo crees conveniente.

Texto Dinmico
El Texto Dinmico en contraposicin al esttico si que puede cambiar su
contenido (adems de estar animado). Su uso es bastante ms complejo que el
del Texto Esttico, ya que cada recuadro de texto Dinmico puede ser una variable
modificable mediante ActionScript, esto quiere decir que los valores y propiedades
de este tipo de textos se pueden modificar mediante programacin, lo que nos
saca del objetivo de este curso. Un uso comn que suelen tener es el de
representar los textos introducidos mediante (Textos de Entrada).
Tienen multitud de propiedades, accesibles desde el Panel Text Options, se
puede decidir el nmero de lneas que van a tener, se puede introducir texto HTML,
se puede aadir fcilmente un borde al texto o dar nombre a la variable que
represente al texto Dinmico

Texto de Entrada
El Texto de Entrada tiene bsicamente las mismas propiedades que el Texto
Dinmico, junto con algunas propias de un tipo de texto orientado a la introduccin
de datos por parte de usuario, como por ejemplo el nmero mximo de lneas que
puede introducir en ese campo de texto o si queremos que lo que el usuario
escriba en dicho campo aparezca como asteriscos (password).
Evidentemente este tipo de texto se reflejar en nuestra pelcula como un
recuadro de texto SIN contenido, ya que lo deber introducir el usuario.
Como hemos mencionado antes, este tipo de texto se puede combinar con el
Texto Dinmico.
En esta animacin (avanzada) podeis ver cmo:
Y este es el resultado final:
Para aprender a cambiar el tipo de texto, te aconsejamos realizar Ejercicio
Cambiar tipo de texto
Flash permite crear animaciones de texto tan interactivas como las que pueden
crear con imgenes (ya hemos visto lo sencillo que es convertir un texto en un
enlace a otra pgina web). An as, crear animaciones con textos, que sobrepasen
a las que Flash incorpora por defecto (colores, transparencias, brillos, rotaciones,
movimientos o combinaciones de estos) puede resultar un trabajo de muchsimas
horas y mucha paciencia. Los resultados son increbles, pero puede resultar
recomendable en estos casos usar algunos programas diseados con este
objetivo. Entre otros destacan el Swish, el FlaX o el MiX-Fx, con ellos podrs crear
efectos de texto asombrosos en pocos minutos, aunque no podrs gozar del
entorno de Flash ni podrs emplear el resto de herramientas de que dispone Flash.
Podeis poner a prueba vuestros conocimientos realizando la:

Prueba evaluativa del Tema 5.

Unidad 6.

Trabajar con Sonidos

Comenzando
Quin sera capaz de ver una pelcula muda? Y una animacin espectacular sin
sonido?
Hasta hace poco, los nicos sonidos que oamos en las pginas web eran los
famosos "midis", de escaso tamao y de escasa calidad. De hecho, eran slo
instrumentos musicales sin voz, de ah su pequeo tamao (y calidad). An as,
siempre exista algn creador de pginas web que se aventuraba a poner algn sonido
complejo (.wav o .mp3) en su pgina web, por desgracia, su carga es tan lenta, que la
mayora de los visitantes se iran de la pgina sin llegar a escucharla.
Hoy, gracias a las conexiones de banda ancha orientadas a contenido multimedia,
poner sonido a las pginas web es un poco ms fcil, qu aporta FLASH?
Flash nos permite insertar cualquier sonido que queramos en nuestras pelculas
(.wav, .aiff y .mp3) de forma fcil y muy efectiva, ya que es capaz de acelerar la
descarga del sonido siempre y cuando se descargue junto con nuestra pelcula.
Podemos dar a la pelcula efectos simples (el tpico "clic" al pulsar un botn), efectos
complejos (msica de fondo) e incluso podemos hacer que la animacin se desarrolle
conjuntamente con una msica (si bien esto ltimo necesitara que toda la pelcula
estuviera descargada previamente, para evitar "atascos" durante el desarrollo de la
animacin). En definitiva, Flash nos lo vuelve a poner fcil.

Importar Sonidos
Si alguna vez habeis intentado aadir un sonido a vuestra animacin Flash
probablemente os hayais llevado una gran decepcin, no conseguirlo. Esto se debe a
que no se tiene en cuenta que para poder emplear un objeto en nuestra pelcula, o bien
lo creamos nosotros (como llevamos haciendo hasta ahora) o bien lo conseguimos de
cualquier otro modo y lo insertamos en nuestra pelcula.
A esto ltimo se le llama "Importar" y se puede hacer con sonidos, grficos, e
incluso con otras pelculas Flash. Importar por tanto, no es ms que decirle a Flash que
aada un determinado archivo a nuestra pelcula, para que podamos usarlo cuando
queramos. En realidad, lo aade a nuestra Biblioteca, que es el Panel en el que estn
todos los objetos que participan en la pelcula (este Panel se ver ms adelante).
As pues si queremos manejar un sonido en nuestra pelcula, deberemos importarlo
previamente.
Una vez est importado, podremos usarlo con total libetad.

Panel Sonidos

El Panel sonido (Sound Panel) contiene todo


lo necesario para insertar, modificar y editar el
sonido que acabamos de importar. Si no hemos
importado ningn sonido, nos daremos cuenta de
que no podemos seleccionar nada en dicho panel,
basta insertarlo para que esto cambie.
Veamos las partes que tiene este panel.
Sound: En esta pestaa nos aparecern las
canciones que tenemos importadas, deberemos
seleccionar la cancin que pretendamos aadir a
nuestra pelcula (en el siguiente punto veremos
cmo insertarlo)
Effect: Desde aqu podremos aadir algn efecto a nuestro sonido, como por
ejemplo que el sonido pase del canal izquierdo al derecho (esto crea la sensacin de
que el sonido te envuelve ya que lo oyes por un sitio y luego por otro, aunque queda
muy lejos de los verdaderos sonidos envolventes), que el volumen aumente
progresivamente etc... Si deseamos aadir complejos efectos sonoros, deberemos
tratar adecuadamente el sonido con algn programa creado especficamente para este
propsito antes de importarlo.
En el punto "Editar Sonidos" se tratar en ms profundidad estos efectos.
Sync: Esta opcin nos permite determinar en qu momento comenzar a actuar
nuestro sonido, estas son las opciones que tenemos.
Event: Sincroniza nuestro sonido con un evento determinado. Es la opcin por
defecto y provoca que el sonido se empiece a reproducir al pasar la pelcula por el
fotograma que est situado. Tambin se puede sincronizar el sonido con botones y los
dems tipos de smbolos.
Start: Su funcionamiento es equivalente al de "Event", se diferencian en que si est
seleccionado Start en vez de Event y se reproduce otra vez el mismo sonido u otro
distinto, lo hace "encima" del sonido actual. Puede ser un efecto muy atractivo, o puede
provocar que se forme "ruido" en nuestra pelcula.
Stop: Detiene el sonido seleccionado.
Stream: Esta opcin sincroniza el sonido con el o los objetos con los que est
asociado, por tanto, si la carga de la pelcula es lenta y las imgenes no fluyen
adecuadamente, el sonido se detendr para sincronizarse con ellas. Este efecto puede
dar la sensacin de que la pelcula se corta de un modo muy brusco (pensar en que se
considera normal que una imagen tarde en cargarse, pero si se detiene un sonido
mientras se reproduce, produce una reaccin muy negativa en los que pueden estar
viendo nuestra pelcula).
Por otra parte, es un efecto muy adecuado para algunas situaciones, por ejemplo, el
efecto de que un personaje hable durante una pelcula. En esta situacin, es muy
recomendable que el sonido y las imgenes estn sincronizadas.
Loops: Determinan el nmero de veces que se reproducir el sonido. Para que se
reproduzca indefinidamente, calcula el tiempo que puede durar la pelcula y el tiempo
que dura tu sonido y reptelo tantas veces como sea necesario (esto es mejor que
escribir 99999 veces).
Por ejemplo: Si tu pelcula dura 2 minutos (120 segundos) y tu sonido dura 16
segundos, entonces 120 / 16 = 7,5 veces. Debers escribir 8 veces, ya que no tiene

sentido reproducir un sonido 7 veces y media (adems quedara una parte de la


pelcula sin sonido)
No recomendamos insertar sonidos son la opcin Stream y a la vez la de Loop, ya
que al estar sincronizados los sonidos con las imgenes, provocaramos que las
imgenes (y los fotogramas que las contengan) se dupliquen tambin, aumentando
considerablemente el tamao de la pelcula.

Unidad 6.

Trabajar con Sonidos

Insertar un Sonido
Ahora que ya sabemos importar un sonido,
qu opciones podemos modificar y para que
sirve cada una. Veamos lo ms importante,
cmo insertarlos en nuestra pelcula.
Supongamos que queremos insertar un
sonido en un fotograma determinado, de modo
que cuando la pelcula Flash llegue a este
fotograma comience a reproducirse el sonido.
Para que un sonido se reproduzca al llegar a un
fotograma, deberemos seleccionar el fotograma
en el que queremos que empiece a reproducirse
el sonido. Una vez all, abriremos el Panel
Sonido (Window -> Panel -> Sound) e
insertaremos el sonido que queramos del modo
visto en el punto anterior. Otro modo ms rpido
an consistira en seleccionar dicho sonido en la
Biblioteca y arrastrarlo al fotograma en el que
queramos que se empiece a reproducir el sonido
(al fotograma, no a la lnea de tiempo).

As representa Flash los sonidos


insertados en Fotogramas

De este modo insertamos un sonido, pero suena tal y cmo queremos que
suene? ... Depende de lo que busquemos.
Por defecto Flash entiende que quieres reproducir el sonido en su totalidad, sino
para que insertarlo entero?, de modo que Flash reproducir el sonido todas las veces
que le hayas indicado en Loops y el sonido sonar aunque el fotograma en el que est
no sea el que se est ejecutando en ese instante. Si quisiramos que el sonido pare
cuando entremos en otro fotograma, lo podemos hacer de 2 formas distintas, ambas
combinando las opciones que nos ofrece el Panel Sonido.
En esta animacin, vers como:

Editar Sonidos
Flash no fue creado como un editor de sonidos, por lo que lo que su potencia en
este campo es limitada. An as, los efectos que permite aplicar de un modo sencillo
suelen ser suficientes para cualquier animacin que queramos realizar. Son estos:
Left Channel (Canal Izquierdo): El Sonido tan slo se escuchar por el altavoz
izquierdo.
Right Channel (Canal Derecho): El Sonido tan slo se escuchar por el altavoz

derecho.
Fade Left To Right (Desvanecimiento de izquierda a derecha): El sonido se
reproduce inicialmente en el altavoz izquierdo para luego pasar al derecho.
Fade Right To Left (Desvanecimiento de derecha a izquierda): El sonido se
reproduce inicialmente en el altavoz derecho para luego pasar al izquierdo.
Fade In (Aumento Progresivo): El volumen de nuestro sonido aumenta
progresivamente.
Fade Out (Desvanecimiento): El volumen de nuestro sonido disminuye
progresivamente.
Custom (Personalizar): Esta opcin nos permite "editar" el sonido de un modo
rpido y sencillo. Desde este editor podemos decidir qu volumen tendr nuestro
sonido y en que altavoz. Podemos crear los efectos anteriores ajustndolos a nuestro
gusto y podemos crear efectos ms complejos a nuestra medida.
Esta es la apariencia del
Panel "Custom Sound"
(Personalizar Sonido). La
parte superior representa el
canal izquierdo y la parte
inferior el canal derecho.
Entre las 2 partes hay una
lnea de tiempo que nos
indica el tiempo de sonido
transcurrido en cada punto.
Las lneas grises
representan el volumen del
sonido y haciendo clic en
ellas podemos configurar
este volumen.
En el ejemplo, el canal
izquierdo se reproduce
normalmente (pues el
volumen est al mximo),
pero el canal derecho
empieza en silencio, para
poco a poco alcanzar el
volumen normal (este
efecto equivaldra a un
Fade In en el canal
izquierdo)

Mp3 o Wav?

Como ya se ha comentado, los sonidos que Flash 5 puede importar deben


tener la extensiones .wav o .mp3. Si no sabes las diferencias entre estos tipos de
archivos, puedes consultar nuestro tema bsico
Por tanto, cuando queramos aadir un sonido a nuestra pelcula, deberemos
decantarnos por uno de estos 2 formatos. Lo normal es que el sonido que
pretendamos insertar ya est en uno de ellos, pero no debemos olvidar que existen
multitud de programas que convierten un sonido con extensin .mp3 a uno .wav y
viceversa, por lo que no debe ser inconveniente el formato que tenga el sonido en
un principio.
La pregunta surge en seguida Cul es mejor? ...
Esta pregunta es ms importante de lo que parece, ya que si decidimos que
nuestra pelcula tenga sonidos, deberemos asumir una carga muy importante en
cuanto a tamao de la pelcula y en consecuencia en cuanto a tiempo de descarga.
Lo habitual es que los sonidos ocupen ms de la mitad del espacio total y muchas
veces no valdr la pena insertarlos...
Una vez decididos a insertar el sonido, la lgica nos dice que insertemos el
sonido que ocupe un espacio menor en el disco duro, ya que este espacio es el
que ocupar en nuestra pelcula. Esto es una aproximacin, ya que Flash
comprime todo aquello que insertamos en nuestras pelculas.
Como ya sabemos, los sonidos .mp3 ocupan un espacio mucho menor que los
sonidos .wav (10 veces menos o ms), por lo que parece recomendable insertar
.mp3 en lugar de .wav, ahora bien Puede Flash comprimir un sonido ya
comprimido? Es decir, si un sonido .wav ha sido comprimido y ahora tiene
extensin .mp3, podr Flash volver a comprimirlo? La respuesta es NO. Flash
comprime los sonidos que insertamos en nuestras pelculas, pero si el sonido
resulta estar ya comprimido, no podr volver a comprimirlo (en realidad si que
consigue comprimirlo, pero el sonido final es el mismo que el inicial).
Ahora que ya sabemos esto, nos falta saber si Flash comprime un archivo .wav
ms de lo que comprime el formato .mp3, para ver bien este aspecto, hemos
preparado varios ejemplos...
Ejemplo:
Contamos con una pelcula con un nico frame que est vaco. Esta pelcula,
una vez lista para ser vista (.swf) ocupa 1KB.
Tenemos 1 sonido .wav que ocupa 1596 KB
Comprimimos dicho sonido con un programa compresor de audio y obtenemos
el mismo sonido en formato .mp3, ocupa 145 KB. (La calidad de sonido es
prcticamente idntica)
Ahora insertamos el sonido .wav en la pelcula original y la exportamos (esto se
trata en el ltimo tema)
Resultado: Una pelcula con sonido (pelcula 1) que ocupa 37KB
Insertamos despus el sonido .mp3 en la pelcula original
Resultado: Una pelcula con sonido (pelcula 2) que ocupa 145 KB
Conclusin: La pelcula con un sonido .wav ocupa casi 5 veces menos que la
que tiene el mismo sonido en .mp3, por tanto parece recomendable insertar
sonidos .wav (la compresin de audio que logra Flash es muy grande). Como

contrapartida, podra apreciarse prdida de calidad en el sonido que se escucha en


la pelcula 1. Esta prdida ser importante segn el tipo de sonido que sea. Si es
una voz, por ejemplo, deberamos insertar .mp3 ya que necesariamente deber
escucharse bien, si es msica de fondo, es probable que aunque se pierda calidad,
el resultado final sea aceptable y sea conveniente quedarnos con la pelcula de
menor tamao. Lo mejor es probar ambas versiones y evaluar el resultado.
Podeis ver varias pruebas en estas pelculas:

Msica de Fondo

Pelcula con sonido (msica) en formato


.wav.
Tamao Total: 37 KB.
Calidad: Buena

Pelcula con sonido (msica) en formato


.mp3.
Tamao Total: 145 KB.
Calidad: Buena

Sonido "Voz"

Pelcula con sonido (voz) en formato .wav.


Tamao Total: 9 KB.
Calidad: Regular

Pelcula con sonido (voz) en .mp3.


Tamao Total: 67KB.
Calidad: Buena

En el primer caso sera recomendable quedarse con la pelcula ms pequea,


ya que ambos sonidos son buenos. En el segundo caso, la segunda pelcula sera
ms apropiada, ya que aunque tenga mayor tamao, la calidad del sonido merece
la pena.

Por ltimo, comentar que Flash no puede importar sonidos en formato MIDI
(.mid). An as, si estamos empeados en que en nuestra animacin el sonido sea
un MIDI y no queremos o podemos conseguir un programa que convierta el sonido
MIDI a WAV o MP3 existe una forma de hacerlo consistente en el uso combinado
de Flash y Javascript.
Ejercicios del Tema 6

Unidad 7.

Prueba evaluativa del Tema 6.

Trabajar con Objetos

Los Objetos. Iniciacin


Independientemente de si estamos trabajando en una animacin, en una pgina
web, en un catlogo para un CDRom o en cualquier otra cosa, tendremos que trabajar
con objetos. A grandes rasgos, podremos considerar un objeto todo aquello que
aparezca en nuestra pelcula y sea visible, de modo que podamos trabajar con l,un
objeto sera, por ejemplo, cualquier imagen que creemos o importemos, un botn, un
dibujo creado por nosotros mismos etc...
Los objetos as considerados tienen 2 partes fundamentales:
El Borde:Consiste en una delgada lnea que separa el objeto del exterior del
escenario.
Puede existir o no, segn nos convenga. Cuando creamos un objeto, el borde se crea
siempre y su color ser el indicado en el Stroke Color o Color de Trazo (dentro del
Panel Colors o del Panel Mixer). Si queremos dibujar creando Bordes deberemos
emplear las Herramientas Lpiz, Lnea o Pluma y si queremos que nuestro dibujo no
tenga borde, bastar con seleccionar el borde y suprimirlo (ver siguiente punto)
El Relleno: El relleno no es ms que el propio objeto sin borde. Es, por tanto, la
parte interna del objeto. Su existencia tambin es arbitraria, ya que podemos crear un
objeto cuyo color de relleno sea transparente, como ya se vi en el tema de Dibujar, y
por tanto, parecer que dicho objeto no tiene relleno, aunque en realidad si que exista
pero sea de color transparente. Para dibujar Rellenos (sin borde) podemos usar
herramientas tales como la Brocha o el Cubo de Pintura

Seleccionar
Para poder trabajar con objetos, es fundamental saber seleccionar la parte del
objeto que queramos modificar (mover, girar, cambiar de color...). Podremos observar
que las partes de un objeto seleccionadas toman una apariencia con textura para
indicar que estn seleccionadas.

Objeto SIN seleccionar

Objeto con el BORDE


seleccionado

Objeto con el RELLENO


seleccionado

Veamos como seleccionar las diferentes partes de un objeto:


Seleccionar un Relleno o un Borde: Basta hacer clic 1 vez en el Relleno o en el
Borde que queramos seleccionar.
Seleccionar el Relleno y el Borde de un objeto: Hacer doble clic en el Relleno.
Seleccionar todos todos los bordes (o lneas) de un mismo color que estn en
contacto: Hacer doble clic sobre una de las lneas que tenga el color que pretendamos
seleccionar.
Seleccionar un Smbolo, un texto, o un grupo: Clic en el Smbolo, en el texto o en
el grupo. Estos tipos de objetos mostrarn un borde de color azul (por defecto) al estar
seleccionados.
Seleccionar Varios elementos: Mantendremos pulsada la tecla SHIFT mientras
seleccionamos los objetos que queramos.
Seleccionar los objetos que se encuentran en una determinada zona: Para ello
usaremos la Herramienta Flecha. Haremos clic en una parte del escenario y
arrastraremos el cursor hasta delimitar el rea que contenga a los objetos que
queremos seleccionar. Si esta rea corta algn objeto, slo quedar seleccionada la
parte del objeto que est dentro del rea que hemos delimitado. Si quisiramos incluir
dicho objeto, bastara con usar la tecla SHIFT y seleccionar la parte del objeto que falta
por seleccionar.
Este modo de seleccionar objetos permite seleccionar muchos objetos rpidamente,
adems de permitirnos seleccionar determinadas zonas de los objetos, para cortarlas,

pegarlas ...
Adems de la Herramienta Flecha, tambin podemos usar la Herramienta Lazo,
ms til an si cabe. Nos permite seleccionar cualquier zona de cualquier forma (la
forma la determinamos nosotros) del objeto que sea. Al contrario que la Herramienta
Flecha, las reas seleccionadas no tienen porque ser rectngulares.
Seleccionar a partir de la Lnea de Tiempo: Si seleccionamos un determinado
fotograma en la lnea de tiempo, se seleccionan automticamente todos los objetos
que estn en dicho fotograma. Esto es til para modificar de un modo rpido todos los
elementos del fotograma.
Seleccionar Todo: La forma ms natural de seleccionar todo, consiste en hacer clic
en el men Edit -> Select All (Editar -> Seleccionar Todo)

Unidad 7.

Trabajar con Objetos

Colocando Objetos. Panel Alinear


Ahora que ya sabemos seleccionar los
objetos o las partes de estos que consideremos
oportunas, veamos como colocarlos en el
Escenario.
Para colocarlos de un modo preciso (por no
decir exacto), Flash pone a nuestra disposicin
el Panel Align (Alinear). Este Panel lo podemos
encontrar en el Men Windows -> Panels ->
Align o pulsando CTRL + K. As funciona:

El Panel Alinear colocar los objetos tal y cmo


le indiquemos. Antes de ver las posibilidades,
debemos hacer hincapi en la opcin To Stage.
Esta opcin nos permite decir a Flash que todas
las posiciones que indiquemos para nuestros
objetos tomen como referencia el escenario
Si esta opcin no est seleccionada, los objetos toman como referencia al
conjunto de objetos en el que se encuentran, y se colocan en funcin de ellos. Lo
ms habitual es seleccionar To Stage, para que los objetos se coloquen segn los
lmites de la pelcula, en el centro del fotograma etc...
Conozcamos un poco mejor el Panel Align y sus posibilidades:

Align:
Sita los objetos en una determinada posicin
del fotograma (si est seleccionado To Stage). Las distintas opciones afectan a
todos los elementos seleccionados y se emplean muy a menudo para situar los
objetos en determinados sitios predefinidos. Por ejemplo: Si quisieramos situar un
objeto en la esquina inferior izquierda, bastara pulsar el primer y el sexto botn

consecutivamente.
Distribute:
Sita los objetos en el escenario en funcin
de unos ejes imaginarios que pasan por cada uno de ellos, de modo que la
distribucin de los mismos sea uniforme. Por ejemplo, si tenemos 2 cuadrados y
pulsamos el primer botn de la izquierda. Cada uno de los 2 cuadrados se situar
en un extremo de la pelcula (uno arriba y otro abajo).
Match Size:
Hace coincidir los tamaos de los objetos. Si est
activo "To Stage" estirar los objetos hasta que coincidan con el ancho y el largo
de la pelcula. Sino est activo, la referencia sern el resto de objetos. Por ejemplo,
si tenemos 2 cuadrados distintos y la opcin "To Stage" no est activada, al hacer
clic en el primer botn de Match Size, el cuadrado ms estrecho pasar a tener la
anchura del cuadrado ms ancho. Si "To Stage" hubiera estado activo ambos
cuadrados hubieran pasado a tener el ancho del fotograma.
Space:

Espacia los objetos de un modo uniforme.

Para ver ejemplos de uso de estos comandos, podeis ver la animacin situada
arriba al principio del captulo.

Panel Info
Adems de controlar la posicin de los
objetos desde el Panel Align, tambin podemos
hacerlo, de un modo ms exacto (ms
matemtico) desde otro panel, el Panel Info.
A este Panel se puede acceder desde el
Men Windows -> Panels -> Info. Las
posibilidades de este Panel son limitadas, pero
si buscamos exactitud en las medidas o no nos
fiamos de las distribuciones de objetos que crea
Flash, debemos acudir a l.
Medidas del Objeto:
Aqu introduciremos un nmero que represente el
tamao de nuestro objeto en la medida seleccionada en el Movie Properties
(Propiedades de Pelcula). La W es la abreviatura de Width y la H de Height
(anchura y altura respectivamente)
Situacin del objeto:
Desde aqu controlamos la posicin del objeto en el
escenario. La X y la Y representan el eje de coordenadas (La X es el eje Horizontal
y la Y el eje vertical). Las medidas tambin van en funcin de las medidas elegidas
para la pelcula.
Color Actual: Indica el color actual en funcin de la cantidad de Rojo (R),
Verde (G), Azul (B) y efecto Alfa (A) que contenga
Este indicador puede ser engaoso, el motivo es que indica el color que tiene el
objeto por el que en ese momento pasamos el cursor del ratn. Por tanto,
podemos tener seleccionado un objeto (haciendo clic en l) y ver en el Panel Info

su tamao y su posicin, pero al desplazar el ratn, el valor del color cambiar y ya


no indicar el color del objeto seleccionado, sino el del objeto por el que pase el
cursor. Tened esto en cuenta para no cometer errores o perder tiempo innecesario.
Posicin del Cursor: Indica la posicin del cursor. Es til por si queremos
que suceda algo en la pelcula al pasar el cursor justo por una posicin
determinada o para situar partes del objeto en lugares especficos.

Los Grupos
Un Grupo no es ms que un conjunto de objetos. Si bien no cualquier conjunto
de objetos forman un grupo, ya que para crear un grupo, debemos indicarle a
Flash que as lo queremos. Para ello, basta seleccionar los objetos que queremos
que formen parte de un grupo y despus hacer clic en el Men Modify -> Group.
Tras hacer esto observaremos que desaparecen las texturas que indicaban que
los objetos estaban seleccionados y observamos que el grupo pasa a ser un
"todo", ya que resulta imposible seleccionar a uno de sus miembros sin que se
seleccionen a su vez los dems. Adems, aparece el rectngulo azul (por defecto)
que rodea al grupo, definindolo como tal.

Crear grupos es muy til, ya que nos permite, como ya hemos dicho, tratar al
conjunto de objetos como un todo y por tanto, podemos aplicar efectos al conjunto,
ahorrndonos la labor de hacerlo de objeto en objeto.
Por ejemplo, supongamos que tenemos un dibujo que representa un conjunto de
coches. Tras dibujarlos todos, nos damos cuenta de que queremos aumentar el
tamao de los coches. Podemos aumentar el tamao de los coches de uno en
uno, corriendo el riesgo de aumentar unos ms que otros y perdiendo las
proporciones entre ellos, o podemos formar un grupo con los coches y aumentar el
tamao del grupo, de modo que aumenten todos de tamao a la vez y en la misma
proporcin. De igual modo, podemos mover al grupo de posicin, hacer que gire...
Al crear un grupo, simplemente estamos dando unas propiedades comunes a un
conjunto de objetos y, en ningn caso perdemos nuestro objeto. En cualquier
momento podemos deshacer el grupo, mediante el Men Modify -> Ungroup.
Adems, Flash nos permite modificar los elementos de un grupo sin tener que
desagruparlo. Para ello, seleccionamos el Grupo de elementos y hacemos clic en
el Men Edit -> Edit Selected. Podremos editar los objetos que componen el
grupo por separado teniendo en cuenta que,como es lgico, los cambios
realizados afectarn al grupo adems de al elemento en cuestin.
Ejercicios del Tema 7

Prueba evaluativa del Tema 7.

Unidad 8.

Capas

Las Capas. Entendmoslas


Todo el mundo ha visto alguna vez como trabajan los dibujantes de dibujos
animados. Y todos hemos visto como colocan una hoja semitransparente con dibujos
sobre otras y la superposicin de todas forman el dibujo final. Por qu no dibujan todo
en una misma hoja? Por qu trabajan con varios niveles y con varios dibujos si van a
acabar todos juntos?
Los motivos son muchos, y estos niveles que emplean los dibujantes, equivalen a
las Capas que utiliza Flash. Cada capa es, por tanto, un nivel en el que podemos
dibujar, insertar sonidos, textos... con INDEPENDENCIA del resto de capas. Hay que
tener en cuenta que todas las capas comparten la misma Lnea de Tiempos y por
tanto, sus distintos fotogramas se reproducirn simultneamente.
Clarifiquemos
esto con un ejemplo:

Supongamos
que tenemos 2
capas. En una de
ellas los fotogramas
de 1 al 10 contienen
el dibujo de una
portera de ftbol. En
la otra los
fotogramas del 1 al 5
contienen el dibujo
de un portero (del 5
en adelante estn
vacos).
Pues bien, esta
pelcula nos
mostrar
inicialmente (durante
el tiempo que duren
los primeros 5
fotogramas) la
portera con el
portero, para
despus (durante los
fotogramas del 5 al
10) mostrar la
portera sin portero.
De este modo la
portera es
independiente del
portero, y podemos
tratar estos objetos
con total libertad, ya
que no interfieren
entre ellos para

nada.

Otra razn para separar los objetos en capas, es que Flash nos obliga a colocar
cada animacin distinta en una capa. De lo contrario, todos los objetos que se
encuentren en dicha capa formarn parte de la animacin.Si queremos que un objeto
NO forme parte de una animacin, deberemos quitarlo de la capa en la que se produce
dicha animacin.
Siguiendo con el ejemplo del portero, si quisiramos crear un movimiento que haga
que el portero se desplace hacia un lado no hay ningn inconveniente, pero si la
portera estuviera en la misma capa que el portero, entonces AMBOS objetos se
moveran hacia dicho lado, con lo que resultara imposible que slo se moviera el
portero. La solucin es separar los objetos en 2 capas, como ya hemos hecho.
Las capas adems, tienen otras utilidades, nos permiten ordenar nuestra pelcula de
forma lgica, y nos ayudan en la edicin de dibujos (evitando que se "fundan" en uno
slo, o bloqueando el resto de capas de modo que slo podamos seleccionar la capa
que nos interese).

Trabajar con Capas


La vista standard de una capa es la que
muestra la imagen. Vemos para qu sirven los
distintos botones y cmo usarlos.
Insertar Capas (Insert Layer)
: Como su
nombre indica, sirve para Insertar capas en la
escena actual. Inserta capas normales (en el
siguiente punto se vern los distintos tipos de
capas)
Aadir Capa Gua (Add Guide Layer)
Inserta una capa de tipo gua. Se tratan en
profundidad el siguiente punto.
Borrar Capa (Delete Layer)

: Borra la capa seleccionada.

Cambiar Nombre: Para cambiar el nombre a una capa, basta con hacer doble clic
en el nombre actual.
Propiedades de Capa: Si hacemos doble clic en el icono
, podremos acceder a
un panel con las propiedades de la capa en la que hayamos hecho clic. Podremos
modificar todas las opciones que hemos comentado anteriormente y alguna ms de
menor importancia.

Trabajar con Capas. Opciones Avanzadas

Mostrar / Ocultar Capas (Show / Hide Layers)


: Este botn permite ver u
ocultar todas las capas de la pelcula. Es muy til cuando tenemos muchas capas
y slo queremos ver una de ellas ya que permite ocultar todas a la vez, para
despus mostrar slo la actual. Para activar la vista de una capa en concreto (o
para ocultarla) basta con hacer clic en la capa correspondiente en el punto (o en la
cruz) que se encuentra bajo el icono "Mostrar / Ocultar capas"
Bloquear Capas (Lock Layers)
: Bloquea la edicin de todas las capas, de
modo que no podremos modificarlas hasta desbloquearlas. Para bloquear o
desbloquear una capa concreta, procederemos como en el punto anterior, clic en el
punto o el icono "Cerrojo" situados en la capa actual bajo el icono "Bloquear
Capas".
Bloquear una capa es muy til cuando tenemos varios objetos juntos y en capas
distintas y queremos asegurarnos de que no modificamos "sin querer" alguno de
ellos. Tras bloquearemos su capa podremos trabajar con la seguridad de no
modificar dicho objeto, ni siquiera podremos seleccionarlo, de modo que
editaremos con mayor facilidad el objeto que queramos.
Mostrar capas como contornos (Show Layers As Outlines)
: Este botn
nos muestra los contenidos de todas las capas como si slo estuviesen formados
por bordes. De este modo y ante un conjunto numeroso de objetos, podremos
distinguirlos a todos de forma fcil y podremos ver en qu capa est cada uno de
ellos.
Tambin se puede activar o desactivar para cada capa de un modo similar a los
anteriores botones.
Veamos como se muestran estas opciones activadas y desactivadas.

En la primera imagen la capa actual no tiene ninguno de los botones activados,


podemos observar que en la columna "Mostrar Capas" aparece un punto negro.
Este punto significa que NO est activada esta opcin, lo mismo sucede con el
botn "Bloquear capas". En la columna "Mostrar capas como contornos" aparece
un cuadrado CON relleno, lo que simboliza que los objetos se mostrarn completos
y no slo sus contornos.
En la segunda imagen aparece una cruz situada bajo la columna "Mostrar
Capas", lo que indica que dicha capa no es visible en el escenario. Aparece un
cerrojo bajo la columna "bloquear capas", lo que simboliza que la capa est
bloqueada. Y en la columna "Mostrar capas como contornos" NO aparece relleno.
La capa se est mostrando en este modo y no podremos ver los rellenos hasta
deseleccionar esta opcin.
Adems, el color de los contornos ser diferente para cada capa, de modo que
podamos distinguirlas mejor. El color del contorno, coincidir con el indicado en
cada capa. En este ejemplo podeis ver cmo queda un objeto en funcin de tener
activada o no la opcin contorno:

Reorganizar las Capas


Hemos dedicado un tema entero a cmo colocar objetos, sabemos ya cmo
conseguir que un objeto aparezca delante de otro en una pelcula, como hacer
que formen grupos y muchas cosas ms. Pero nos habremos dado cuenta de
que, si trabajamos con distintas capas, todo esto no sirve de mucho...
Como ya se ha comentado, las distintas capas tienen muchas cosas en comn
unas con otras. Lo primero y principal es la Lnea de tiempos, todas las capas de
una misma escena comparten la misma lnea de tiempos y por tanto, los objetos
de todos los fotogramas 1 de todas las capas se vern al mismo tiempo en la
pelcula superpuestos unos sobre otros. y que objeto est delante de los dems?
Pues este criterio viene dado por la colocacin de las Capas en la pelcula. Los
objetos que se mostrarn delante del todos los dems sern aquellos que se
encuentren en la capa situada ms arriba.
Es decir, si nos fijamos en el
ejemplo anterior:
El portero aparece delante de
la portera, porque la capa
"Portero" est situada encima de
la capa "Portera", como puede
apreciarse en la imagen. Si
quisiramos cambiar esta
distribucin, basta con hacer clic
en la capa que queramos mover
y arrastrarla hacia arriba o hacia
abajo hasta la posicin deseada.
Veremos como los objetos se
colocan delante o detrs de los
de la capa seleccionada segn
su capa se encuentre por
encima o por debajo de la
nuestra.
Para mover un objeto de una capa a otra, deberemos seguir unos sencillos
pasos.
Aprende a hacerlo realizando el >Ejercicio Cambiar Objetos de Capa
Para mover un fotograma de una capa a otra, basta con seleccionar el
fotograma a mover y arrastrarlo hasta la capa donde queramos pegarlo. Tambin
se puede Copiar el fotograma y luego pegarlo en la capa de destino.

Unidad 8.

Capas

Tipos de Capas
Como habreis podido comprobar al ver las propiedades generales de una capa o
al hacer clic con el botn derecho del ratn sobre el icono de una capa cualquiera,
existen varios tipos de capas.
Capas normales
: Son las capas por defecto de Flash y tienen todas las
propiedades descritas en los puntos anteriores. Son las ms usadas y se emplean para
todo, colocar objetos, sonidos, acciones, ayudas...
Capas Gua (Guide Layers)
: Son capas especiales de contenido especfico. Se
emplean en las animaciones de movimiento de objetos y su nico fin es marcar la
trayectoria que debe seguir dicho objeto. Debido a que su misin es representar la
trayectoria de un objeto animado, su contenido suele ser una lnea (recta, curva o con
cualquier forma).
En esta imagen
podemos ver el
contenido de 2 capas. La
primera de ellas contiene
la bola azul y la segunda
contiene la lnea curva.
La segunda capa la
hemos definido como
Capa Gua, para que al
realizar la animacin de
movimiento (Esto lo
veremos en un tema
posterior) su contenido
NO se vea en la pelcula,
sino que sirva de
recorrido para la bola
azul.
Es Importante
recordad que el
contenido de las Capas
Gua no se ver en la
pelcula final. Su efecto
har que la pelota azul
se desplace de un
extremo de la lnea al
otro siguiendo esa ruta.
Bonito efecto verdad?
Capas Guiadas (Guided Layers) : Cuando definimos una capa como capa gua, es
necesario definir despus una capa guiada. Esto es, una capa que quedar afectada
por la gua definida en la Capa gua.
Si no definimos una capa guiada, la capa gua no tendr ningn efecto y si bien NO
se ver en la pelcula (por ser una capa gua) tampoco provocar ningn efecto en las
dems capas. En la imagen anterior, la bola azul se deber encontrar en una capa
Guiada, de lo contrario no seguir la ruta marcada por la capa gua.

Las capas gua y las


Capas guiadas se
relacionan entre s de un
modo evidente. A cada
capa gua le
corresponde una y slo
una capa guiada.
Al asociar una capa
gua con una capa
guiada, el icono que
representa a la capa
gua cambia,
indicndonos que est
realizando
correctamente su labor.
En la imagen
podemos un ejemplo de
capa gua y capa guiada
correctamente asociadas
entre s. (La capa
llamada aulaClic es,
evidentemente, la capa
Guiada)
El funcionamiento de las Capas Gua y sus utilidades lo veremos a fondo en el tema
de las Animaciones de Movimiento
Capas Mscara (Mask Layer)
: Estas capas se pueden ver como plantillas que
tapan a las capas enmascaradas (las veremos enseguida). El funcionamiento de estas
capas es algo complejo (tampoco demasiado) y se analizar en cursos posteriores.
Basta con decir que estas capas se colocan "encima" de las capas a las que
enmascaran y slo dejan que se vea la parte de stas que tapan los objetos situados
en las capas mscara (son como filtros). Al igual que las capas gua, los objetos
existentes en este tipo de capas tampoco se ven en la pelcula final. S se vern los
objetos de su correspondiente capa enmascarada a los que estn "tapando".
Capas
Enmascaradas
(Masked Layers)
:
Estas capas funcionan
conjuntamente con las
Capas mscaras. Al
igual que las capas gua
y las capas guiadas
deben ir asociadas unas
a otras para que su
efecto sea correcto.
Sus objetos s que son
visibles en la pelcula
final, pero slo cuando
algn objeto de la capa
Mscara est sobre
ellos.

Veamos el funcionamiento de estas capas con un ejemplo. En este ejemplo, los


rectngulos azules forman parte de la Capa Enmascarada y por tanto se vern en la
pelcula final (pero slo lo que tape la capa mscara). El valo rojo est situado en la
capa Mscara y no se ver en la pelcula, pero slo se ver lo que l "tape". As se
emplean las mscaras...

Unidad 9.

Smbolos

Qu son los smbolos

Los Smbolos provienen de objetos que hemos creado utilizando las herramientas que nos propo

Estos objetos al ser transformados en smbolos, son incluidos en una biblioteca en el momento en
que sean utilizados en varias ocasiones, ya sea en la misma o en otra pelcula.

Cmo crear un smbolo


La accin de crear un nuevo smbolo es una de las ms usadas en Flash ya
que es uno de los primeros pasos para crear una animacin, como veremos
ms adelante.
El procedimiento es el siguiente:
Seleccionamos el objeto que queramos convertir en smbolo. Abrimos el
panel de Propiedades de Smbolo, accediendo al men Insert -> Convert to
Symbol o simplemente pulsando F8.

Una vez hecho esto nos aparecer una ventana como la anterior.
Introducimos el nombre del smbolo que vamos a crear.
Esto al principio y mientras tengamos poco smbolos no ser muy importante,
pero ms adelante nos servir para hacer referencia al objeto.
Slo nos queda seleccionar el tipo de smbolo o comportamiento

(Behavior) en que queremos convertir nuestro objeto. Podemos elegir entre Clip
(pelcula), Botn y Grfico. Sus caractersticas y las diferencias entre ellos las
veremos en temas posteriores.
Bastar con pulsar OK para tener nuestro smbolo creado.

Para practicar estas operaciones te aconsejamos realizar Ejercicio Crear


Smbolo.

Las Bibliotecas
En Flash 5
podemos encontrar
dos tipos de
bibliotecas, las
bibliotecas comunes y
de ejemplos y
aquellas asociadas a
las pelculas que
hemos creado. Todas
ellas las tenemos a
nuestra disposicin
para utilizar los
smbolos que
contienen.
Para acceder a las
bibliotecas comunes
que nos ofrece Flash
simplemente tenemos
que ir a la Barra de
Mens, Window ->
Common Libraries y
seleccionar alguna de
las que se nos
ofrecen. Las hay de
todo tipo de smbolos:
botones, clips o
grficos.
Para acceder a los
ejemplos de pelculas
completas de Flash 5
debemos acceder a
Help -> Samples.

Para acceder a la
lbrera de smbolos
de la pelcula que
estamos creando de
nuevo vamos a la
Barra de Mens,
Window -> Library o
bien pulsan a la vez
Control y L. En esta
biblioteca aparecern
todos los smbolos
que hemos creado
hasta el momento.
Podemos
comprobar como el
nuevo smbolo que
hemos creado en el
ejercicio anterior
(Ejercicio Crear
Smbolo) se ha
aadido a nuestra
biblioteca accediendo
a ella como acabamos
de indicar.
Los smbolos
contenidos en las
bibliotecas estn
identificados por su
nombre y por un icono
que representa el tipo
de smbolo que
representan:

Clip
Botn
Grfico
Para utilizar un smbolo de una biblioteca basta con pulsar en el nombre de
dicho smbolo y arrastrarlo a cualquier lugar del rea de trabajo. Observa cmo
podemos hacerlo.

Diferencia entre smbolo e instancia

Como hemos comentado anteriormente,


cuando creamos un smbolo, Flash lo
almacena en una bibliotecas. Pues bien, cada
vez que utilicemos ese objeto en una pelcula,
ste se convierte en una instancia.
Aunque parece que sean lo mismo, la
importancia de esta distincin es que cuando
utilicemos un smbolo que hayamos creado
previamente en una pelcula, al modificarlo se
modificar la instancia, mientras que el
objeto seguir intacto, tal y como era en el
momento de su creacin, de manera que
podremos volverlo a utilizar en otro momento.
A la derecha tenis un ejemplo de una
biblioteca, en este caso una biblioteca
estndar de Flash. Cada elemento de la
biblioteca es un smbolo.
Para entender mejor este concepto te
aconsejamos realizar Ejercicio Modificar
Instancia.

Modificar una Instancia

Hemos visto anteriormente que podemos modificar una instancia de un smbolo sin modificar el smbol
embargo, al no tratarse de un grfico vectorial (veremos que significa esto ms adelante), no podemos mod
herramientas de dibujo de Flash 5, pero s mediante los paneles de propiedades y efectos de instancia,
"externa" de la instancia.

As, estos paneles no nos permiten modificar la estructura bsica de la instancia, pero s otras propieda
la instancia tenga ms brillo, pero no transformar una estrella en un crculo).

Panel de propiedades de Instancia

Para acceder al panel de propiedades de instancia, que nos pe


propiedades relacionadas con acciones asociadas a la instancia,
denominacin, podemos ir al men Modify --> Instance (Ctrl + i)
instancia de la barra inferior del entorno Flash y despus pinchar

Si seleccionamos un objeto Flash que no se trate de un smbol


mostrara inactivo.

En el momento seleccionemos un smbolo aparecern una ser


comentamos a continuacin:
Nombre del Smbolo y su icono correspondiente del que procede la instancia seleccionada.

Tipo de Smbolo (Behavior) o Comportamiento de la instancia. Por defecto se nos muestra el tipo al qu
pero nosotros podemos cambiarlo para que cambie su comportamiento, aunque pueda seguir manteniendo

Nombre de la Instancia seleccionada (Name). Puesto que pueden haber muchas instancias del mism

importante ya que pueden haber varias instancia con el mismo aspecto pero con distintas acciones asignad

Iconos de
manipulacin de
Instancia.
Sustitucin
de un smbolos
por otro (Swap
Symbol).
Aparecer un
panel con los
smbolos
asociados al
documento y una
presentacin
preliminar de la
apariencia de
cada uno. Aqu
deberemos
hacer doble click
sobre un objeto.
Automticament
e, el objeto
seleccionado en
el escenario se
convertir en
aquel sobre el
que acabamos
de hacer doble
click.
Editar la
instancia
seleccionada.
Esta es
normalmente la
finalidad ltima
de crear una
instancia.
Duplicar
Smbolo. Aade
a nuestra
biblioteca de
documento un
smbolo idntico
al seleccionado.
Al pulsarlo
aparece un panel
en el que se nos
pide introducir el
nombre de la

El smbolo que contiene el punto es el que hemos seleccionado en el escenario. En este


caso lo estaramos sustituyendo por el de Fish Movie Clip.

nueva instancia
que deber ser
diferente al de la
instancia de la
que proviene la
copia.
Acciones
asociadas a la
instancia. En las
pelcula de
complejidad
elevada se
asignan acciones
ActionScript a los
smbolos. Este
panel nos las
muestra y nos
permite
modificarlas.

El panel de Efectos sobre Instancias (I)


Con este panel podemos realizar los efectos
externos sobre smbolos, es decir, podemos
cambiar la forma en la que una instancia se
muestra al que visualiza la pelcula. Estos efectos,
como veremos ms adelante nos permitirn crear
animaciones muy vistosas.
Podemos acceder a l mediante la opcin
Window -> Panel -> Effect, o tambin pulsando
el icono de instancia de la barra inferior del
entorno Flash y seleccionando la pestaa Effect.
Hay varios tipos de efectos. Si el smbolo se
acaba de crear o si no tiene efecto asignado
aparecer en la pestaa None (ninguno).

El panel de Efectos sobre Instancias (II)


A continuacin mostraremos los tipos de efectos. Para ello partiremos de la
siguiente imagen original:

Brightness (Brillo). Se puede modificar su valor desde -100% al 100%, esto


es, completamente oscuro (negro) y completamente brillante (blanco). Puedes
mover la barra deslizante o introducir su valor directamente en la casilla.

Efecto Brillo del 50 %

Tint (Tinte). Esta opcin permite cambiar el color de la instancia, pero puesto
que, como dijimos, no podemos modificar la instancia internamente, al variar el
color en la pestaa Tint Color o bien mediante los valores RGB (cantidad de rojo,
verde y azul), se cambiar el color de todo la instancia como si lo estuviramos
tiendo o poniendo una capa imaginaria de un color determinado. El grosor o
intensidad de esta "capa" la podemos modificar en porcentaje mediante la primera
pestaa que aparece a la derecha.

Efecto Tinte del 50 % con el color verde (0 255 0)

Alpha. Representa el grado de visibilidad o transparencia que se tendr de


la instancia en cuestin. Tambin se puede modificar mediante valor directo o con

la barra deslizante y es muy til para animaciones de aparicin y desaparicin de


objetos. Si aplicamos un efecto alpha sobre una instancia que est encima de otro
objeto, el objeto que antes estaba tapado se podr ver a travs de la instancia.

Efecto Alpha del 65 % sobre el pez naranja

Advanced (Avanzado). Aqu podemos aplicar todos los efectos anteriores al


mismo tiempo de manera ms precisa, con la ventaja de que aqu podemos
ponerle un poco de cada uno, dando lugar a efectos de gran vistosidad.

Sobre el pez superior. Hemos aplicado un efecto Alpha del 65 % y hemos reducido al 45 % la cantidad de verde
a la vez que hemos multiplicado la cantidad de azul por 111, obteniendo el tinte rosa translucido que se observa

Mientras modifiquemos los efectos sobre las instancias podremos ir viendo el


resultado sobre el propio escenario.
Aqu puedes ver el modo de aplicar una transformacin Alpha a una instancia.

Ejercicios del Tema 9

Prueba evaluativa del Tema 9.

Unidad 10.

Grficos

Qu es un grfico?
Los Grficos son smbolos que nos permiten representar objetos estticos y
animaciones sencillas.
En caso de que utilicemos un smbolo grfico para realizar una animacin,
debemos tener en cuenta que sta estar ligada a la lnea de tiempo de la pelcula
en la que se encuentre. Es decir, la animacin se reproducir siempre y cuando la
pelcula original tambin se est reproduciendo. Esto hace que, pese a tener su
propia lnea de tiempo, no puedan contener sonidos, controles ni otros smbolos
grficos.
As pues, normalmente utilizaremos los grficos para imgenes estticas o
para cuando nos convenga que una animacin se reproduzca slo cuando
determinado frame de la lnea de tiempo de la pelcula est en marcha, ya que
para los casos que hemos comentado anteriormente en los que un grfico no nos
es til, Flash nos ofrece otro tipo de smbolos como veremos en temas posteriores.

Tipos de Grficos
Los grficos pueden ser:

a) Estticos: estos grficos se mantienen sin


cambios cuando pasa el tiempo. Estos grficos son los
tpicos en los fondos y en los objetos que no
desempean ninguna funcin especial. Su tamao y por
tanto, el tiempo de carga de este tipo de grficos,
aunque siempre depender de la resolucin, de sus
dimensiones y de la forma en la que estn creados *,
ser en general reducido.

b) Animaciones: este tipo de grfico vara su


forma, posicin u otras propiedades a medida que va
pasando el tiempo. Puesto que para realizar la animacin
se deben usar varios grficos ms adems del original o
bien realizar determinadas acciones que modifiquen el
estado inicial, el tamao de esta clase de grficos, para
las mismas dimensiones y forma de creacin, ser
mucho mayor que uno esttico.

Por esto, aunque las animaciones dan a nuestra


web un aspecto ms bonito y espectacular tienen dos
inconvenientes:
1) Si se trata de un Mapa de Bits (ahora
veremos que significa esto) la web puede llegar a tener
un tamao excesivamente grande.

ESTO ES UN
GRFICO
ESTTICO

ESTO ES
UNA ANIMACIN

2) Aunque no se traten de mapas de bits, por


ejemplo, si son animaciones tpicas de Flash, cuyo
tamao no es excesivo, el hecho de poner muchas
animaciones puede llegar a "marear" un poco al visitante
de nuestro sitio y desviar su atencin de lo que
realmente importa, su contenido.

(*) Los tipos de grfico anteriores pueden ser, a su vez


de dos tipos, segn la forma en la que estn creados:
Grfico Vectorial o Mapa de Bits. Para saber ms acerca
de estos dos tipos de grfico, chale un vistazo a nuestro
tema bsico.

Creando un grfico y comprobando sus propiedades


Como explicar tericamente las propiedades de un grfico resulta un tanto
confuso, vamos a ver de manera prctica lo que queramos explicar. Vamos a
crear un grfico en Flash y a comprobar las propiedades que hemos comentado
en el primer apartado del tema. Para ello, abre una nueva pelcula Flash (File ->
New).
Ahora tenemos que crear el objeto que queremos convertir en un smbolo
Grfico. Dibujemos, por ejemplo, un valo en cualquier lugar del rea de trabajo
con la herramienta valo.
de la barra de herramientas de dibujo y dmosle un
color de relleno que ser lo que despus animemos ( Selecciona el fondo del
valo y dale el color azul mediante la herramienta relleno de color.

).

Ya hemos creado nuestro objeto, vamos a convertirlo en un smbolo grfico. lo


recuerdas ?
Men Insert -> Convert to Symbol y convirtelo en un smbolo como ya
habamos visto y dndole el nombre "GrficoAnimado"y seleccionando el tipo
(Behavior) Graphic (grfico).

Ahora vamos a crear la animacin del grfico. Puesto que todava no hemos
visto a fondo las animaciones, la vamos a realizar de una forma que quiz no
sera la ms apropiada la mayora de las veces, pero nos servir para este
ejemplo. Para ello selecciona nuestro grfico y pulsa el botn derecho del ratn.
Se desplegar un men, en el que seleccionaremos la opcin Edit para modificar
el grfico y acceder a su lnea de tiempos. Comprueba que ests en la lnea de
tiempos del grfico (arriba de la lnea de tiempos encontrars un cuadro blanco
con el nombre de nuestro grfico).

Crearemos a continuacin nuevos fotogramas clave seleccionando uno a uno


los frames nmero 2, 3 y 4 y pulsando F6 cuando los seleccionemos.
Pulsa sobre el frame 2 y cmbiale el color de fondo al valo como hicimos
antes. Haz lo mismo en los dos siguientes frames.

Tu lnea de tiempos debera tener este aspecto:

Pulsa sobre arriba de la barra de tiempos donde est escrito el nombre de


nuestra pelcula (en este caso "Scene 1"). De esta forma volveremos a ver
nuestra pelcula como al principio y nuestro grfico "desde fuera".

Ahora ya tenemos completo nuestro grfico animado. Qu crees que


suceder si reproducimos la pelcula? Comprobmoslo pulsando Control +
Intro, se visualizar la pelcula.

Y bien? Nada. Nada en absoluto. El valo sigue tal cual. Por qu? La
respuesta est en las caractersticas de los grficos que habamos explicado: la
lnea de tiempos del grfico est ligada a la de la pelcula.
En este caso la lnea de tiempos de la pelcula tena un solo frame, mientras
que la del grfico tena 4, por tanto, no le hemos dado tiempo al grfico a
desarrollar su animacin; slo ha reproducido un frame, el primero.
Cmo podemos solucionarlo?
Muy sencillo. Basta con recordar lo que hemos comentado. Cierra la ventana
del reproductor de Flash, selecciona el fotograma 5 de la pelcula principal y
pulsa F6. Ahora tenemos 5 fotogramas en la pelcula principal.
Pulsa de nuevo Control + Intro.
Ahora si que se ve la animacin.
Guarda este archivo porque lo utilizaremos ms adelante.

Introducir un Mapa de Bits

Los grficos de tipo Mapa de Bits pueden crearse con muchos programas.
Si deseas que en tus pelculas hayan mapas de bits lo ms seguro es que
prefieras crearlo y hacerlos ms espectaculares en otro programa ms apropiado
que Flash para el manejo de Bitmaps: Photoshop, Fireworks o Photopaint.
Flash 5 permite importar mapas de bits de otros programas, cuando han sido
guardados en formatos grfico GIF, JPG, TIFF y muchos ms. Tambin nos
permite modificarlos en cierto modo. Podemos cambiarle el tamao y convertirlo en
un smbolo para aprovechar las opciones que nos ofrece Flash aunque, teniendo
en cuenta qu es un bitmap, no podremos modificarlo "internamente" pero
podremos usarlo como un smbolo ms.
Aqu tienes una muestra de como hacerlo.

Introducir un archivo vectorial


Al igual
que los mapas
de bits, hay
otros
programas que
trabajan con
grficos
vectoriales
como tambin
hace Flash 5.
Si
queremos traer
un archivo
vectorial creado
en otro
programa, por
ejemplo
Freehand,
podemos
hacerlo de
manera muy
sencilla.
Simplemente
accedemos al
men File ->
Import... A
continuacin,
seleccionamo
s el tipo de
archivo
correspondient
e al grfico
vectorial que
queramos

importar. Por
ejemplo FH9
del Freehand 9.
Pulsamos
Abrir, y ya
tenemos
nuestro archivo
vectorial.
Este archivo
s lo podremos
modificar
internamente
ya que Flash es
capaz de hacer
grficos de
este tipo.
Concretame
nte, el
Freehand
pertenece
tambin a
Macromedia, al
igual que Flash,
con lo que la
compatibilidad
en este caso es
total.

Exportar un objeto Flash como mapa de bits


La interfaz de dibujo de Flash, como hemos visto, resulta muy cmoda en determinadas
ocasiones para realizar dibujos. As podra interesarnos utilizar Flash 5 para crear un dibujo
y despus utilizarlo en otros programas o para cualquier otro uso.
Esto es perfectamente posible con Flash, ya que nos permite exportar un objeto de
flash como un bitmap. Eso si, debemos tener en cuenta, como vimos en el curso bsico, que
la mayora de mapas de bits no permiten animaciones, por esto el objeto flash que
exportemos no debera contener animacin ya que sta no se guardar.
Para realizarlo seleccionamos el objeto que vamos a exportar y accedemos al men
File -> Export Image ... Luego introducimos en el campo Name el nombre que queremos
que tenga nuestro nuevo bitmap.
Seleccionamos el tipo de mapa de bits en que deseemos convertir nuestro objeto y
pulsamos Guardar.

Ahora ya podemos usar nuestro objeto Flash como un bitmap.

Para entender mejor cmo te aconsejamos realizar el Ejercicio Exportar Bitmap.

Exportar un objeto Flash como animacin


Como vimos en el tema bsico hay tipos de
archivo de mapa de bits que soportan
animaciones, como los GIF. Pues bien, con Flash
tambin podemos crear una animacin y exportarla
como un GIF animado. Sin embargo, como vimos, el
GIF animado consiste en una secuencia de imgenes
mostradas secuencialmente y es por esto que para
exportar un objeto Flash 5 como GIF animado es
necesario que todos los fotogramas de esta
animacin sean clave, ya que el GIF no lo
reconocer en caso contrario y no veremos el efecto
deseado.
Si queris saber cmo hacerlo no tenis ms que
seguir los pasos de este clip (Nota: se utilizar como
base el grfico animado que creamos en el apartado
de creacin de grficos, ya que dicho grfico est
hecho fotograma a fotograma):
A la derecha vemos el GIF Animado que resulta
de exportar nuestro grfico Flash.

Unidad 11.

Clips de Pelcula.

Qu es un Clip de Pelcula?
Un Clip de Pelcula o simplemente Clip, es una pelcula en si misma, como
cualquiera de las que podamos haber creado hasta el momento en este curso, pero
que est incluida dentro de otra pelcula y, a su vez puede contener tambin pelculas
insertadas en l.
Al igual que los otros tipos de smbolos de Flash, los clips de pelcula tienen su
propia lnea de tiempo. Sin embargo, y a diferencia de los Grficos (como veremos a
continuacin), esta lnea temporal no est ligada a la lnea de tiempos del documento
que lo contiene, de tal forma que su ejecucin es independiente.
Este tipo de smbolos puede contener cualquier otro tipo de smbolo: grfico, clip o
botn, as como cualquier objeto creado con Flash, ya que un clip es realmente una
pelcula.
Otra de las ventajas de los Clips la encontramos cuando realizamos pelculas de
gran complejidad y tamao, en la que intervienen un nmero muy elevado de
fotogramas, debido a que en la vista general del documento, nosotros slo veremos un
fotograma por clip, el cual puede estar compuesto por muchos frames, lo que nos
permitir tener una mejor visin de cmo se desarrolla nuestra animacin, y una barra
de tiempos ms clara y "limpia".
Los Clips son una de las herramientas que dan mayor potencia a Flash 5,
permitindonos crear pelculas de gran complejidad y multiplicar los efectos visuales,
ya que se pueden crear mltiples movimientos independientes entre s y crear
conexiones entre los diferentes Clips de un documento.
Todas aquellas cosas que no podamos hacer con un smbolo de tipo Grfico, lo

podemos hacer con un Clip, adems de poder realizar tambin todo aquello que nos
permita dicho smbolo. Por esto, normalmente se utilizan los clips para cualquier tipo
de animacin debido a su gran flexibilidad, dejando los grficos slo para imgenes
estticas.

Comprobar las propiedades de un Clip


Como hicimos con los grficos, vamos a ver
como la lnea de tiempo de un clip no est ligada a la
lnea de tiempo del documento que lo contiene y, a la
vez, veremos la diferencia entre los clips y los
smbolos Grficos, que supone una de las razones de
la mayor utilizacin de los primeros en lo que se
refiere a la creacin de animaciones.
Para ello abriremos una nueva pelcula Flash ( File
-> New ). En ella que insertaremos un clip de pelcula
de las libreras de smbolos que nos ofrece Flash 5.
Accedemos al men Window -> Common
Libraries y seleccionamos Movie Clip. A
continuacin elegiremos una pelcula cualquiera (por
ejemplo la del pececito) y la arrastraremos a nuestro
rea de trabajo (Fish Movie Clip).
Ahora tenemos nuestro Clip, insertado en nuestro
nuevo documento Flash. Es decir, tenemos dos
pelculas, cada una con su lnea de tiempos.
Ahora veamos que son independientes, siguiendo
un proceso similar al que utilizamos con los smbolos
de tipo Grfico.
Observa la lnea de tiempos de la pelcula principal y comprueba que slo tiene un
fotograma.

Editemos el Clip que insertamos en el documento (doble click sobre el pez) y


examinemos su lnea de tiempos.

Como vemos, la duracin del clip que hemos insertado es mucho mayor que la
pelcula nueva que lo contiene. Si el pez fuera un grfico ya hemos visto que si
intentramos reproducir la pelcula no ocurrira nada. Veamos qu sucede siendo en

este caso un Clip. (Control + Intro).


En este caso si que vemos la animacin porque en el momento en que el
reproductor ha pasado por el fotograma que contena el clip, ste ha empezado a
reproducirse y, puesto que su lnea de tiempos es independiente, ha seguido
reproducindose a pesar de que la lnea de tiempos principal haya terminado, y lo
continuar haciendo hasta que acabe su lnea temporal propia.

Crear un nuevo Clip


Como hemos comentado, utilizaremos normalmente Clips para hacer
animaciones. Aunque no lo hayamos comentado antes, se puede crear un smbolo
Flash de la nada, de forma que se quede en la biblioteca y podamos editarlo
cuando nos convenga. Esto puede ser interesante en los clips, ya que a diferencia
de los grficos, su finalidad suele ser el movimiento y, en animaciones complejas,
en ocasiones se les asignan acciones especiales en las cuales, bien no es
necesario crearlo en ese momento, bien conviene dejar el clip vaco.
Por esto, es interesante aprender como crear un smbolo, en este caso un clip,
de la nada para despus modificarlo.
Observa cmo hacerlo
Cuando estudiemos las animaciones haremos ejemplos de animaciones
mediante clips de pelcula y veremos el potencial real de este tipo de smbolos.

Importar y Exportar Movie Clips de Biblioteca

Como para todos los smbolos los Clips


se almacenan en la biblioteca del
documento cuando son creados. Esto es
muy importante en muchos casos ya que
habitualmente los clips son muy
reutilizables. Para importar clips de pelcula
debemos abrir primero la biblioteca en la
que est contenido.
Hemos visto en el tema de Smbolos,
dos tipos de bibliotecas: las que estn
asociadas a documentos u otras pelculas y
las que nos proporciona Flash 5. Pues bien,
no slo podemos utilizar smbolos del
mismo documento en el que estamos
sino que podemos Importarlos de otros
documentos de nuestro disco duro, lo
que, en el caso que nos ocupa, puede
resultar de gran utilidad. Obviamente la
exportacin mediante biblioteca se hace
automticamente ya que Flash deja los
objetos creados en la biblioteca para que
puedan ser reutilizados.
Para importar un Clip de un archivo
del disco duro debemos ir al men File ->
Open as Library, seleccionar el Archivo
Flash (.fla) del que queremos importar sus
smbolos de biblioteca y pulsar Abrir.
Aparecer la biblioteca con la lista de los
smbolos correspondientes a los grficos,
botones y clips del documento en cuestin.
Es importante destacar que cuando
insertemos un clip de una biblioteca, se
insertarn a su vez todos los smbolos que
contenga, incluidos los clips.
A continuacin mostramos un ejemplo en
el que veremos cmo importar clips de esta
forma adems de comprobar las
propiedades de los clips y sus lneas de
tiempo independientes mediante la
reproduccin simultnea de dos pelculas,
creando un efecto bastante vistoso
utilizando "aparentemente" un slo frame.
Ver ejemplo animado:
Y el resultado del proceso anterior es el siguiente:

Para ver cmo exportar e importar una pelcula completa como un slo movie
clip y poder usar esto para el desarrollo en programas como Swish, revisa nuestro
tema avanzado: Otros usos de los Movie Clips
Ejercicios del Tema 11

Unidad 12.

Prueba evaluativa del Tema 11.

Botones.

Qu es un Botn?
Los smbolos de tipo Botn son los que aportan la mayor parte de la
interactividad de las pelculas Flash con aquel que la est visualizando. Un botn,
en Flash, es igual que cualquier botn de cualquier entorno informtico, sea web o
cualquier otro.
Son elementos que se prestan a que el usuario los presione, desencadenando
al hacerlo una serie de acciones. Tambin es habitual ver como este tipo de
elementos reaccionan cuando se les pasa el ratn por encima o cuando se les est
pulsando, por ejemplo.
Pues bien, para conseguir los efectos interactivos que acabamos de mencionar
en otros lenguajes orientados a la web, que es el caso que nos ocupa, debemos
crear programas relativamente grandes. Esto es un inconveniente bastante grande
ya que el uso de los botones es una prctica muy habitual en el diseo en Internet.
Sin embargo, en Flash no ocurre as. Su interfaz esta diseada de manera especial
para la creacin de botones, lo que nos permite crear todos estos efectos de una
manera muy sencilla.
Al igual que los otros smbolos de Flash 5, los botones tienen su propia lnea de
tiempos. Esta es independiente pero, sin embargo, esta formada nicamente por
cuatro fotogramas, uno para cada estado posible del botn.

Up (Reposo). Aspecto por defecto del botn, es decir, cuando el puntero del
ratn no est situado sobre l.
Over (Sobre). Aspecto del botn cuando situamos el puntero sobre l.
Down (Presionado). Apariencia que deseamos tenga nuestro botn mientras lo
mantengamos pulsado.
Hit (Zona activa). Aqu debemos indicar el rea real en la que queremos que

acte nuestro botn. Esto es importante sobre todo en botones compuestos slo
por texto como veremos ms adelante.
Parece que la limitacin de fotogramas podra implicar una limitacin en la
capacidad de espectacularidad y utilidad de estos smbolos, pero no es as.
Los botones pueden contener a su vez otros smbolos, como clips o grficos
(tambin de tipo Bitmap). La unin de las posibilidades de todos los smbolos dota
a los botones de gran espectacularidad

Creacin de un Botn
En la creacin de un botn podemos considerar dos fases. En la primera
vamos a convertir nuestro objeto a smbolo de tipo botn y posteriormente veremos
como completarlo internamente, lo que nos ayudar a entender mejor dicha
estructura.
Primeramente crearemos el objeto que representar el aspecto por defecto de
nuestro botn con las herramientas que nos ofrece Flash 5.
Seleccionaremos el objeto y accederemos al men Insert -> Convert to
Symbol, le daremos el comportamiento (Behavior) Button (botn) y asignaremos
un nombre a nuestro nuevo smbolo.

De esta forma ya tenemos transformado el objeto para que se comporte como


un botn. Ahora lo completaremos internamente.
Para determinar cmo debe reaccionar el botn en funcin de las acciones del
ratn, lo editaremos haciendo click con el botn derecho del ratn sobre nuestro
nuevo botn y seleccionando la opcin Edit.
Cuando tengamos delante la lnea de tiempos del botn (observa que tiene el
aspecto que hemos mostrado anteriormente), seleccionaremos cada uno de los
frames (Up, Over, Down y Hit) y pulsaremos F6 para crear un fotograma clave en
cada uno de ellos.
Ahora ya podemos modificar el aspecto inicial del botn para cada posicin del
cursor y marcar el rea de accin del botn (fotograma Hit) en la
que simplemente
podremos dejar la
misma figura que
la inicial (en este
caso slo es
importante la
forma del objeto,

no los colores u
otras cosas) o
bien dibujar con
las herramientas
de dibujos de
Flash una nueva
figura, en cuya
superficie "se
sentir aludido"
nuestro botn.

Aqu podemos ver una muestra de creacin de un botn ovalado.


resultado obtenemos el botn que continuacin mostramos.

Como

Este es un botn muy bsico, como veremos se pueden complicar mucho, pero
para empezar nos servir con este.
Si una vez creado el botn queremos observar sus distintos estados y todava
no hemos terminado la pelcula entera y por tanto no deseamos tener que
reproducirla toda podemos hacerlo accediendo a la librera de nuestra pelcula y
seleccionando el botn creado. Para ver lo que comentbamos bastar con pulsar
la tecla situada a la derecha de la vista previa del smbolo.

Formas en los Botones


Los botones son smbolos que pueden tener multitud de formas. Si bien lo
ms habitual es ver botones rectangulares, cuadrados y circulares, cuya creacin
es inmediata como vimos en el punto anterior, tambin hay otros muchos tipos de
botones que, pese a ser menos utilizados, es muy habitual verlos en multitud de
pginas web.
Entre estos estn los creados mediante formas poligonales, aquellos que estn
formados por texto nicamente, dibujos con diferentes motivos, etc. Es interesante
su uso para dar ms vistosidad ya que algunos resultan ms expresivos, y en esto
Flash nos ayuda mucho, debido a la relativa sencillez de creacin de botones que
sus herramientas de dibujo nos ofrece.
Hay varias formas de botn tambin muy extendidas, como el botn con relieve
sencillo o los botones en forma de pldora. Puesto que existen muchas formas de
conseguir estos efectos, a continuacin tienes un ejercicio paso a paso que
muestra una forma de conseguir el relieve en un botn rectangular. Ejercicio Botn
en Relieve.

Botones de texto. La importancia de la zona activa

Los botones, como hemos visto, poseen un fotograma en el que indicamos la zona activa. En los
esto pareca poco til, ya que es comn pensar que obviamente la zona activa que queremos que teng
comprenden los lmites de dicho botn.

Veamos como esto no es siempre tan trivial. Aqu se muestran dos botones creados en Flash 5. Com
pasar el ratn por encima de uno y de otro.

Aunque parezcan iguales, la diferencia est en el momento en el que situamos el ratn en uno de lo
letra o, en general, todos aquellos lugares que no pertenezcan al texto propiamente dicho.

En el texto de la izquierda el botn se activa slo cuando situamos el puntero del ratn sobre la letra
puede llevar a confusin, ya que aquel que navegue por nuestras pginas simplemente querr hacer u
intentar apuntar concretamente a unas letras que quiz sean muy estrechas.

Esto es debido al mal uso de la zona activa. En el botn de la derecha est solucionado este problem
nuevo. Aqu tienes un ejemplo de como hacerlo correctamente.

Incluir un clip en un botn


La inclusin de clips de pelcula en los botones puede dotar a stos de ms
vistosidad.
Es habitual colocar un clip en el fotograma Over (Sobre) para indicar algn
tipo de informacin extra o una animacin para ir ms all de un cambio de color.
Tambin es comn ver un clip de pelcula actuando como un botn. Esto
caso se puede hacer por ejemplo poniendo el clip en el fotograma Up (Reposo).
Veamos por ejemplo el botn siguiente:

Comprueba todos los estados del ratn. Por lo que nos dice el botn podemos
intuir que empieza algo, pero quiz no tengamos claro qu.
Si nosotros en determinado momento no queremos que esto ocurra en nuestras
pginas web, podemos recurrir a la introduccin de un Clip en el botn, que
explique un poco ms acerca de lo que pasar si pulsamos.
Aqu puedes seguir el proceso que acabamos de comentar
Y este es el resultado.

Bitmaps y Botones
Adems de clips, los botones tambin pueden contener smbolos de tipo
Grfico.
Puesto que, como ya hemos visto, todo lo que se puede hacer con un grfico
se puede hacer con un clip, vamos a centrarnos en los Bitmaps que Flash nos
permite importar, ya que estn muy extendidos como forma de expresin grfica a
lo largo y ancho de la Red.
Si consideramos las limitaciones que ya conocemos sobre los mapas de bits
puede parecer poco interesante hacer uso de ellos en la creacin de botones, pero
no es as.
Bsicamente podemos hacer dos cosas:
1) Incluir en cada uno de los fotogramas del botn un bitmap distinto,
obteniendo un efecto como el que se consigue con lenguajes como
javascript (siempre considerando la mayor sencillez de Flash).
2) Aprovechar las propiedades de los Grficos en Flash. Para esto,
deberamos importar primero el Bitmap y despus convertirlo a smbolo botn.
Posteriormente lo editaramos y, despus de insertar cada fotograma clave,
convertiramos su contenido a smbolo Grfico. Una vez hecho esto, variando los
efectos de las instancias en Flash (Alpha, Tinte, Brillo) podremos conseguir efectos
bastante buenos.
He aqu una pequea muestra en la que slo hemos utilizado un Bitmap de
tipo GIF, sacado de la Red y lo hemos convertido en un botn grfico aplicndole
un efecto Alpha (Transparencia) al estado de reposo, lo que da la sensacin de
estar apagado (tambin podramos haber aplicado brillo). En el fotograma Over
(Sobre) hemos dejado el GIF original para que al pasar sobre el botn de la
sensacin de encenderse. Finalmente le hemos aumentado la cantidad de rojo en
el fotograma Down (Presionado) para que parezca estar incandescente.

Acciones en los botones


Puesto que existen multitud de acciones que se pueden aplicar tanto a los botones, como a otros
comentar dos de las ms comunes:

1) Abrir una pgina web. Con esto conseguiremos abrir una pgina cualquiera de internet (o una p
para irnos desplazando por webs que contengan ms de una pgina, o permitir al usuario descargarse
Aqu tienes una muestra de cmo hacerlo.

2) Controlar una pelcula en curso. Si estamos reproduciendo una pelcula Flash y queremos perm
ponga en

marcha, avance, retroceda ...


Por ejemplo, para detener una pelcula en curso simplemente
debemos hacer que nuestro botn en cuestin aparezca en el
escenario de dicha pelcula, seleccionarlo, y abrir el panel de
acciones, activando posteriormente la funcin Stop().
Tras hacer esto, deberamos cambiar como hicimos en la
animacin anterior el momento en el que se debe ejecutar la
funcin, seleccionando la opcin Press.
A la derecha mostramos cmo debera quedar el panel de
acciones del botn.
Ahora cada vez que presionemos este botn se detendr la
pelcula en la que est incluido.
De forma muy parecida actuaramos para otras acciones de
control.

Incluir sonido en un botn


Si nuestras pginas van a tener sonido, el sonido en los botones es una
parte fundamental. Podemos hacer, por ejemplo que se activen sonidos al pulsar
un botn.
Para ello, simplemente debemos editar nuestro botn y seleccionar el
fotograma Down (Presionado). Ahora debemos insertar el sonido. Por ejemplo
podramos insertar uno de la biblioteca comn Window -> Common Libraries ->
Sounds. Elegimos uno de los que nos ofrece Flash, y lo arrastramos hasta
cualquier lugar del escenario.
El resultado podra ser algo asi:

Ejercicios del Tema 12


evaluativa del Tema 12.

Unidad 13.

Prueba

Animaciones de Movimiento.

La animacin en Flash

Flash 5 es un programa bsicamente orientado a la animacin, de ah la gran importancia de este


creando animaciones cada vez ms complicadas se necesita sobretodo mucha prctica.
En este tema y los sucesivos mostraremos las tcnicas bsicas de animacin en Flash. La unin

permita crear las ms variadas y vistosas animaciones.

En el tema de la animacin, Flash ofrece unas facilidades muy grandes, consiguiendo efectos que
conocimientos y espacio de almacenamiento para ser creados, como es el caso por ejemplo de los GIF
programacin como Java, de una manera muy sencilla, sin necesidad de excesivos conocimientos y oc
disco.

Aunque Flash ofrece tcnicas mejores, tambin se pueden crear animaciones a modo de GIF anim
animaciones Fotograma a Fotograma. Estas son las animaciones ms bsicas y conviene conocerlas.
tema bsico: Animaciones Fotograma a Fotograma.

A continuacin veremos distintos tipos de animaciones que el creador de pelculas Flash deber t
destacar que podremos aplicar varias de estas animaciones colocndolas en distintas capas. Con esto
efectos ms espectaculares a la par que tiles.

Es muy importante tener claro un concepto: no se debe crear animaciones en pginas que no
animaciones que distraigan al que visualice nuestros documentos de lo realmente importante, que es e

Interpolacin de Movimiento (I)


Es la accin bsica de las animaciones en Flash. Permite desplazar un
smbolo Flash de un lugar a otro del escenario, siendo necesarios nicamente dos
fotogramas, lo que optimiza mucho el rendimiento de la pelcula.
Es importante destacar que para que una Interpolacin de movimiento se
ejecute correctamente aquellos objetos que intervengan debern haber sido
previamente convertido a smbolo.
Tambin se debe tener cuidado al realizar una Interpolacin con dos
smbolos que se encuentren en la misma capa, ya que el motor de animacin los
agrupar como uno slo y el resultado no ser el esperado. Por esto es
conveniente asegurarse de dos cosas:
1) Separar en distintas capas los objetos fijos y los que estarn
animados.
2) Poner tambin en distintas capas objetos que vayan a ser
animados con direcciones o formas distintas.
Pasemos pues al tema en cuestin. Una interpolacin de movimiento, como
hemos dicho, es el desplazamiento de un smbolo de uno a otro punto del
escenario. El hecho de que slo se necesiten dos fotogramas es debido a que
Flash, nicamente con la posicin inicial y final, "intuye" una trayectoria en lnea
recta y la representa (veremos que tambin se pueden realizar movimientos no
rectilneos).
Cuando realicemos la interpolacin correctamente observaremos un aspecto
como este en la lnea de tiempo.

Esto indica que la animacin cambiar la posicin del smbolo del fotograma
1 hasta la posicin del mismo smbolo en el fotograma 20, utilizando precisamente
20 fotogramas. El nmero de fotogramas que se usen en la interpolacin de
movimiento indicar las subetapas de que constar la animacin. Cuantas ms

subetapas ms sensacin de "continuidad" (menos saltos bruscos) pero a la vez


menos velocidad en el movimiento.
La velocidad en el movimiento de las pelculas la podemos cambiar tambin
modificando su parmetro en la barra de tiempos,
cambiar lo que hemos comentado anteriormente.

pero esto no

La velocidad est expresada en Fotogramas Por Segundo (fps) y se puede


modificar haciendo doble clic en el lugar que hemos indicado de la barra de
tiempos. A mayor valor ms velocidad, pero se deben poner siempre suficientes
fotogramas para que se desarrolle la animacin como queremos.
Aqu puedes ver como realizar una interpolacin de movimiento
Si el objeto con el que queremos hacer la interpolacin de movimiento no
est convertido a smbolo nos encontraremos con algo as...

... y la animacin no funcionar.


Tambin podemos realizar la interpolacin de otra forma, sin convertir
previamente el objeto a smbolo, ya que Flash lo convierte a smbolo
automticamente si no lo hacemos, dndole el nombre "Tween" ms un nmero.
Basta con hacer clic con el botn derecho sobre el fotograma que contiene nuestro
objeto (en la lnea de tiempos) y seleccionar Create Motion Tween (Crear
Interpolacin de Movimiento). Despus, al crear un fotograma clave en otro lugar
de la lnea de tiempos se crear automticamente la interpolacin, y slo
deberemos modificar este ltimo fotograma para producir la animacin.
Esto quiz no sea lo ms conveniente en pelculas grandes, debido a lo que
ya comentamos de la gran cantidad de smbolos que pueden aparecer y la
confusin que crean muchos smbolos con nombres parecidos.

Flash tambin nos permite crear animaciones con trayectorias rectilneas en


varias fases, con direcciones distintas. Para ello, una vez creada la interpolacin,
basta con pinchar en uno de los fotogramas intermedios y crear un nuevo
fotograma clave. Si movemos el smbolo en ese fotograma a otro lugar del
escenario y reproducimos, la animacin ir primero a esa posicin y despus a la
posicin final.
Si hacemos esto varias veces sobre varios fotogramas obtendremos varias
trayectorias consecutivas ms.
Para entender mejor este concepto recomendamos hacer el Ejercicio
Encadenar Interpolaciones.

Interpolacin de Movimiento (II)


Acabamos de ver las interpolaciones de movimiento como un mecanismo

para desplazar un smbolo Flash de un lado a otro del escenario. Sin embargo,
podemos aprovechar este comando del programa para realizar animaciones en las
que nuestro objeto aumente o disminuya de manera progresiva su tamao.
Esto es muy sencillo con Flash 5, basta con modificar la instancia del smbolo
en el ltimo fotograma de la interpolacin de movimiento, pero esta vez
cambindole el tamao.
Por supuesto, podemos aplicar ambos efectos a la vez, de manera que el
cambio de tamao se producir mientras el objeto se desplaza. Tambin podemos
hacer el cambio de tamao en varias fases o secuencias encadenadas como en
las interpolaciones de movimiento comunes.
El ejemplo siguiente incorpora estas tres caractersticas de la Interpolacin
de Movimiento de Flash 5.

Y la lnea de tiempos que nos queda es algo tan sencillo como esto:

Unidad 13.

Animaciones de Movimiento.

Animacin de Textos

Es indudable que para comunicar algn mensaje, en la mayora de las ocasiones, no basta con im
donde el texto cobra gran importancia. No obstante, se debe tener cuidado con la animacin de los tex
complicado leer un texto que se desplaza o cambia de tamao.

Por este motivo, un texto animado debera estar slo en las presentaciones o bien formar parte de
ms importante, no debera estar reproducindose infinitamente.

En las presentaciones, se utilizan multitud de efectos que veremos ms adelante. Sin embargo, c

obtener efectos interesantes. Una de las opciones ms utilizadas es separar las letras de los textos y a
Aqu tienes un ejemplo de una presentacin sencilla mediante texto utilizando esta tcnica.

Si no tienes claro cmo realizar una animacin te recomendamos que realices el Ejercicio Animar

Animacin de Lneas
Una buena animacin no tiene porqu estar compuesta slo por textos o
imgenes espectaculares. En ocasiones conviene darle a la
pelcula un aire ms sencillo o aadir determinados efectos que la
hagan vistosa sin necesidad de cargar mucho la pelcula visualmente, y
en cuanto a tamao de archivo se refiere.
Esto lo podemos conseguir simplemente animando lneas y
haciendo que se muevan por el escenario. Esta tcnica nos permite dar
dinamismo a la animacin o crear formas distintas a lo largo de su
recorrido.
Son especialmente tiles y vistosas en fondos oscuros y se suelen
usar para formar rectngulos que se aprovechan para insertar
imgenes.
A la derecha podemos ver un ejemplo de este tipo de
presentaciones.
Aqu mostramos la forma de crear una animacin de este tipo.

Interpolacin mediante Gua de Movimiento


Anteriormente hemos visto como las interpolaciones de movimiento
desplazaban smbolos Flash en lnea recta. Puesto que esto supone una cierta

limitacin Flash 5 incluye la Gua de movimiento.


Una gua de movimiento es una capa especial que marca una trayectoria
para los smbolos de la capa a la que afecta, para que dichos smbolos la sigan,
durante el movimiento. Esta capa es invisible durante la reproduccin y permite
dibujar cualquier tipo de dibujo vectorial, que nos permitir crear un movimiento
no forzosamente rectilneo.
Crear un movimiento mediante esta tcnica es bastante sencillo, basta con
crear una interpolacin de movimiento en una capa, seleccionarla (debemos
asegurarnos de esto para evitar que la gua se asocie a otra capa), y colocar el
smbolo del ltimo fotograma al final del trazado que realizaremos previamente en
la capa de la gua. No es necesario colocarnos al principio del trazado ya que
Flash lo hace automticamente.
Vemos como la capa a la que se asocia la gua aparece debajo y alineada a
la derecha.

Aqu se puede ver como realizarlo.


Podemos ver un efecto ms vistoso que el que realizamos con la
interpolacin sencilla del principio del tema.

Unidad 14.

Animacin por Forma.

Interpolacin por Forma

Cuando lo que queramos no sea cambiar la posicin de un objeto en el escenario, sino su forma de ma
la vez), Flash 5 nos ofrece la tcnica de la Interpolacin por Forma, que consiste simplemente en ir transform
creado en su interfaz hasta que sea igual que el contorno de otro objeto distinto.

Realizar una interpolacin por forma, es muy semejante a crear una interpolacin de movimiento. Flash
en los que va variando ligeramente la forma del fotograma anterior. As como hacamos en el tema anterior,
clave. Colocaremos en el primer fotograma el objeto con su aspecto original, y en el ltimo la apariencia fina

Esta vez, es importante destacar que para que una Interpolacin por Forma funcione como es deb
intervengan debern ser objetos vectoriales (no smbolos Flash).
Debemos tener tambin dos aspectos en cuenta:

1) Separar en distintas capas los objetos fijos y los que estarn animados.

2) Poner en distintas capas objetos que vayan a ser transformados con formas distintas, ya que
objetos vectoriales del primer fotograma en aquello que haya en el ltimo fotograma de la interpolacin.
Si realizamos la interpolacin por forma correctamente la lnea de tiempos tendr este aspecto:

Las consideraciones sobre la velocidad y el nmero de fotogramas que vimos en las interpolaciones de
tambin a la interpolacin por forma y a cualquier animacin hecha con Flash.

Si hay algn fallo en los parmetros necesarios para que la interpolacin se ejecute bien, como por eje
capa sea un smbolo, se mostrar algo as en la lnea de tiempos:

Podemos observar cmo realizar una interpolacin por forma pulsando aqu.
A la derecha podemos ver el resultado del
proceso anterior.
Tambin podemos realizar interpolaciones de
forma en varias fases de manera anloga a como
lo hacamos en el tema anterior. De esta forma
podemos hacer que un determinado objeto de
convierta en otro antes de adoptar su forma
definitiva.
Ahora, a la derecha podemos ver el ejemplo
anterior pero haciendo que se transforme
previamente en un tringulo antes de pasar a ser
cuadrado. Lo hemos conseguido simplemente
haciendo click con el botn derecho sobre el
fotograma 10 y creando un fotograma clave (Insert
Keyframe). Luego slo tenemos que borrar el
objeto que aparece en el escenario y dibujar el
tringulo.

Transformar Textos
Debido a la importancia de los textos, es importante comentar las aplicaciones
que tienen los cambios de forma sobre ellos. Aadimos as una posibilidad ms para
realizar logotipos o presentaciones vistosas y transmitir informacin de manera
espectacular.
Recordemos que para realizar una interpolacin de forma es necesario que el
objeto sea de tipo vectorial. Este no es el caso de los textos, que se basan en fuentes y
son creados en funcin de los valores de la tabla ASCII y un tipo de letra asociado.
Para solucionar este problema, deberemos

transformar el texto previamente en un objeto vectorial, es decir, como si hu


herramienta lpiz el contorno de cada letra.

Posibilidades de esta tcnica en textos? Muchsimas, aunque puede


adecuadamente. Por ejemplo debemos asegurarnos de dar suficientes fram
transicin. Tambin es conveniente dar un tiempo para que cada letra sea m
"entendida" por aquel que vea la pelcula, porque si no lo hacemos corremo
parezca slo un garabato revolvindose.

Una de las posibilidades es "deletrear" una palabra de manera tan visto


Podemos comprobar como simplemente cambiando el color del objeto final
tambin en el color. Observemos a su vez como cuando se forma cada letr
tiempo suficiente como habamos indicado que era necesario.
En este otro ejemplo se observa la transicin de colores ms claramente y,
adems, observamos transiciones de forma a texto.

Aqu mostramos como se ha realizado esta ltima animacin.

Unidad 14.

Animacin por Forma.

Consejos de Forma
Como ocurra en el tema anterior, a veces no nos viene bien el tipo de accin
que hace Flash por defecto. En las interpolaciones de movimiento lo
solucionbamos mediante la gua de movimiento.
En el caso de la interpolacin por forma, es posible que Flash realice la
transformacin de los objetos de una forma que no es la que esperbamos y que
no nos conviene para llevar a cabo nuestro propsito.
Pues bien, para estos casos Flash 5 nos ofrece una herramienta para
solucionarlo: los consejos de forma.
Los consejos de forma son marcas que indican a Flash qu puntos de la
imagen inicial son los que deben corresponderse con otros tantos puntos en la
figura final. Al indicar esto, estamos controlando las formas intermedias que se
generarn.
Para aadir un consejo de forma a una interpolacin nos situaremos en el
fotograma inicial y pulsaremos Control + Shift + H (o bien ir al men Modify ->

Transform -> Add Shape Hints).

Aparecer un crculo de color con una letra dentro en el centro de la fig


no sea colocado en el contorno del objeto (los extremos, si es que no hay c
efecto. Cuando estn colocados sobre una curva (vector) que forma un con
objeto inicial y verdes para el final.

Dicho crculo debemos colocarlo en un punto del contorno de la figura


aparecer un punto con la misma letra dentro en la figura final (este punto
con el punto del objeto de origen) y deberemos colocarlo en el punto que d
El primer consejo de forma est marcado con la letra "a". Si creamos ms de
uno sern marcados con las letras "b", "c", "d" ... hasta la z, que es el lmite (26
como mximo).
Pulsa aqu para ver la creacin de los consejos de forma.
El resultado del ejemplo anterior es este.

Fijmonos en el punto dnde hemos colocado la marca y comprobemos que


Flash ha hecho lo que le pedamos:

Punto Inicial

Punto Final

Seguimiento

Como vemos el punto que hemos marcado en el objeto inicial se acaba


correspondiendo con con el punto que marcamos en el final, con lo que hemos
conseguido forzar la transformacin que nosotros queramos.
Esta sera la animacin del ejemplo anterior sin el consejo de forma que

hemos introducido.

Ejercicios del Tema 14


evaluativa del Tema 14.

Prueba

http://www.aulaclic.es/flash/f_flash.htm