Pensando en Python (y IV): XML, Java e IA

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Pensando en Python (y IV): XML, Java e IA"

Transcripción

1 XML define datos portables y Python define el código fuente Pensando en Python (y IV): XML, Java e IA DIEGO LZ. DE IPIÑA GZ. DE ARTAZA (profesor del Departamento de Ingeniería del Software de la Facultad de Ingeniería (ESIDE) de la Universidad de Deusto) Acabamos esta serie sobre Python examinando su capacidad para el procesamiento de XML e introduciendo Jython, la implementación Java de Python. También discutiremos una implementación más inteligente del juego de tres en raya que usa un algoritmo de inteligencia artificial. Introducción En los últimos años el estándar XML (extensible Markup Language) se ha establecido como el principal mecanismo para el intercambio de datos entre aplicaciones. XML es un metalenguaje que permite diseñar otros lenguajes. Algunos ejemplos de lenguajes derivados de XML son WML, MathML o XHTML. Con XML cualquiera puede desarrollar su propio lenguaje de etiquetas adecuado al tipo de aplicación que más le convenga. Un documento XML puede ser fácilmente procesado y sus datos manipulados, por medio de APIs estándar disponibles en lenguajes como Java, C, C++, C# y, por supuesto, Python. En esencia, XML define datos portables, al igual que Python o Java definen código portable. Por otra parte, el lenguaje de programación Java ha experimentado desde su nacimiento en 1995 un crecimiento extraordinario. En los últimos 10 años Java no sólo ha ido madurando como lenguaje de programación si no que gracias al ofrecimiento gratuito por parte de Sun de la JDK (Java Development Kit) su adopción ha sido espectacular. Como resultado ha habido numerosísimas contribuciones de código abierto que facilitan el desarrollo de cualquier problema informático que podamos concebir. Jython, la implementación Java de Python, fue creado para poder aprovechar todas estas contribuciones del mundo Java y tener acceso a su funcionalidad desde la elegante sintaxis de Python. En este artículo describiremos cómo programar aplicaciones que usan XML y acceden a paquetes desarrollados en Java desde Python. Concluiremos con una discusión del algoritmo de inteligencia artificial MiniMax que permitiría a la máquina ser un contrincante de entidad en el juego de tres en raya. XML En las próximas líneas vamos a hacer un repaso de la tecnología XML, aunque este tema ha sido tratado con profundidad en ediciones anteriores de Sólo Programadores. Si el lector quiere ampliar lo aquí expuesto, puede consultar los números 110, 111, 114, 115 y 116. XML no es sólo un lenguaje de lenguajes, es también un conjunto de tecnologías que permiten su representación y procesamiento, tales como XPath, XLink, XPointer o XML. La especificación de XML 1.0 puede encontrarse en la dirección de Internet Un documento XML está estructurado en los siguientes componentes: Instrucciones de procesamiento (processing instructions PI). Las PI son instrucciones para el procesador del documento XML. El prólogo del documento es una PI obligatoria: <?xml version= 1.0 encoding= iso ?> Declaraciones de tipo de documento. Especifican la estructura y sintaxis de un documento XML a través de una gramática bien en la forma de un DTD (Document Type Definition) o un Schema. Se declaran en un documento en el siguiente modo: <!DOCTYPE <elemento-raíz> SYSTEM <fichero-con-dtd > A través del DTD una instancia de un documento puede ser validada contra la gramática que define los elementos y posición de los mismos en un documento. Comentarios. Sirven para realizar anotaciones útiles al autor del documento. Un ejemplo sería: <! Esto es un comentario > Elementos. Aportan estructura semántica al documento. Se delimitan por etiquetas de apertura y cierre o vienen sin elementos interiores (etiquetas vacías como <br/>). Las etiquetas de apertura y las vacías suelen venir 36

2 Pensando en Python (y IV): XML, Java e IA MIDDLEWARE acompañadas de atributos, que parametrizan el elemento. Referencias a entidades. Sirven para insertar un determinado contenido definido previamente. Por ejemplo: <!ENTITY Empresa Universidad de Deusto ><pie>creado por &Empresa; </pie> Secciones CDATA. Contienen texto que no queremos sea procesado por el parser de XML. Por ejemplo: <![CDATA[<saludo>Hola, mundo! </saludo>]]> Las razones fundamentales del éxito de XML son: Permite etiquetar los datos con su significado (self-describing data). Estructurar la información de acuerdo a las necesidades de la aplicación. Tratar automáticamente la información a través de procesadores libremente disponibles, que se ajustan a APIs estándar. XML es la base de una nueva generación de aplicaciones web, siendo un estándar para el intercambio de datos. Entre otras cosas XML se utiliza como formato de datos en sitios web para separar contenido y presentación, como medio de comunicación para el intercambio de datos entre organizaciones o para la transmisión de mensajes en servicios web (SOAP). Procesamiento XML La popularidad de XML estriba en no tener que crear un nuevo compilador por cada lenguaje de representación de datos que queremos diseñar. Las herramientas que llevan a cabo la validación léxica y sintáctica de los documentos y su transformación en una representación manejable por programas vienen ya dados. A cambio, los diseñadores de nuevos tipos de documentos XML sólo deben seguir las restricciones que un documento XML bien formado debe cumplir: Debe tener un prólogo. Debe tener una etiqueta (elemento) raíz. Las etiquetas se hallan correctamente anidadas. Se usan caracteres válidos y bien aplicados. Los valores de los atributos vienen encerrados entre comillas. La industria utiliza tres estándares principales para el procesamiento de documentos XML: SAX, DOM y XSL. A continuación, pasamos a describirlos en más detalle. Procesamiento de XML con SAX SAX es el estándar de facto para el procesamiento de XML basado en eventos. Fue definido por David Megginson, siendo su especificación disponible en No es un analizador XML, si no que define una interfaz común implementada por los analizadores XML SAX. Un analizador SAX genera un evento por cada componente significativo del documento detectado. Por ejemplo el comienzo o final del documento, o el comienzo y final del elemento. Un programador que usa SAX debe implementar manejadores de los eventos notificados. SAX opera sobre un documento leyendo secuencialmente de principio a fin, sin cargar todo el documento en memoria. Presenta como principal ventaja una gran eficiencia en cuanto al tiempo y la memoria empleados en el análisis. La principal desventaja de SAX es que tenemos que mantener estado intermedio, a diferencia de otros estándares como DOM. Procesamiento de XML con DOM Un documento XML es para DOM un árbol de nodos, donde cada nodo representa a un elemento XML. Los elementos hijos y el texto contenido dentro de un elemento son subnodos. La especificación DOM es un estándar W3C disponible en La principal ventaja de DOM es que permite acceder a datos en función de la jerarquía de elementos, así como modificar el contenido de los documentos e incluso crearlos desde cero. La principal desventaja es el coste en tiempo y memoria que conlleva construir el árbol. A diferencia de SAX que efectúa una pasada del documento de izquierda a derecha y de arriba abajo, carga todo el documento XML en memoria. Para documentos largos la demanda de memoria puede ser ingente. Como consecuencia de ello, DOM no es adecuado para efectuar procesamiento de XML en dispositivos empotrados con poca capacidad de cómputo y memoria. Procesamiento de XML con XSL Dada la diversidad de lenguajes de presentación (WML, HTML, chtml), existen dos alternativas para desarrollar aplicaciones basadas en páginas: Desarrollar versiones de los procesos de generación de presentación (JSP, ASP, CGI,..) para cada lenguaje de marcado final. Desarrollar sólo una versión que genere XML y conversores de XML a los lenguajes de presentación. El lenguaje de programación XSL fue diseñado para responder al segundo enfoque, y el lector debería ser conocedor de ello, pues XSL-FO es objeto de nuestro estudio desde hace unos meses. XSL consta de dos partes: XML Stylesheet Transformation Language (XSLT) XSL Formatting Language (XSL-FO) XSLT es el componente de XSL que transforma un documento XML en otro documento XML. XSL-FO formatea y estiliza documentos en varios modos. La especificación de XSLT se encuentra disponible en Las principales ventajas de XSLT son: No asume un único formato de salida de documentos. Permite manipular de muy diversas maneras un documento XML: reordenar elementos, filtrar, añadir, borrar, etc. Las desventajas de XSLT son: Su utilización es más compleja que un lenguaje de programación convencional. Consume bastante memoria y capacidad de proceso, usa DOM por debajo. Programación XML en Python Para ilustrar el poder de Python en la programación de aplicaciones XML vamos a considerar el fragmento de código XML del listado 1. Este listado corresponde a la cartelera de todos los cines en una ciudad. Por cada cine listado, incluimos las películas que se muestran en él y los horarios de sus sesiones. Procesamiento SAX en Python El soporte para SAX en Python es ofrecido por el módulo xml.sax de la librería estándar de Python (http://docs.python.org/lib/modulexml.sax.html). Este módulo define una función principal, make_parser(), a través de la cual crea y devuelve un objeto de tipo XMLReader, que corresponde con un procesador SAX. La definición de esta clase se encuentra en el módulo xml.sax.xmlreader. El módulo xml.sax.handler define manejadores de eventos para SAX. Para asignar un manejador de eventos a un procesador SAX se invoca el método setcontenthandler(handler), donde handler es una referencia a un objeto que implementa la interfaz xml.sax.hander. ContentHandler. Esta interfaz define métodos tales como startdocument o endelement que son invocados cuándo se genera un even- 37

3 LISTADO 1 to al entrar en una parte significativa del documento. El listado 2 muestra un ejemplo de código Python que procesa el fichero Cartelera.xml para contar el número de elementos y atributos XML encontrados en él. Tanto el documento XML (Cartelera.xml) como el script Python (ElementCounterSAX.py) están disponibles en el CD-ROM que acompaña a la revista. La figura 1 muestra el resultado de la ejecución de este script. Procesamiento DOM en Python Documento Cartelera.xml <?xml version= 1.0 encoding= iso ?> <Cartelera> <Cine codigo= 1 nombre= Guridi Zinemak direccion= San Prudencio poblacion= Vitoria-Gasteiz > <Pelicula codigo= 1 titulo= Malena director= Santiago Segura actores= Bo Derek, Al Pacino, Robert Reford > <Sesion>16:00</Sesion> <Sesion>19:30</Sesion> <Sesion>22:00</Sesion> </Pelicula> <Pelicula codigo= 2 titulo= Los Otros director= Alejandro Amenabar actores= Nicole Kidman > <Sesion>16:30</Sesion> <Sesion>19:45</Sesion> <Sesion>22:30</Sesion> </Pelicula> </Cine> </Cartelera> Figura 1. Ejecución del programa ElementCounterSAX.py aplicado a Cartelera.xml. Python provee en el módulo xml.dom.minidom una implementación sencilla de DOM. La función parse de este modulo genera a partir de un fichero un objeto DOM. Este objeto tiene todos los métodos y atributos característicos del estándar DOM. Por ejemplo: haschildnodes(), childnodes o getelementsbytagname(). Para más información sobre procesamiento DOM XML en Python se recomienda visitar la página La distribución PyXML, no incluida por defecto en la distribución estándar de Python, implementa un procesador de DOM más completo. El listado 3 usa el estándar DOM para procesar el fichero Cartelera.xml y obtener la información correspondiente a las películas encontradas en el mismo. El método DOM principal que se utiliza es getelementsbytag Name(<nombre-elemento>), que dado el nombre de un elemento recupera todas las instancias del mismo encontradas en un árbol DOM. El atributo de un elemento DOM attributes se usa para recuperar los atributos de cada elemento película. Las sentencias en la forma: LISTADO 2 # Uso: python ElementCounterSAX.py Cartelera.xml import sys from xml.sax import make_parser, handler class ElementCounter(handler.ContentHandler): def init (self): self._elems = 0 self._attrs = 0 self._elem_types = {} self._attr_types = {} peliattribs.getnameditem( codigo ). nodevalue Permiten recuperar el contenido del atributo cuyo nombre se pasa al método getnameditem. La figura 2 muestra el resultado de tal procesamiento. Puede verse este ejemplo en el fichero ejemplodom.py incluido en el CD-ROM. Procesamiento XSLT en Python XSLT es un lenguaje de transformación de documentos XML muy potente y complejo que requeriría para comprenderlo una serie de artículos por si mismo. Hay varias implementaciones XSLT en Python. Para una discusión sobre las alternativas disponibles remitimos al lector a Nosotros nos hemos decantado por los bindings Python de las librerías XML de Gnome libxml2 y libxlt. Versiones Windows de las mismas pueden encontrarse en users.skynet.be/sbi/libxml-python/. Los rpms de estas librerías para su instalación en UNIX pueden encontrarse en linux/rpm2html/search.php?query=libxml2- python y search.php?query=libxslt-python, respectivamente. El Listado 4 muestra cómo transformar un documento XML en un documento HTML por medio de XSLT (documento xsltexample.py disponible en el CD-ROM). Al aplicar a Cartelera.xml la hoja de XSLT, Cartelera.xsl, incluida también en el CD-ROM, se obtiene la Procesamiento del fichero Cartelera.xml usando SAX def startelement(self, name, attrs): self._elems = self._elems + 1 self._attrs = self._attrs + len(attrs) self._elem_types[name] = self._elem_types.get(name, 0) + 1 for name in attrs.keys(): self._attr_types[name] = self._attr_types.get(name, 0) + 1 def enddocument(self): print There were, self._elems, elements. print There were, self._attrs, attributes. print -ELEMENT TYPES for pair in self._elem_types.items(): print %20s %d % pair print -ATTRIBUTE TYPES for pair in self._attr_types.items(): print %20s %d % pair parser = make_parser() parser.setcontenthandler(elementcounter()) parser.parse(sys.argv[1]) 38

4 Pensando en Python (y IV): XML, Java e IA MIDDLEWARE LISTADO 3 LISTADO 4 página web de la figura 3. El listado 5 contiene sólo un pequeño fragmento de la hoja de estilo Cartelera.xsl. Una hoja XSLT es un documento XML bien formado que tiene como elemento raíz el elemento xsl:stylesheet. Este elemento contiene un conjunto de xsl:templates, o plantillas de transformación que asocian un fragmento del documento XML de entrada con otro del documento XML de salida. En la especificación de XSLT puede encontrarse una minuciosa descripción de este lenguaje. Procesamiento del fichero Cartelera.xml usando DOM #!/usr/bin/env python # -*- coding: iso *- import xml.dom.minidom, sys class Pelicula: def init (self, codigo, titulo, director, actores): self.codigo = codigo self.titulo = titulo self.director = director self.actores = actores def repr (self): return Codigo: + str(self.codigo) + - titulo: + self.titulo + - director: + self.director + - actores: + self.actores class PeliculaDOMParser: def init (self, filename): self.dom = xml.dom.minidom.parse(filename) self.peliculas = [] def getpeliculas(self): # Si no hemos ya recuperado las películas en el documento if not self.peliculas: peliculanodes = self.dom.getelementsbytagname( Pelicula ) numpelis = len(peliculanodes) for i in range(numpelis): pelicula = peliculanodes.item(i) # Recuperar los attributes de cada nodo Pelicula peliattribs = pelicula.attributes codigo = peliattribs.getnameditem( codigo ).nodevalue titulo = peliattribs.getnameditem( titulo ).nodevalue director = peliattribs.getnameditem( director ).nodevalue actores = peliattribs.getnameditem( actores ).nodevalue # crear un nuevo objeto de tipo película self.peliculas.append(pelicula(codigo,titulo,director,actores)) return self.peliculas if name == main : domparser = PeliculaDOMParser(sys.argv[1]) for peli in domparser.getpeliculas(): print peli Procesamiento del fichero Cartelera. XSLT # Ejecuta: python xsltexample.py Cartelera.xml Cartelera.xsl Cartelera.html import libxslt import sys if len(sys.argv)!= 4: print Usage: python xsltexample <xml-file> <xslt-file> <output-file> sys.exit(0) else: styledoc = libxml2.parsefile(sys.argv[2]) style = libxslt.parsestylesheetdoc(styledoc) doc = libxml2.parsefile(sys.argv[1]) result = style.applystylesheet(doc, None) style.saveresulttofilename(sys.argv[3], result, 0) style.freestylesheet() doc.freedoc() result.freedoc() Programación en Jython Jython (http://www.jython.org) es una implementación Open Source en Java de Python que se integra de manera transparente con la plataforma Java. Jython complementa a Java y es especialmente indicada para las siguientes tareas: Empotrar scripts en aplicaciones Java, de modo que los usuarios finales puedan escribir scripts que añadan funcionalidad a la aplicación. Experimentación interactiva por medio del intérprete interactivo suministrado por Jython que permite interactuar con los paquetes Java o aplicaciones en ejecución. Desarrollo rápido de aplicaciones. Los programas en Python son típicamente entre 2 y 10 veces más cortos que los programas Java. Esto se traduce en una mayor productividad en la programación. La integración transparente de Jython y Java permite combinar estos dos lenguajes en productos. Existen otros lenguajes de scripting que se integran transparentemente con Java como Jacl, implementación en Java de Tcl, Rhino, implementación en Java de JavasScript o BeanShell. Sin embargo Jython se distingue de otras alternativas por: Compilación dinámica de Jython en bytecodes de Java (conduce al mayor rendimiento posible). Habilidad para extender las clases Java en Jython. Compilación estática opcional, que permite la creación de applets, servlets y beans. Lo hace a través de la herramienta jythonc que transforma ficheros.py en.class. Uso del lenguaje Python que combina poder con simplicidad sintáctica, soportando el modelo orientado a objetos de Java. Las herramientas de compilación/ejecución de Jython son disponibles en jython.org/download.html. Para instalarlo simplemente hay que ejecutar el comando java jython- 21, que lanzará el instalador de Jython. Como prerrequisito, la máquina donde se instale debe tener preinstalada una máquina virtual de Java. Si no se dispone de ella, puede ser obtenida desde Jython básico La figura 4 muestra una sesión interactiva de Jython. Para ejecutar el intérprete de Jython Figura 2. Ejecución del programa EjemploDOM.py aplicado a Cartelera.xml. 39

5 simplemente hay que escribir en la línea de comando jython. El ejemplo muestra cómo el usuario puede crear una instancia de la clase Java java.util.random para obtener una serie de números aleatorios. Este ejemplo ha sido prestado de html. Como observamos en la figura, para crear una instancia de una clase Java se usa la convención de Python, es decir una función con el nombre de la clase no precedida del operador new. En la invocación de métodos de clases Java desde Jython hay que tener en cuenta la conversión de los tipos de datos de Python a Java, y cuando se reciben resultados lo opuesto, es decir, la conversión de tipos de datos Java en Python. Dado que Python y Java definen casi los mismos tipos de datos primitivos, apenas hay nunca problemas durante esta tarea de coerción (conversión de tipos de datos). Transformando la aplicación Tres en Raya en una aplicación Jython Qué mejor manera de evaluar el potencial de Jython que retomar nuestra conocida aplicación del Tres en Raya y aplicar los cambios requeridos para poderla ejecutar en Jython. Vamos a dividir esta tarea de transformación en tres fases: 1.- Tres en Raya modo texto en Jython. 2.- Tres en Raya modo gráfico en Jython con acceso a mapa persistente. LISTADO Tres en Raya modo gráfico en Jython con acceso a base de datos MySQL. Tres en Raya modo texto en Jython Nuestra implementación original de Tres en Raya en modo texto, a la que llamamos tresenraya.py, requiere mínimos cambios para ser ejecutable en Jython. Tan solo debemos añadir dos variables globales True y False con los valores 1 y 0, respectivamente. Esto es debido a que Jython no soporta todavía el tipo booleano de Python. Hemos incluido la versión modificada de este script en el CD-ROM bajo el nombre tresenrayajython.py. Las dos únicas líneas que difieren del script original presentado en la primera entrega de este curso son: True = 1 False = 0 La ejecución de este script Jython se presenta en la figura 5. Tres en Raya modo gráfico en Jython El siguiente paso en la transformación del juego Tres en Raya en Jython es crear la interfaz gráfica del mismo usando el paquete Swing de Java. El Fragmento hoja de estilo Cartelera.xsl <?xml version= 1.0 encoding= iso ?> <xsl:stylesheet xmlns:xsl=http://www.w3.org/1999/xsl/transform version= 1.0 > <xsl:output method= html /> <xsl:template match= / > <html> <head> <style type= text/css > table {font-family: arial, sans serif ; margin-left: 15pt;} th,td {font-size: 80%;} th {background-color:#faebd7} </style> </head> <body> <table border= 1 > <xsl:apply-templates/> </table> </body> </html> </xsl:template> <xsl:template match= Cartelera > <xsl:for-each select= Cine > <tr> <th><xsl:text>cine</xsl:text></th> <th><xsl:text>dirección</xsl:text></th> <th><xsl:text>población</xsl:text></th> <th></th> </tr> </xsl:stylesheet> Figura 3. Página web resultante de aplicar Cartelera.xsl a Cartelera.xml. listado 6 muestra el constructor de la clase JuegoTresEnRayaJythonGUI, incluida en el CD- ROM bajo el nombre tresenrayajythongui.py, junto con la implementación del método onclick. La lógica principal de esta aplicación está gobernada por el método jugar no incluido por falta de espacio pero disponible también en el CD-ROM. La clase JuegoTresEnRayaJythonGUI hereda de tresenrayajython.juegotresenraya, que es la clase base del juego. En el constructor de esta clase: (1) se obtiene una instancia a la implementación de la clase del registro de jugadores que guarda datos en un mapa persistente, (2) se invoca al constructor de la clase base y (3) luego simplemente se crea un Frame donde se colocan los botones correspondientes a las casillas del tablero de tres en raya. Obsérvese lo sencillo que es en Jython asignar un manejador de eventos a un botón: button = swing.jbutton(self.icono Vacio, actionperformed=self.onclick) Si hubiéramos efectuado una traducción literal del código Java a Jython hubiéramos necesitado el siguiente código: class action(awt.event.actionlistener): def onclick(self,event): # la implementación del manejador button = swing.jbutton(self.iconovacio) button.addactionlistener(action()) Tres en Raya modo gráfico con acceso a BD en Jython El tercer y último ejercicio de transformación que hemos realizado ha sido convertir la clase RegistroJugadoresDB que vimos en la tercera entrega a Jython. En esta ocasión no usamos la 40

6 Python 121.qxd 17/12/04 01:06 Página 41 MIDDLEWARE Pensado en Python (y IV): XML, Java e IA Figura 4. Sesión interactiva de Jython. DB API de Python, si no que JDBC para acceder a la base de datos que creamos en la tercera entrega. El script SQL de creación de la base de datos tresenraya ha sido incluido en el CD-ROM junto con las instrucciones de cómo ejecutar este script en MySQL. El listado 7 muestra un fragmento de la clase transformada a la que hemos denominado RegistroJugadores DBJython. Como las otras variedades de registros de jugadores que hemos implementado deriva de la clase base RegistroJugadores. Si se desconoce la manera de interactuar con JDBC se recomienda al lector que repase los contenidos de los números 105, 106 y 107 de Sólo Programadores y/o que visite la página En pocas palabras, en el constructor de esta clase se carga el driver JDBC para MySQL (disponible en connector/j/) en memoria, se obtiene una conexión a la base de datos tresenraya y luego se utiliza esa conexión para ejecutar comandos LISTADO 6 (Statements) SQL. Las figuras 6 y 7 corresponden a pantallazos de la versión Jython del juego Tres en Raya en modo gráfico. IronPython: Python para.net En Marzo del 2004 en la conferencia PyCon fue pre- Figura 5. Sesión interactiva de tresenrayajython.py. sentado IronPython (http:// ironpython.com/), una implementación Python z Dinámico, soporta el modo de ejecución orientada a las plataformas.net y Mono. Las interactivo como Python. características principales de IronPython son: z Opcionalmente estático, se pueden comz Tan rápida como la versión estándar de pilar ficheros Python para producir ejecupython. tables (.EXE) que pueden ejecutarse direcz Integrada de modo transparente con la tamente o incluso DLLs. Common Language Runtime de.net. Desde z Soporta código gestionado (managed code). IronPython podemos usar las librerías de z No finalizado, todavía en versión alfa no clases.net y extender otras clases.net. puede ser utilizada para producción de software. Clase JuegoTresEnRayaJythonGUI En definitiva, IronPython parece una contribución prometedora que nos permitirá programar aplicaciones.net desde la cómoda y sencilla sintaxis de Python. Manténgase JOptionPane atento a los progresos en este proyecto. import java from java import awt from javax import swing from javax.swing import class JuegoTresEnRayaJythonGUI(tresenrayajython.JuegoTresEnRaya): def init (self): registro = tresenrayajython.registrojugadorespersistente() tresenrayajython.juegotresenraya. init (self, registro, solop, solop ) self.frame = swing.jframe( Juego Tres en Raya, visible=1, windowclosing=self.exit) gridsizer = awt.gridlayout(3,3) self.frame.getcontentpane().setlayout(gridsizer) self.iconomaquina = swing.imageicon( Images\\x.PNG ) self.iconousuario = swing.imageicon( Images\\o.PNG ) self.iconovacio = swing.imageicon( Images\\blank.PNG ) self.buttons = [] for i in range(9): button = swing.jbutton(self.iconovacio, actionperformed=self.onclick) button.setbackground(awt.color.white) self.frame.contentpane.add(button) self.buttons.append(button) self.frame.pack() def onclick(self, event): indexbuttonclicked = self. get_index_button_clicked(event.getsource()) if self.buttons[indexbuttonclicked].geticon() == self.iconovacio: if not self. jugar(indexbuttonclicked): self.resetgame() self. resettablero() El algoritmo MiniMax No quería concluir esta serie sobre Python, en la que el juego Tres en Raya nos ha ayudado a entender tantos conceptos, sin proponer un algoritmo más sofisticado referente a la elección de casillas por la máquina. En definitiva, muchos de vosotros os habréis preguntado cómo hacer que la máquina piense y elija la mejor casilla en cada momento. Este razonamiento es posible a través del algoritmo de inteligencia artificial, MiniMax. Figura 6. Jugando al Tres en Raya con la versión Jython. 41

7 LISTADO 7 Clase RegistroJugadoresDBJython.py from java import lang from java import sql import tresenrayajython, string, sys class RegistroJugadoresDBJython(tresenrayajython.RegistroJugadores): def init (self): tresenrayajython.registrojugadores. init (self) lang.class.forname( org.gjt.mm.mysql.driver ) except Exception, e: print Se ha producido un error en la carga del driver, e url = jdbc:mysql://localhost:3306/tresenraya self.con = sql.drivermanager.getconnection(url, tresenraya, tresenraya ) except Exception, e: print Se ha producido un error en el establecimiento de la conexion con la base de datos, e # Asegurarse que si no existe un usuario solop se añada usuariosolop = self._executesqlcommand( select * from usuario where nombreusuario= solop ) def _executesqlcommand(self, command): # si la consulta devuelve resultados lo hará como una lista de tuplas, # cada tupla es una fila de la tabla, y cada elemento de la tupla una columna resultado = [] command = string.strip(command) if len(command): stmt = self.con.createstatement() if string.lower(command).startswith( select ): # si es una select rs = stmt.executequery(command) metadata = rs.getmetadata() # recupera todas las filas while rs.next(): # recupera todas las columnas contenidofila = [] for i in range(1, metadata.getcolumncount()+1): columntype = metadata.getcolumntype(i) contenidocolumna = None if columntype == sql.types.integer: contenidocolumna = rs.getint(i) elif columntype == sql.types.varchar: contenidocolumna = rs.getstring(i) else: contenidocolumna = rs.getobject(i) contenidofila.append(contenidocolumna) except Exception, e: print e break resultado.append(tuple(contenidofila)) else: stmt.execute(command) except: raise u Excepcion producida en ejecucion de comando + command return resultado Antes de explicar el algoritmo es necesaria una breve introducción a árboles de búsqueda. Un árbol de búsqueda es una notación para representar búsquedas. La figura 8 representa uno de estos árboles. Los cuadrados son conocidos como nodos y representan puntos de decisión en la búsqueda. Los nodos están conectados por ramas. La búsqueda comienza en el nodo raíz, en la parte superior de la figura. En cada punto de decisión, los nodos para cada posible camino de búsqueda son generados, hasta que más decisiones no sean posibles. Los nodos al final de la búsqueda son los nodos raíz. El algoritmo MiniMax considera la existencia de dos jugadores, el MAX y el MIN. Un árbol de búsqueda es generado, depth-first, comenzando con la posición actual del juego hasta la posición final del juego. Luego, la posición final es evaluada desde el punto de vista de MAX. A continuación, los nodos interiores del árbol son rellenados de abajo a arriba con los valores evaluados. Los nodos que corresponden al jugador MAX reciben el Figura 7. Versión Jython de la pantalla de estadísticas. máximo valor de sus hijos. Los nodos del jugador MIN el mínimo de sus hijos. Los valores representan cómo de bueno es el movimiento. El jugador MAX tratará de elegir el movimiento que maximice el valor al final. Sin embargo, el jugador MIN, mientras tanto, seleccionará los movimientos que son mejores para él, minimizando en todo lo posible el resultado de MAX. Para más detalles sobre este algoritmo y otros basados en IA recomendamos permanecer atentos a las novedades que incluirá Sólo Programadores en los próximos meses. En el CD- ROM ofrecemos una implementación de la aplicación de Tres en Raya que hace uso de MiniMax. Conclusiones Aquí acabamos nuestro recorrido por el lenguaje de programación Python. Confío que a lo largo de estas cuatro entregas el lector haya podido descubrir el potencial de este gran lenguaje de scripting que combina a la vez potencia y sencillez. La aplicación de tres en raya que hemos ido desarrollando tan solo ha mostrado cómo implementar en Python la funcionalidad correspondiente a las tareas programáticas más típicas: programación gráfica, de acceso a bases de datos, web y XML. Por falta de tiempo no hemos podido descubrir otras muchas áreas en las que Python también juega un papel destacado. Espero que, tras lo descrito en esta serie, el poder de Python os acompañe en vuestras próximas tareas de programación. Figura 8. Ejemplo de árbol de búsqueda. 42

TEMA 5 LA FAMILIA XML EN LA NUEVA WEB

TEMA 5 LA FAMILIA XML EN LA NUEVA WEB TEMA 5 LA FAMILIA XML EN LA NUEVA WEB La Web, tanto cuantitativa como cualitativamente, se ha desarrollado extraordinariamente siendo el objeto de este texto ubicar el papel que XML juega y va a jugar

Más detalles

6.1 APIs para XML. APIs para XML (I) ! Uno de los usos más habituales de XML (y menos esperado) es como formato de intercambio de datos.

6.1 APIs para XML. APIs para XML (I) ! Uno de los usos más habituales de XML (y menos esperado) es como formato de intercambio de datos. 6.1 APIs para XML APIs para XML (I)! Uno de los usos más habituales de XML (y menos esperado) es como formato de intercambio de datos.! En este caso los documentos XML nunca llegan a visualizarse, sino

Más detalles

Agenda XML XML XML XML XML. 1.1 Conceptos básicos de XML. 1.2 Ejemplos de lenguajes basados en XML. 1.3 Estructura de un documento XML

Agenda XML XML XML XML XML. 1.1 Conceptos básicos de XML. 1.2 Ejemplos de lenguajes basados en XML. 1.3 Estructura de un documento XML Agenda 1.1 Conceptos básicos de 1.2 Ejemplos de lenguajes basados en M.C. Juan Carlos Olivares Rojas 1.3 Estructura de un documento 1.4 Tecnologías extensible Markup Language (Lenguaje de Marcado extensible)

Más detalles

Análisis y Diseño de Sistemas de

Análisis y Diseño de Sistemas de Análisis y Diseño de Sistemas de Información para Internet 1. Introducción a XML Luís Rodríguez Baena (luis.rodriguez@upsam.net) Universidad Pontificia de Salamanca (campus Madrid) Facultad de Informática

Más detalles

Capí tulo IV. Lenguajes de estilo

Capí tulo IV. Lenguajes de estilo Capí tulo IV Lenguajes de estilo Lenguajes de Estilo Hojas de estilos Mecanismos de Hojas de estilos previos a XSL Lenguaje de estilo XSL Comparación entre CSS y XSL Transformación XML/XSL en aplicativos

Más detalles

Capítulo 5. Implementación y Tecnologías Utilizadas

Capítulo 5. Implementación y Tecnologías Utilizadas Capítulo 5. Implementación y Tecnologías Utilizadas Cada vez más, se está utilizando Flash para desarrollar aplicaciones basadas en Web, pues permite la construcción de ambientes con mayor interacción.

Más detalles

Bienvenidos a la presentación: Introducción a conceptos básicos de programación.

Bienvenidos a la presentación: Introducción a conceptos básicos de programación. Bienvenidos a la presentación: Introducción a conceptos básicos de programación. 1 Los programas de computadora son una serie de instrucciones que le dicen a una computadora qué hacer exactamente. Los

Más detalles

TEMA 35: Estándares SGML y XML. Entornos de aplicación.

TEMA 35: Estándares SGML y XML. Entornos de aplicación. Entornos de aplicación TEMA 35: Estándares SGML y. Entornos de aplicación. Índice 1 INTRODUCCIÓN 1 2 SGML 2 2.1 Cómo funciona SGML? 2 2.2 Definición de la sintaxis de un lenguaje SGML 3 2.3 Declaración

Más detalles

extensible Markup Language

extensible Markup Language extensible Markup Language ISLN ISLN () XML 1 / 26 Librería LWP::Simple Bajarse el archivo de internet Para bajar archivos de internet se puede usar alguno de los módulos del CPAN http://search.cpan.org

Más detalles

Índice. HTML HyperText Markup Language. Conceptos básicos. Qué es HTML? Diseño de servicios Web HTML 1

Índice. HTML HyperText Markup Language. Conceptos básicos. Qué es HTML? Diseño de servicios Web HTML 1 Índice HTML HyperText Markup Language Conceptos básicos Historia y evolución de HTML XHTML vs. HTML HTML dinámico Hojas de estilo (CSS) DOM Diseño de servicios Web 2 DATSI Qué es HTML? Lenguaje de publicación

Más detalles

Tabla de Contenidos. xii

Tabla de Contenidos. xii Tabla de contenidos Capítulo 1. Introducción...1 1.1 MOTIVACIÓN...2 1.2 NOVEDADES APORTADAS POR ESTE LIBRO...3 1.3 ESTRUCTURA DE LA OBRA...4 1.4 CONOCIMIENTOS RECOMENDADOS...8 1.5 CONVENCIONES DE ESTILO

Más detalles

Arquitectura de Aplicaciones

Arquitectura de Aplicaciones 1 Capítulo 13: Arquitectura de aplicaciones. - Sommerville Contenidos del capítulo 13.1 Sistemas de procesamiento de datos 13.2 Sistemas de procesamiento de transacciones 13.3 Sistemas de procesamiento

Más detalles

1 Introducción a XML

1 Introducción a XML 1 Introducción a XML Introducción (I)! Qué es XML?! Últimamente todo el mundo habla sobre XML!! Dicen que es un lenguaje etiquetado...es decir: Es un lenguaje como HTML, pero con nuevas etiquetas?! Dicen

Más detalles

Práctica de introducción a

Práctica de introducción a Práctica de introducción a XML El trabajo consiste en una introducción al uso del lenguaje XML y su aplicación en documentos y sistemas de caracteristicas multimedia. 1.- Qué es XML? XML (extensible Markup

Más detalles

M. Carmen Fernández Panadero

M. Carmen Fernández Panadero <mcfp@it.uc3m.es> Introducción n a XML M. Carmen Fernández Panadero Introducción a XML 1 Objetivos Familiarizarse con conceptos y herramientas básicas de XML Conocer la estructura de un documento XML Ser capaz de diseñar

Más detalles

Capítulo 1 Documentos HTML5

Capítulo 1 Documentos HTML5 Capítulo 1 Documentos HTML5 1.1 Componentes básicos HTML5 provee básicamente tres características: estructura, estilo y funcionalidad. Nunca fue declarado oficialmente pero, incluso cuando algunas APIs

Más detalles

Transformación documentos XML. Jose Emilio Labra Gayo Departamento de Informática Universidad de Oviedo

Transformación documentos XML. Jose Emilio Labra Gayo Departamento de Informática Universidad de Oviedo Transformación documentos XML Jose Emilio Labra Gayo Departamento de Informática Universidad de Oviedo Hojas de estilos para XML Antecedentes SGML tenía DSSSL (Document Style Semantics and Specification

Más detalles

XMLSpy. Manual de usuario. www.ejie.es

XMLSpy. Manual de usuario. www.ejie.es XMLSpy Manual de usuario Fecha: 31/08/2007 Referencia: EJIE S.A. Mediterráneo, 3 Tel. 945 01 73 00* Fax. 945 01 73 01 01010 Vitoria-Gasteiz Posta-kutxatila / Apartado: 809 01080 Vitoria-Gasteiz www.ejie.es

Más detalles

Scripting en el cliente: Javascript. Tecnologías Web

Scripting en el cliente: Javascript. Tecnologías Web Scripting en el cliente: Javascript Tecnologías Web Motivación Por qué usar JavaScript? Permite crear efectos atractivos visualmente Permite crear sitios WEB que se visualicen de la misma manera en distintos

Más detalles

INDICE 1. Estructura, Sintaxis y Usos de XML 1. Fundamentos de XML 2. DTD: Características y Técnicas

INDICE 1. Estructura, Sintaxis y Usos de XML 1. Fundamentos de XML 2. DTD: Características y Técnicas INDICE Introducción XV 1. Estructura, Sintaxis y Usos de XML 1 1. Fundamentos de XML 3 Introducción 4 Desmitificación de la marcación 4 Qué es la marcación? 4 Definición de XML 10 Una definición estricta

Más detalles

XML práctico Bases esenciales, conceptos y casos prácticos (2ª edición)

XML práctico Bases esenciales, conceptos y casos prácticos (2ª edición) Introducción al lenguaje XML 1. De SGML a XML 17 2. Los conceptos básicos del XML 18 2.1 Recordatorio sobre el HTML 18 2.2 Creación de un primer documento XML 19 2.3 Las ventajas del XML 21 3. La sintaxis

Más detalles

Gestor de aplicaciones Java. Esta herramienta es el intérprete de los archivos de clase generados por el javac (compilador).

Gestor de aplicaciones Java. Esta herramienta es el intérprete de los archivos de clase generados por el javac (compilador). CAPÍTULO 4 Requerimientos de software Este capítulo presenta las herramientas necesarias para la construcción y ejecución de programas en el lenguaje de programación JAVA, los requerimientos mínimos de

Más detalles

Tema 3. 3.3 Tecnologías de Desarrollo

Tema 3. 3.3 Tecnologías de Desarrollo Tema 3 3.3 Tecnologías de Desarrollo HTML pronto pasa a ser insuficiente para todas las posibilidades de la Red No se puede interactuar con el servidor Aparecen los primeros scripts para propocionar dichar

Más detalles

DESARROLLO WEB EN ENTORNO SERVIDOR

DESARROLLO WEB EN ENTORNO SERVIDOR DESARROLLO WEB EN ENTORNO SERVIDOR CAPÍTULO 7: Programación de servicios Web Marcos López Sanz Juan Manuel Vara Mesa Jenifer Verde Marín Diana Marcela Sánchez Fúquene Jesús Javier Jiménez Hernández Valeria

Más detalles

Topicos Avanzados de Bases de Datos en la Web

Topicos Avanzados de Bases de Datos en la Web Topicos Avanzados de Bases de Datos en la Web Introducción a XML Profesor: Alejandro Vaisman 1er. Cuatrimestre, 2007 4/16/2007 1 XML XML es el lenguaje estándar para intercambiar información en la Web.

Más detalles

Guía práctica PHP 6. (c) Francisco Charte Ojeda

Guía práctica PHP 6. (c) Francisco Charte Ojeda Guía práctica PHP 6 Agradecimientos Sobre el autor (c) Francisco Charte Ojeda Introducción Páginas de servidor PHP Creación de páginas PHP Cómo usar este libro Convenciones tipográficas 1. Instalación

Más detalles

Roberto Gómez Cárdenas rogomez@itesm.mx http://homepage.cem.itesm.mx/rogomez. Qué es DOM?

Roberto Gómez Cárdenas rogomez@itesm.mx http://homepage.cem.itesm.mx/rogomez. Qué es DOM? DOM y PHP Roberto Gómez Cárdenas rogomez@itesm.mx http://homepage.cem.itesm.mx/rogomez mx/rogomez Lámina 1 Qué es DOM? Document Object Model Especificación de W3C http://www.w3.org/dom/ w3 Mecanismo para

Más detalles

Diplomado Programming Java (JSE & JEE) with Oracle 10g

Diplomado Programming Java (JSE & JEE) with Oracle 10g Diplomado Programming Java (JSE & JEE) with Oracle 10g Descripción: Nuestro diplomado ofrece un entrenamiento INTEGRAL y el más completo si estás interesado en realmente aprender Java y aplicarlo en tecnologías

Más detalles

INDICE Programación Introducción Capitulo 21 BASIC Capitulo 22. COBOL Capitulo 23 DELPHI Capitulo 24. FORTRAN Capitulo 25.

INDICE Programación Introducción Capitulo 21 BASIC Capitulo 22. COBOL Capitulo 23 DELPHI Capitulo 24. FORTRAN Capitulo 25. INDICE Programación Introducción 706 Capitulo 21 BASIC 711 Introducción 711 Sintaxis 713 Procedimientos y control de flujo 713 Tipos de datos 714 Disponibilidad y variantes del dialecto 714 Capitulo 22.

Más detalles

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle:

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle: PL/SQL (Procedural Language/Structured Query Language) PL/SQL es el lenguaje de programación que proporciona Oracle para extender el SQL estándar con otro tipo de instrucciones y elementos propios de los

Más detalles

Transformación de documentos : XSLT

Transformación de documentos : XSLT Transformación de documentos : XSLT XSL : Lenguaje Extensible de Hojas de Estilo, cuyo objetivo principal es mostrar cómo debería estar estructurado el contenido, cómo debería ser diseñado el contenido

Más detalles

Ejercicios - Persistencia en Android: ficheros y SQLite

Ejercicios - Persistencia en Android: ficheros y SQLite Ejercicios - Persistencia en Android: ficheros y SQLite Índice 1 Uso de ficheros (0.5 puntos)...2 2 Persistencia con ficheros (0.5 puntos)...3 3 Base de datos: SQLiteOpenHelper (0.5 puntos)... 3 4 Base

Más detalles

Capítulo III. Análisis y diseño.

Capítulo III. Análisis y diseño. Capítulo III. Análisis y diseño. 3.1 Análisis. El análisis es el intermediario entre los requisitos del sistema y el diseño, esta sección definiremos el análisis con una serie de modelos técnicos del sistema,

Más detalles

Sistema de aprendizaje por refuerzo para la mejora del rendimiento del alumno en prácticas

Sistema de aprendizaje por refuerzo para la mejora del rendimiento del alumno en prácticas Memoria resumen del Proyecto de Innovación Docente (PID) Ref.: 52B (periodo 2009-2011) Sistema de aprendizaje por refuerzo para la mejora del rendimiento del alumno en prácticas Investigador Principal:

Más detalles

Transformación de documentos XML con

Transformación de documentos XML con Transformación de documentos XML con X S L T Necesidad de las transformaciones XML se presenta como un estándar para transmitir datos a través de Internet. Ante la posibilidad de que distintos centros

Más detalles

XML: extensible Markup Language (Parte I) Ingeniería de la Información

XML: extensible Markup Language (Parte I) Ingeniería de la Información XML: extensible Markup Language (Parte I) DTDs Ingeniería de la Información Tabla de Contenidos Introducción histórica XML vs. HTML Características de XML Mi primer documento XML El lenguaje XML Entidades

Más detalles

Ejemplos básicos de webmathematica para profesores

Ejemplos básicos de webmathematica para profesores Ejemplos básicos de webmathematica para profesores Cualquier cálculo hecho dentro Mathematica puede ser realizado usando webmathematica con dos limitaciones significativas. Primero, al usar webmathematica,

Más detalles

Diplomado Java. Descripción. Objetivo. A quien está dirigido. Requisitos. Beneficios

Diplomado Java. Descripción. Objetivo. A quien está dirigido. Requisitos. Beneficios Diplomado Java Descripción El lenguaje de programación Java es uno de los más utilizados hoy en día. Su potencia, simplicidad, funcionalidad y capacidad hacen que este lenguaje sea una de las herramientas

Más detalles

WEBBER: USO DE COMPONENTES PARA LA ARMONIZACIÓN DE CONTENIDOS Y METADATOS

WEBBER: USO DE COMPONENTES PARA LA ARMONIZACIÓN DE CONTENIDOS Y METADATOS WEBBER: USO DE COMPONENTES PARA LA ARMONIZACIÓN DE CONTENIDOS Y METADATOS Autores: Introducción Diego R. López RedIRIS diego.lopez@rediris.es El trabajo necesario para mantener un servidor de información

Más detalles

Elaboración de un Formulario Web utilizando ASP.NET desde cero.

Elaboración de un Formulario Web utilizando ASP.NET desde cero. Elaboración de un Formulario Web utilizando ASP.NET desde cero. Realizado por: Fabricio.A.Santillana.V. 2-718-1147 TABLA DE CONTENIDO Pág. Introducción...3 Objetivos...4 Contenido...5 1. Introducción a

Más detalles

CAPÍTULO 14. DESARROLLO

CAPÍTULO 14. DESARROLLO CAPÍTULO 14. DESARROLLO DE SISTEMAS ESPECÍFICOS 1. Introducción En los últimos años han aparecido multitud de nuevas plataformas para desarrollar aplicaciones y ponerlas en explotación. En este capítulos

Más detalles

Notas técnicas de JAVA Nro. 7 Tip Breve

Notas técnicas de JAVA Nro. 7 Tip Breve Notas técnicas de JAVA Nro. 7 Tip Breve (Lo nuevo, lo escondido, o simplemente lo de siempre pero bien explicado) Tema: JAVA Basics: Diferencias conceptuales entre JavaBeans y Enterprise JavaBeans (EJB)

Más detalles

extensible Markup Language (XML)

extensible Markup Language (XML) extensible Markup Language (XML) 1. INTRODUCCIÓN Jennifer Pérez Benedí Departamento de Sistemas Informáticos y Computación Universidad Politécnica de Valencia C/Camino de Vera s/n E-46071 Valencia- España

Más detalles

XML. Escuela Técnica Superior de Ingeniería de Telecomunicación Universidad Rey Juan Carlos. Marzo de 2016. gsyc-profes (arroba) gsyc.urjc.

XML. Escuela Técnica Superior de Ingeniería de Telecomunicación Universidad Rey Juan Carlos. Marzo de 2016. gsyc-profes (arroba) gsyc.urjc. XML Escuela Técnica Superior de Ingeniería de Telecomunicación Universidad Rey Juan Carlos gsyc-profes (arroba) gsyc.urjc.es Marzo de 2016 GSyC - 2016 XML 1 c 2016 GSyC Algunos derechos reservados. Este

Más detalles

[CONVERSIÓN Y ADAPTACIÓN DE DOCUMENTOS XML]

[CONVERSIÓN Y ADAPTACIÓN DE DOCUMENTOS XML] TEMA 5 Contenido Técnicas de transformación de documentos XML.... 2 XPath.... 3 Términos básicos.... 3 Expresiones.... 4 Cuáles son los resultados que da la evaluación de una expresión Xpath?... 4 Cuáles

Más detalles

Tema 4 Metadatos. Eduardo Martínez Graciá Humberto Martínez Barberá

Tema 4 Metadatos. Eduardo Martínez Graciá Humberto Martínez Barberá Tema 4 Metadatos Eduardo Martínez Graciá Humberto Martínez Barberá Departamento de Ingeniería de la Información y las Comunicaciones Universidad de Murcia Metadatos Definición: datos sobre datos Fichero:

Más detalles

Centro de Capacitación en Tecnologías de la Información. Desarrollo de. diplomado

Centro de Capacitación en Tecnologías de la Información. Desarrollo de. diplomado Centro de Capacitación en Tecnologías de la Información Desarrollo de Objetivo Dotar al alumno de la metodología y los fundamentos de la programación en Java usando la plataforma J2SE (Java 2 Standard

Más detalles

Introducción a XML. Taller de Producción de Software 2º Semestre 2008 H.Astudillo / P.Inostroza

Introducción a XML. Taller de Producción de Software 2º Semestre 2008 H.Astudillo / P.Inostroza Taller de Producción de Software 2005 Introducción a XML Taller de Producción de Software 2º Semestre 2008 H.Astudillo / P.Inostroza Indice Qué es XML? Breve Historia de XML Anatomía de un Documento XML

Más detalles

Procesamiento de documentos XML

Procesamiento de documentos XML Procesamiento de documentos XML Documentación Electrónica Soto Montalvo Contenido Introducción Document Object Model Simple API for XML DOM vs. SAX Cómo podemos manipular los documentos XML? SAX (Simple

Más detalles

Qué es una aplicación web

Qué es una aplicación web Departamento de Lenguajes y Sistemas Informáticos Qué es una aplicación web Programación en Internet Curso 2006-2007 Índice Introducción Cliente Servidor Transferencia páginas web Entornos web Ventajas

Más detalles

Hojas de Estilos XSLT en el aula. Nieves Carralero Colmenar I.E.S Ramón y Cajal. Albacete ncarralero@jccm.es

Hojas de Estilos XSLT en el aula. Nieves Carralero Colmenar I.E.S Ramón y Cajal. Albacete ncarralero@jccm.es Hojas de Estilos XSLT en el aula Nieves Carralero Colmenar I.E.S Ramón y Cajal. Albacete ncarralero@jccm.es Resumen Según la Orden EDU/2887/2010, de 2 de noviembre, por la que se establece el currículo

Más detalles

Técnico Superior en Programación con Java SE Standard Edition

Técnico Superior en Programación con Java SE Standard Edition Código: M087_04 Técnico Superior en Programación con Java SE Standard Edition Modalidad: Distancia Duración: 120 horas Objetivos: Este pack de materiales formativos proporcionará al alumnado la base que

Más detalles

Facultad de Sistemas e Informática

Facultad de Sistemas e Informática Escuela Politécnica del Ejército Sede Latacunga Facultad de Sistemas e Informática Galarza Maira Tapia Cevallos Paulina DESARROLLO DE APLICACIONES DISTRIBUIDAS UTILIZANDO PATRONES DE DISEÑO MODELO/VISTA

Más detalles

Objetivo de aprendizaje del tema

Objetivo de aprendizaje del tema Computación II Tema 14. Java Server Pages (JSP) Objetivo de aprendizaje del tema Al finalizar el tema serás capaz de: Ejemplificar la manera de desarrollar aplicaciones i Java EE usando páginas JSP. Describir

Más detalles

Curso: Programación con JAVA SE Estándar Edition.

Curso: Programación con JAVA SE Estándar Edition. Curso: Programación con JAVA SE Estándar Edition. Código: 1062 Familia Profesional: Programación. Acreditación: Formación reconocida a través de vías no formales Modalidad: Distancia Duración: 150 horas

Más detalles

ACCIÓN FORMATIVA FINANCIADA POR EL SERVICIO PÚBLICO DE EMPLEO ESTATAL

ACCIÓN FORMATIVA FINANCIADA POR EL SERVICIO PÚBLICO DE EMPLEO ESTATAL MF0491_3: PROGRAMACIÓN WEB EN EL ENTORNO CLIENTE. (IFCD0210: DESARROLLO DE APLICACIONES CON TECNOLOGÍAS WEB) 180 HORAS PRESENCIALES Nº DE EXPEDIENTE: FC/2013/0064 ACCION 141 GRUPO 1 ACCIÓN FORMATIVA FINANCIADA

Más detalles

Temario del Master en Internet

Temario del Master en Internet Temario del Master en Internet HTML / XML / XHTML HTML El Lenguaje HTML Formateo básico Listas, Imágenes y Tablas Enlaces y mapas Formularios y controles Marcos XML Herramientas de Trabajo: Editores y

Más detalles

XML. Introducción. Cómo se usa? XML Tree. Sintaxis XML

XML. Introducción. Cómo se usa? XML Tree. Sintaxis XML XML Introducción XML(eXtensible Markup Language) es un lenguaje de etiquetas. Hay que tener en cuenta que no es un lenguaje de programación y como tal no ejecuta instrucciones, XML se creó para estructurar,

Más detalles

XSL. Introducción. Introducción. Introducción

XSL. Introducción. Introducción. Introducción Introducción XSL 1 XSL (extensible Stylesheet Language)» XSLT (XSL Transformations)» XSL-FO (XSL Formatting Objects) XSLT:» Documento XML que especifica reglas para transformar un documento XML en otro

Más detalles

Productos para desarrollar aplicaciones web: ASP, CFM, JSP y PHP

Productos para desarrollar aplicaciones web: ASP, CFM, JSP y PHP Departamento de Lenguajes y Sistemas Informáticos Productos para desarrollar aplicaciones web: ASP, CFM, JSP y PHP Curso 001-00 ASP, CFM, JSP y PHP (I) Diferente tecnologías con un mismo propósito: proporcionar

Más detalles

La utilización de las diferentes aplicaciones o servicios de Internet se lleva a cabo respondiendo al llamado modelo cliente-servidor.

La utilización de las diferentes aplicaciones o servicios de Internet se lleva a cabo respondiendo al llamado modelo cliente-servidor. Procesamiento del lado del servidor La Programación del lado del servidor es una tecnología que consiste en el procesamiento de una petición de un usuario mediante la interpretación de un script en el

Más detalles

DESARROLLO DE APLICACIONES CON TECNOLOGÍAS WEB

DESARROLLO DE APLICACIONES CON TECNOLOGÍAS WEB DENOMINACIÓN: CON TECNOLOGÍAS WEB Código: IFCD0210 Familia profesional: Informática y Comunicaciones Área profesional: Desarrollo Nivel de cualificación profesional: 3 Cualificación profesional de referencia:

Más detalles

Interacción y manejo de documentos XML.

Interacción y manejo de documentos XML. Interacción y manejo de documentos XML. Como último miembro de la familia XML, nos planteamos la tecnología por la cual una aplicación externa, escrita en no importa que lenguaje de programación, puede

Más detalles

JAVA 8 Los fundamentos del lenguaje Java (con ejercicios prácticos corregidos)

JAVA 8 Los fundamentos del lenguaje Java (con ejercicios prácticos corregidos) Presentación 1. Historia 11 1.1 Por qué Java? 11 1.2 Objetivos del diseño de Java 12 1.3 Auge de Java 13 2. Características de Java 14 2.1 El lenguaje de programación Java 14 2.1.1 Sencillo 15 2.1.2 Orientado

Más detalles

INSTRUCTIVO DE INSTALACION EN WINDOWS Y LINUX DE ALFRESCO COMMUNITY 4.2

INSTRUCTIVO DE INSTALACION EN WINDOWS Y LINUX DE ALFRESCO COMMUNITY 4.2 INSTRUCTIVO DE INSTALACION EN WINDOWS Y LINUX DE ALFRESCO COMMUNITY 4.2 Grupo de Innovación y Apropiación de Tecnologías de la Información Archivística Compilador: Pedro Antonio Gómez Guarín Contenido

Más detalles

DESARROLLO DE APLICACIONES CON TECNOLOGÍAS WEB PROFESIONAL

DESARROLLO DE APLICACIONES CON TECNOLOGÍAS WEB PROFESIONAL Página 1 de 21 CUALIFICACIÓN DESARROLLO DE APLICACIONES CON TECNOLOGÍAS WEB PROFESIONAL Familia Profesional Informática y Comunicaciones Nivel 3 Código IFC154_3 Versión 5 Situación RD 1087/2005 Actualización

Más detalles

U.T.4.EL ENTORNO DE DESARROLLO

U.T.4.EL ENTORNO DE DESARROLLO U.T.4.EL ENTORNO DE DESARROLLO Lenguaje Java Estamos en unos días en los que cada vez más la informática invade más campos de nuestra vida, estando el ciudadano medio cada vez más familiarizado con términos

Más detalles

Tecnologías y Programación en el Internet

Tecnologías y Programación en el Internet Tecnologías y Programación en el Internet Prof. Miguel Vélez Rubio C y C++ / Base de todo C Comenzó su implementación en 1972, surgiendo del lenguaje B Asociado inicialmente a Unix Considerado difícil

Más detalles

JSP(JAVA SERVER PAGES)

JSP(JAVA SERVER PAGES) JSP(JAVA SERVER PAGES) Introducción En la actualidad, la mayoría de los sitios Web quieren mostrar contenido dinámico basado en el usuario y en la sesión. La mayor parte del contenido, tal como imágenes,

Más detalles

XML, DTD y hojas de estilo

XML, DTD y hojas de estilo XML, DTD y hojas de estilo Introducción XML existe porque HTML ha tenido mucho éxito. Pero con objeto de corresponder a este éxito, se le ha extendido introduciéndose muchas etiquetas nuevas (más de 100

Más detalles

Glosario Acoplamiento. API. Archivos de recursos. ASCII. Balanceo de carga. Bases de datos federadas. BBDD. Clientes. Constructores.

Glosario Acoplamiento. API. Archivos de recursos. ASCII. Balanceo de carga. Bases de datos federadas. BBDD. Clientes. Constructores. GLOSARIO Glosario Acoplamiento. Posibilidad que tiene un servicio de funcionar de forma autónoma. Se dice que un servicio o aplicación es bajamente acoplado cuando puede funcionar de forma independiente

Más detalles

Tema 3, parte 4. Javascript: el DOM (Modelo de Objetos del. Documento) Texto. http://www.flickr.com/photos/jm3/3620744443

Tema 3, parte 4. Javascript: el DOM (Modelo de Objetos del. Documento) Texto. http://www.flickr.com/photos/jm3/3620744443 http://www.flickr.com/photos/jm3/3620744443 Tema 3, parte 4 Javascript: el DOM (Modelo de Objetos del Texto Documento) Texto Javascript parte 4 El DOM 1. El árbol DOM Conceptos básicos sobre el API DOM

Más detalles

Arquitectura J2EE para aplicaciones web. Aplicaciones web con JSP. Arquitectura J2EE: Capa de Acceso Web. Arquitectura J2EE: Capa Cliente

Arquitectura J2EE para aplicaciones web. Aplicaciones web con JSP. Arquitectura J2EE: Capa de Acceso Web. Arquitectura J2EE: Capa Cliente Aplicaciones web con JSP Arquitectura J2EE para aplicaciones web Aplicación Applet HTML Cliente Servidor web JSP Servlet Web EJB Java Beans Lógica Negocio Otras BDs, ERPs etc BD Oracle Datos Cliente Servidor(es)

Más detalles

XSL: extensible Style Language. Anabel Fraga

XSL: extensible Style Language. Anabel Fraga XSL: extensible Style Language Anabel Fraga 1 Tabla de Contenidos La Familia XML Presentación en XML XSL XSLT Elementos XSL-FO Referencias 2 3 La Familia XML Presentación en XML La presentación en HTML

Más detalles

INTRODUCCIÓN A JAVA. Índice

INTRODUCCIÓN A JAVA. Índice INTRODUCCIÓN A JAVA Índice Qué es Java? La plataforma Java 2 La Máquina Virtual de Java Características principales Qué ventajas tengo como desarrollador? Bibliografía 2 1 Qué es Java? La tecnología Java

Más detalles

12.1. Definición de un fichero XML

12.1. Definición de un fichero XML XML 12 XML son las siglas de Extensible Markup Language y desde hace unos años se ha convertido en un estándar para el manejo de datos debido a la facilidad con la que los propios usuarios pueden crear

Más detalles

Introducción a la plataforma.net

Introducción a la plataforma.net Introducción a la plataforma.net Autora: Mª del Pilar Pavón Rosano DNI: 52.923.715-W INTRODUCCIÓN Este artículo está dirigido a los profesores y profesoras del módulo Diseño y Realización de Servicios

Más detalles

RUEDA TORRES DULCE CAROLINA 3CM2 HIBERNATE EN UNA APLICACIÓN WEB

RUEDA TORRES DULCE CAROLINA 3CM2 HIBERNATE EN UNA APLICACIÓN WEB 3CM2 HIBERNATE EN UNA APLICACIÓN WEB 8 DE MAYO DE 2012 1. CREACION DE LA BASE DE DATOS Para llevar a cabo esta práctica se utiliza una base de datos MySQL llamada Sakila, una muestra gratis de base de

Más detalles

JAVA EE 5. Arquitectura, conceptos y ejemplos.

JAVA EE 5. Arquitectura, conceptos y ejemplos. JAVA EE 5. Arquitectura, conceptos y ejemplos. INTRODUCCIÓN. MODELO DE LA APLICACIÓN JEE5. El modelo de aplicación Java EE define una arquitectura para implementar servicios como lo hacen las aplicaciones

Más detalles

UNIVERSIDAD DR. JOSE MATIAS DELGADO

UNIVERSIDAD DR. JOSE MATIAS DELGADO NOMBRE DE LA ASIGNATURA: PROGRAMACIÓN DE COMPUTADORAS 4 a. Generalidades. Número de Orden: Prerrequisito (s): 30 Código: PRC 4 PRC 3 Ciclo Académico: Área: VI Especializada U.V.: 4 Duración del Ciclo en

Más detalles

JSP Básico. Índice. 2 Traducción de los JSP a servlets...2. 6 Acciones...8. 1 Introducción a JSP... 2

JSP Básico. Índice. 2 Traducción de los JSP a servlets...2. 6 Acciones...8. 1 Introducción a JSP... 2 Índice 1 Introducción a JSP... 2 2 Traducción de los JSP a servlets...2 3 Elementos de JSP...3 4 Inserción de código en páginas JSP... 4 4.1 Expresiones...4 4.2 Scriptlets...4 4.3 Declaraciones... 4 4.4

Más detalles

INTRODUCCIÓN A PHP. Javier Enciso

INTRODUCCIÓN A PHP. Javier Enciso INTRODUCCIÓN A PHP Javier Enciso AGENDA Qué es PHP? Cómo funciona PHP? Instalación QUÉ ES PHP? QUÉ ES PHP? (1/7) PHP (acrónimo de "PHP: Hypertext Preprocessor"). Lenguaje interpretado de alto nivel embebido

Más detalles

Microsoft XML Core Services MSXML

Microsoft XML Core Services MSXML Microsoft XML Core Services MSXML Sergio Luján Mora sergio.lujan@ua.es http://gplsi.dlsi.ua.es/~slujan/ 1 MSXML... 3 Introducción... 3 Objetos del DOM... 5 Objeto XMLDOMDocument... 5 Construcción de un

Más detalles

Prácticas: Introducción a la programación en Java. Informática (1º Ingeniería Civil) Curso 2011/2012

Prácticas: Introducción a la programación en Java. Informática (1º Ingeniería Civil) Curso 2011/2012 Prácticas: Introducción a la programación en Java Informática (1º Ingeniería Civil) Índice Introducción a Java y al entorno de desarrollo NetBeans Estructura de un programa Tipos de datos Operadores Sentencias

Más detalles

Tema 5. Plataforma Java EE

Tema 5. Plataforma Java EE Tema 5. Plataforma Java EE SCS Sistemas Cliente/Servidor 4 o informática http://ccia.ei.uvigo.es/docencia/scs enero 2009 FJRP, FMBR 2008/09 ccia SCS 5.1 Introducción a Java EE Java EE (Java Enterprise

Más detalles

DESARROLLO WEB EN ENTORNO CLIENTE

DESARROLLO WEB EN ENTORNO CLIENTE DESARROLLO WEB EN ENTORNO CLIENTE CAPÍTULO 1: Selección de arquitecturas y herramientas de programación Juan Manuel Vara Mesa Marcos López Sanz David Granada Emanuel Irrazábal Jesús Javier Jiménez Hernández

Más detalles

3.4. Reload Editor ( Guía de Uso).

3.4. Reload Editor ( Guía de Uso). 3.4. Reload Editor ( Guía de Uso). Anterior 3. Lors Management Siguiente 3.4. Reload Editor ( Guía de Uso). 3.4.1. Preguntas básicas sobre Reload Editor. - Qué hace el programa Reload Editor? RELOAD Editor

Más detalles

Funcionamiento del sistema de autentificación en PHP

Funcionamiento del sistema de autentificación en PHP Sistema de autentificación PHP Cómo realizar un sistema de autentificación en PHP, en el que los usuarios deban introducir nombre y contraseña para que puedan visualizar las páginas de una aplicación con

Más detalles

DIPLOMATURA DESARROLLO DE APLICACIONES JAVA

DIPLOMATURA DESARROLLO DE APLICACIONES JAVA DIPLOMATURA DESARROLLO DE APLICACIONES JAVA Contenidos MÓDULO UNO: Características del Lenguaje. OOP Reconocer las características del lenguaje Java y sus componentes. Distinguir la similitudes y diferencias

Más detalles

1. Introducción. Pedro Cuesta Morales - Dpto. Lenguajes y Sistemas Informáticos (Octubre 1999) Página 1

1. Introducción. Pedro Cuesta Morales - Dpto. Lenguajes y Sistemas Informáticos (Octubre 1999) Página 1 Desarrollo de Aplicaciones Distribuidas basadas en Tecnologías Web Pedro Cuesta Morales pcuesta@ei.uvigo.es Dpto. Lenguajes y Sistemas Informáticos (Universidad de Vigo) Campus Universitario As Lagoas

Más detalles

Visualización y Transformaciones en XML

Visualización y Transformaciones en XML Visualización y Transformaciones en XML 106 Visualización Los archivos XLM pueden ser vistos prácticamente en cualquier browser 107 Visualización Los XML en los web browsers no se despliegan como páginas

Más detalles

III Congreso de Mathematica en España (3CM) webmathematica: Interactuando con Mathematica desde Internet

III Congreso de Mathematica en España (3CM) webmathematica: Interactuando con Mathematica desde Internet III Congreso de Mathematica en España (3CM) webmathematica: Interactuando con Mathematica desde Internet J. Guillermo Sánchez León Cada vez es más demandado que las aplicaciones informáticas se puedan

Más detalles

5.1 Introducción a XSL

5.1 Introducción a XSL 5.1 Introducción a XSL Añadir Forma al Contenido (I)! Un documento XML que cumple las normas del dialecto ListaML:

Más detalles

XML. El nuevo lenguaje universal

XML. El nuevo lenguaje universal Tema: XML el nuevo lenguaje universal. Autor: Marlene Melián Montalvo Institución: CITMATEL. Este trabajo consiste en una introducción al lenguaje XML. En el mismo se da a conocer su surgimiento, definiciones

Más detalles

UF1304 Elaboración de plantillas y formularios

UF1304 Elaboración de plantillas y formularios UF1304 Elaboración de plantillas y formularios Tema 1. Formularios en la construcción de páginas web Tema 2. Plantillas en la construcción de páginas web OBJETIVOS: - Confeccionar plantillas para las páginas

Más detalles

Introducción a XML - Validación y Parseo. Huibert Aalbers, Senior Certified Software IT Architect

Introducción a XML - Validación y Parseo. Huibert Aalbers, Senior Certified Software IT Architect Introducción a XML - Validación y Parseo Huibert Aalbers, Senior Certified Software IT Architect IT Insight podcast Este podcast pertenece a la serie IT Insight Pueden suscribirse al podcast a través de

Más detalles

TEMA 3 A: INTRODUCCIÓN AL DOM

TEMA 3 A: INTRODUCCIÓN AL DOM TEMA 3 A: INTRODUCCIÓN AL DOM 1.- Qué es el DOM?... 2 1.1.- DOM y JavaScript... 2 1.3.- Cómo se accede al DOM?... 3 2. Instalar una consola... 4 3. Averiguar la versión DOM de Explorer... 5 4.- El DOM

Más detalles