viernes, 22 de agosto de 2014

Cambio de interfaz en windows 8 a la de windows 7

Ya solo venden los ordenadores con el Windows 8, y hay mucha gente a la que no le gusta, así que aquí os dejo una manera de usar el Windows 8 con la interfaz de Windows 7.
Lo primero es descargar el programa, “botón de inicio Win8”, el programa que vamos a instalar es el Classic Shell, y añado los link de descarga, pongo dos por si alguno no funciona.
se abre el rar , se extrae los archivos y se instala el classic Shell. 

Para instalarlo es muy sencillo, se acepta la licencia y se van siguiendo los pasos hasta llegar a una página donde se recomienda quitar las opciones de Classic Explorer y Classic IE.
Se termina la instalación, y se copian los dos archivos que vienen junto al ejecutable en la carpeta donde se haya instalado el Classic Shell, dentro de la carpeta de Skins.
En el botón de inicio, se pulsa el ratón con el botón derecho y se le da a configuración.
Nos sale un menú de opciones, se le da a custom y a continuación a pick image, y se busca la ruta donde copiamos antes el skin y el botón de inicio, que fue dentro de la carpeta de Classic Shell.
Se selecciona el botón y se le da a abrir.

Y seguidamente se le da a la pestaña de Skin, y ponemos la Skin de Windows 8.1 y aceptamos y ya tenemos el botón de inicio similar al que teníamos con Windows 7.



jueves, 21 de agosto de 2014

Quiero comprar un ordenador, cual me compro?


Una pregunta que nos hemos hecho todos, más de una vez, y al final, si no conoces a nadie que entienda un poco, después de mirar vas a la tienda y te fías de lo que te diga el dependiente, que a veces lo que quieren nada más es vender, y les da igual que tú te lleves una máquina mejor, o peor.
Bueno, pues después de estar informándome, voy a dar unos consejillos por si os sirven a la hora de elegir vuestro futuro ordenador.
Normalmente lo que se suele hacer es comparar un poco lo que te pone en la etiqueta al lado de un ordenador y otro, y si puedes permitírtelo, se suele coger el que tenga los valores más altos, o el que quiera una marca en concreto, pero a veces eso no es suficiente.
También depende de si lo que quieres es comprar un portátil o un sobremesa ya con todo, o montarlo tú por piezas. Más o menos las características para ambos son las mismas, de todas formas iré distinguiendo en lo que hay que fijarse más si es portátil o sobremesa.
Hay que fijarse mucho en procesadores, RAM, placa base, para que no pase que cojas un procesador muy potente y resulte que la placa base, los buses que tiene no puedan soportar esa velocidad, y tengas un superprocesador, que estas desperdiciando, así que vamos poco a poco y viendo todas las cositas importantes.
Veamos entonces…
AUTONOMÍA EN LOS PORTATILES
Hay que fijarse en la autonomía que el fabricante dice que tiene el portátil, siempre es mejor cuanto más autonomía tenga, aunque a la larga, todos terminamos enchufándolos casi todo el tiempo. La autonomía no depende solo de la batería, sino del uso que se le dé al ordenador.
TAMAÑO Y PESO EN PORTATILES
Eso es un poco al gusto o necesidad de lo que vayas buscando, si lo vas a mover mucho, mejor que no te pese mucho, y el tamaño, depende de lo que vayas buscando y del uso que le des.
TARJETA GRÁFICA PORTATIL/SOBREMESA
Los procesadores más recientes de Intel y AMD incorporan GPUs que rivalizan directamente con las tarjetas gráficas de gama de entrada, e incluso son capaces de igualar el rendimiento de algunos modelos de gama media.
Para tareas cotidianas que no sean muy exigentes nos servirán de sobra y repercutirán tanto en un menor consumo de energía como en un peso más bajo de todo el conjunto.
Y para un sobremesa si el uso que le vas a dar al ordenador, no es algo específico como un diseñador gráfico o algo así, normalmente las tarjetas integradas en la placa base es suficiente.
Si pensamos jugar a videojuegos o llevar a cabo tareas de edición de vídeo y foto, entonces nos compensara comprar un portátil con gráficos dedicados. Además, en este último caso suele ser posible alternar entre la gráfica dedicada e integrada con solo pulsar un botón, adaptando el rendimiento en un momento a lo que requiera una aplicación determinada.
Si lo que quieres es una tarjeta gráfica más específica, hay que tener unas cuantas cosillas en cuenta.
No basta con el tamaño de memoria de que disponga. En el fondo la tarjeta gráfica es como otro ordenador por lo tanto pasa igual que pasaba con el ordenador en sí, no podemos coger una tarjeta gráfica con una ram enorme, y luego las velocidades del microprocesador de la tarjeta no son similares porque se estarán desperdiciando posibilidades.
Para el caso de un ordenador de sobremesa, fijaros en las salidas que tenga la tarjeta gráfica.
Hay que comprobar que la placa base, tenga un puerto PCI, para poder conectar la tarjeta.
Aseguraros que la fuente de alimentación tenga suficiente potencia para alimentar la tarjeta gráfica.
AMPLIABILIDAD Y CONEXIONES PORTATIL
Hay que fijarse en el tipo y variedades de conexiones disponibles. Lo mínimo es que tenga al menos dos puertos USB. Los 3.0, que se distinguen por su color azul, son más rápidos que los 2.0 y ya hoy por hoy, que tenga salida HDMI para poder conectar el portátil a un monitor externo o al televisor.
También es interesante que tenga una conexión Ethernet mediante cable a través de un puerto RJ-45 para poder conectarse a internet por cable también, aunque si el portátil es muy fino ya no la suele traer.
También es interesante informarse de las posibilidades de ampliación que puede tener el portátil, por si en alguna ocasión hay que ampliar la memoria.
DISCO DURO
Normalmente tendemos a fijarnos en la capacidad que tiene, últimamente ya buscamos lo que tenga más capacidad, porque a la larga se nos queda chico. Pero también hay otras cosas importantes en las que fijarse como la velocidad de escritura
Los mejores discos duros existentes en la actualidad son los SSD ya que su rendimiento es muy superior, haciendo que todo se ejecute con más fluidez, son muchos más rápidos que los convencionales, no hacen ruido, son más pequeños, no existe la fragmentación, consumen menos pero son más caros.
Actualmente los discos duros más habituales en la actualidad son los discos duros SATA (SATA 2, SATA 3). En principio para un uso habitual los discos SATA no deberían presentar ningún problema. Cuantas más revoluciones por minuto tenga el disco duro más rápida será su velocidad de escritura y prestaciones.
Otros parámetros a tener en cuenta:
- Cache o tamaño del buffer: Cuanta más cache tenga el disco duro también podemos afirmar que mejores serán las prestaciones del disco.
- Tiempo de acceso: A menor tiempo de acceso mayor rendimiento obtendremos
- Velocidad de transmisión: A mayor Velocidad de transmisión mayor rendimiento. Normalmente este parámetro indicará la cantidad de datos Megas que un disco puede leer o escribir en un segundo.
MICROPROCESADOR
Normalmente buscas la mayor velocidad del procesador, porque se cree que es lo mejor, pero no consiste solo en eso. No es más bueno porque tenga más MHz. Los MHz se corresponden a la velocidad interna a la que funciona el microprocesador, que se refiere a las operaciones que puede realizar por segundo.
También hay que considerar la velocidad externa (frecuencia de reloj) de este procesador. La velocidad externa, nos da la velocidad de comunicación entre el micro y la placa y eso nos orienta sobre la velocidad de comunicación entre el procesador y los distintos componentes del ordenador. Entonces, hay que ver la velocidad externa del procesador y asegurarnos que nos coincida con la velocidad del bus de la placa base y con la de la RAM.
Por lo tanto si tenemos un procesador de 2 GHz con una velocidad externa de 800 MHz se puede decir que el rendimiento es mucho mayor, que otro procesador que tenga 2.6 GHz con una velocidad externa de 667 MHz.
Y si es un uso de poca intensidad (navegar por internet, escribir documentos) con un procesador de doble núcleo a 2 Ghz tenemos suficiente. Si vamos a usarlo para juegos, y de forma más exhaustiva, los cuatro núcleos a 2 Ghz son una buena opción. Finalmente, si vamos a hacer un uso más profesional o muy específico, nos conviene escoger cuatro núcleos con más Ghz de velocidad.
Hay muchos tipos de microprocesadores en el mercado, los más conocidos, INTEL y AMD, son más caros los INTEL, y yo personalmente los prefiero, a la larga, sufren menos recalentamientos que los AMD, pero eso como todo, depende del dinero que te quieras gastar, ya que las prestaciones que ofrecen uno y otro son las mismas.
Ordenados de menor a mayor rendimiento, tenemos los Intel Core i3, i5 e i7, y si buscamos un portátil asequible ya daríamos el salto a los Pentium y Celeron, con menos funciones y capacidades más limitadas que las de sus hermanos mayores.
Los AMD, de mejor a peor tendríamos los A10, A8, A6 y A4, y las opciones destinadas a equipos de menor presupuesto estarían encuadradas en la serie E.
RAM
Bueno, entramos en el tema de la RAM, actualmente ya venden ordenadores, con 8 gigas de RAM, yo personalmente para lo que lo uso, sí que necesito tener una RAM potente, ya que la RAM es un espacio donde están trabajando los programas en ejecución, y como dije antes depende para lo que lo vayas a usar. Ya que a medida que tiene más RAM, el precio aumenta.
Para un uso normal, una RAM de 4 GB, está muy bien, la de 2, pienso que se queda muy corta, y la de 8, depende de si vas a trabajar con más de un programa a la vez, ya que el uso de mucha RAM solo es necesaria en el caso que nos queramos dedicar al tratamiento de vídeo o fotografía, diseño gráfico, necesidad de virtualizar sistemas operativos, etc, y bueno, ya superiores a 8, incrementa más el precio, y puede que no lo aproveches tanto. De todas formas si el portátil no tiene la posibilidad de ampliación, quizás os convenga, pagar un poco más y cogerla de 8 gigas.
Además hay que tener en cuenta que hay memorias más rápidas y más lentas. En la actualidad existen distintos tipos de memorias DDR-SDRAM, DDR2 y DDR3. Dentro de cada uno de los tipos de memoria existen memorias que ofrecen mayor o menor velocidad. Por lo tanto en este punto tenemos que asegurarnos que el tipo de memoria que usamos sea compatible con nuestra placa base y también asegurar que la velocidad de Bus de la placa base sea igual al bus de memoria de la memoria RAM.
Así por lo tanto si tenemos una placa base que admite memorias DDR2 y tiene una velocidad máxima de bus de 800 MHz lo más eficiente es elegir una RAM de DDR2 un FSB de 800MHz. Si usamos una memoria de 667MHz nuestro ordenador funcionará pero estaremos penalizando su rendimiento. Por ejemplo puesto nuestro ordenador rendirá más si disponemos de 4 Gb de memoria DDR2 con una velocidad de 800 MHz que no con 8 Gb de memoria DDR2 con una velocidad de   667 MHz.
SOBREMESA
Una de las cosas a tener en cuenta es que el fabricante o los componentes que se elijan, sean compatibles con el sistema operativo que usas, esto lo digo para el caso de quien se monte el ordenador por piezas, (me refiero a que los drivers sean compatibles con el hardware)  ya que si lo compras ya montado, normalmente hay compatibilidad con el sistema operativo que te trae el ordenador.
Una cosa, sí que tenéis que tener en cuenta, si compráis un ordenador, con un sistema operativo ya instalado, y decidís, cambiarlo por otro porque no os guste o por el motivo que sea, si lo hacéis, perdéis la garantía del ordenador.
También, hay que tener en cuenta el uso que se le va a dar al ordenador, porque dependiendo de ese uso, lo cogerás con unas prestaciones u otras.
Si tu uso, es el habitual, navegar, mirar correos, usarlo para trabajar con aplicaciones ofimaticas y demás… no es necesario, comprarte el último modelo, con las últimas prestaciones, te saldrá muy caro, y estarás desperdiciando las prestaciones.
Otra cosa a tener en cuenta es que elijamos componentes de marcas conocidas, esto es importante a la larga, porque sobre todo con los portátiles, si compráis marcas no conocidas, estas pueden ser más económicas, pero que se recalienten más, y yo he tenido que desechar más de un ordenador, por recalentamientos.
Os dejo aquí alguna de las marcas conocidas, para que os vayan sonando: Seagate , Western Digital, Kingston, Nvidia, ATI, Asus Gigabyte, VIA, Intel, Antec, Corsair, Seasonic, Three Hundred, Nzxt Phantom, HAF 91, etc.
FUENTE DE ALIMENTACIÓN PARA UN ORDENADOR DE SOBREMESA
La fuente de alimentación es muy importante porque puede ser la responsable de que en alguna ocasión nuestro ordenador se quede colgado.
Hay que asegurarse que los watios que proporciona la fuente sean los necesarios para alimentar los componentes del ordenador.
Si la fuente va muy justa de potencia, el ventilador hará mucho ruido y habrá un calentamiento excesivo. También es aconsejable que sea una marca conocida como Antec, Corsair, Enermax, Fortron, Seasonic.
Las tarjetas gráficas de gama alta o algunos procesadores pueden requerir de mucha energía para alimentarlas, por lo tanto al elegir la tarjeta gráfica es necesario analizar la fuente de alimentación.
DISIPADOR DE CALOR PARA UN SOBREMESA
Lo principal a tener en cuenta cuando queremos comprar un disipador de calor es:
- Asegurarnos que es compatible con la placa base y haya suficiente espacio en la torre para ponerlo.
-  La utilidad que se le va a dar al ordenador, para saber si es aconsejable comprarlo o no.
- Para que no de mucho ruido, habría que coger uno silencioso.
En el caso de dar un uso normal al ordenador, con un disipador estándar es suficiente.
PLACA BASE SOBREMESA
La placa base integrada, integran normalmente la tarjeta de red y video en la misma placa base y normalmente tienes menos puertos PCI para poder incorporar hardware adicional.
Las ventajas son la reducción del coste y el ahorro en espacio ya que tenemos todos los controladores y chips en una misma placa y un menor calentamiento debido principalmente a que los componentes que usan no son muy potentes.
Las desventajas son el bajo rendimiento de la tarjeta de vídeo ya que suelen ser de baja calidad.
Las placas puras tienen la ventaja de poder elegir los componentes que nosotros queramos, pudiendo elegir componentes de mayor calidad, pero nos resultara más caro económicamente, pero esto lo recomiendo en el caso de que el uso que le vayas a dar al ordenador sea para algo más específico que para un uso normal.
Hay que tener en cuenta también el tipo de socket de la placa y su consumo máximo admisible. De esta forma se puede elegir el procesador más idóneo para nuestra placa, y también es bueno tenerlo en cuenta para la posibilidad de poder ampliar el ordenador en un futuro.
Y otra cosa a tener en cuenta es que cuanto más alta sea la velocidad de bus de la placa más posibilidades de ampliación tendrá.
Recomiendo que el número de slots de memoria que tenga la placa sea el máximo posible, para poder ampliar en un futuro si es necesario, los tipos de memoria Ram admisible (DDR2, DDR3, etc), cantidad máxima de Ram que admite la placa, el tipo de procesador que se puede instalar (AMD, INTEL), número y tipo de ranuras PCI disponibles (PCI 1x, PCI 2.2), tipo y número de tarjetas de red (10/100 – 100/1000), número y tipo de conectores disponibles para el disco duro (IDE, SATA 2, SATA 3), que la placa tenga posibilidad de arranque remoto, número y tipo de conectores USB (1.0- 2.0), ver si la placa tiene conectores SATA externos, si tiene soporte por hardware para RAID0, RAID1 y JBOD, conectores de entrada y salida de la tarjeta (Serie, paralelo, Ian, USB audio, etc), etc.
TORRE Y VENTILACIÓN

Sobretodo asegurarse que sea grande para que le quepan todos los componentes que le quieras poner y que elimine calor.

martes, 19 de agosto de 2014

Ejercicios Xquery2


<?xml version="1.0" encoding="UTF-8"?>
<libreria>
<libro categoria="COOKING" codigo='1'>
<titulo leng="en">Everyday Italian</titulo>
<autor>Giada De Laurentiis</autor>
<anyo>2005</anyo>
<precio>30.00</precio>
</libro>
<libro categoria="CHILDREN" codigo='2'>
<titulo leng="en">Harry Potter</titulo>
<autor>J K. Rowling</autor>
<anyo>2005</anyo>
<precio>29.99</precio>
</libro>
<libro categoria="WEB" codigo='3'>
<titulo leng="en">XQuery Kick Start</titulo>
<autor>James McGovern</autor>
<autor>Per Bothner</autor>
<autor>Kurt Cagle</autor>
<autor>James Linn</autor>
<autor>Vaidyanathan Nagarajan</autor>
<anyo>2003</anyo>
<precio>49.99</precio>
</libro>
<libro categoria="WEB" codigo='4'>
<titulo leng="en">Learning XML</titulo>
<autor>Erik T. Ray</autor>
<anyo>2003</anyo>
<precio>39.95</precio>
</libro>
</libreria>

<?xml version="1.0" encoding="UTF-8"?>
<almacen>
<comprados>
<codigo>1</codigo>
<codigo>2</codigo>
</comprados>
<pendientes>
<codigo>3</codigo>
<codigo>4</codigo>
</pendientes>
</almacen>

1. Realizar una lista ordenada html de nombre de autores.

<ul>
{
for $x in doc("c:\users\usuario\desktop\xquery2.xml")/libreria/libro
return <li>{data($x/autor)}</li>
}
</ul>

<ul>
<li>Giada De Laurentiis</li>
<li>J K. Rowling</li>
<li>James McGovern Per Bothner Kurt Cagle James Linn Vaidyanathan Nagarajan</li>
<li>Erik T. Ray</li>
</ul>


2. Realizar una tabla html con el título "Listado de libros de categorías" y que tenga las columnas: categoría y nro.de títulos.

<html>
<body>
<h1 align="center">Listado de libros de categorías</h1>
<center>
<table border ="1"
<tr>
<th>Categoria</th>
<th>Numero de libros</th>
</tr>
{
for $x in doc("c:\users\usuario\desktop\xquery2.xml")/libreria/libro
return
<tr>
<td>{data($x/@categoria)}</td>
<td>{data($x/count(titulo))}</td>
</tr>
}
</table>
</center>
</body>
</html>


<html>
<body>
<h1 align="center">Listado de libros de categorías</h1>
<center>
<table border="1">
<tr>
<th>Categoria</th>
<th>Numero de libros</th>
</tr>
<tr>
<td>COOKING</td>
<td>1</td>
</tr>
<tr>

<td>CHILDREN</td>
<td>1</td>
</tr>
<tr>
<td>WEB</td>
<td>1</td>
</tr>
<tr>
<td>WEB</td>
<td>1</td>
</tr>
</table>
</center>
</body>
</html>


3. Realizar una tabla html con el título "listado de libros pendientes anteriores a 2004" con las columnas: codigo, categoria, titulo y precio.

<html>
<body>
<h1 align="center">Listado de libros pendientes anteriores a 2004</h1>
<center>
<table border ="1">
<tr>
<th>Codigo</th>
<th>Categoria</th>
<th>Titulo</th>
<th>Precio</th>
</tr>
{
for $x in doc("c:\users\usuario\desktop\xquery2.xml")/libreria/libro
where anyo < 2004
return
<tr>
<td>{data($x/@codigo)}</td>
<td>{data($x/@categoria)}</td>
<td>{data($x/titulo)}</td>
<td>{data($x/precio)}</td>
</tr>
}
</table>
</center>
</body>
</html>


<body>
<h1 align="center">Listado de libros pendientes anteriores a 2004</h1>
<center>
<table border="1">
<tr>
<th>Codigo</th>
<th>Categoria</th>
<th>Titulo</th>
<th>Precio</th>
</tr>
</table>
</center>
</body>
</html>

Ejercicios Xquery1


<?xml version="1.0" encoding="ISO-8859-1"?>
<bib>
<libro anyo="1994">
<titulo>TCP/IP Illustrated</titulo>
<autor>
<apellido>Stevens</apellido>
<nombre>W.</nombre>
</autor>
<editorial>Addison-Wesley</editorial>
<precio>65.95</precio>
</libro>
<libro anyo="1992">
<titulo>Advanced Programming for Unix environment</titulo>
<autor>
<apellido>Stevens</apellido>
<nombre>W.</nombre>
</autor>
<editorial>Addison-Wesley</editorial>
<precio>65.95</precio>
</libro>
<libro anyo="2000">
<titulo>Data on the Web</titulo>
<autor>
<apellido>Abiteboul</apellido>
<nombre>Serge</nombre>
</autor>
<autor>
<apellido>Buneman</apellido>
<nombre>Peter</nombre>
</autor>
<autor>
<apellido>Suciu</apellido>
<nombre>Dan</nombre>
</autor>
<editorial>Morgan Kaufmann editorials</editorial>
<precio>39.95</precio>
</libro>
<libro anyo="1999">
<titulo> Economics of Technology for Digital TV</titulo>
<editor>
<apellido>Gerbarg</apellido>
<nombre>Darcy</nombre>
<afiliacion>CITI</afiliacion>
</editor>
<editorial>Kluwer Academic editorials</editorial>
<precio>129.95</precio>
</libro>
</bib>

1. Listar el título de todos los libros.

for $x in doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro/titulo
return data($x)

for $x in doc("c:\users\usuario\desktop\xquery1.xml ")/bib/libro
return data($x/titulo)


<titulo>TCP/IP Illustrated</titulo>
<titulo>Advanced Programming for Unix environment</titulo>
<titulo>Data on the Web</titulo>
<titulo>Economics of Technology for Digital TV</titulo>


2. Listar año y título de todos los libros, ordenados por el año.
Primera solución

for $x in doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro
order by $x/@anyo
return <libro> {$x/@anyo} {$x/titulo }</libro>


Segunda solución

<html>
<head/>
<body>
<h1>Año y titulo de los libros </h1>
<ul>
{
for $x in doc ("c:\users\usuario\desktop\xquery1.xml")/bib/libro
order by $x/@anyo
return
<li>
{data($x/titulo)} .Año{data($x/@anyo)}
</li>
}
</ul>
</body>
</html>
 
3. Listar los libros cuyo precio sea 65.95

for $x in doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro
where $x/precio=65.95
return $x


<libro anyo="1994">
<titulo>TCP/IP Illustrated</titulo>
<autor>
<apellido>Stevens</apellido>
<nombre>W.</nombre>
</autor>
<editorial>Addison-Wesley</editorial>
<precio>65.95</precio>
</libro>
<libro anyo="1992">
<titulo>Advanced Programming for Unix environment</titulo>
<autor>
<apellido>Stevens</apellido>
<nombre>W.</nombre>
</autor>
<editorial>Addison-Wesley</editorial>
<precio>65.95</precio>
</libro>

4. Listar los libros publicados antes del año 2000

for $x in doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro
where $x/@anyo<2000
return $x


<libro anyo="1994">
<titulo>TCP/IP Illustrated</titulo>
<autor>
<apellido>Stevens</apellido>
<nombre>W.</nombre>
</autor>
<editorial>Addison-Wesley</editorial>
<precio>65.95</precio>
</libro>
<libro anyo="1992">
<titulo>Advanced Programming for Unix environment</titulo>
<autor>
<apellido>Stevens</apellido>
<nombre>W.</nombre>
</autor>
<editorial>Addison-Wesley</editorial>
<precio>65.95</precio>
</libro>
<libro anyo="1999">
<titulo>Economics of Technology for Digital TV</titulo>
<editor>
<apellido>Gerbarg</apellido>
<nombre>Darcy</nombre>
<afiliacion>CITI</afiliacion>
</editor>
<editorial>Kluwer Academic editorials</editorial>
<precio>129.95</precio>
</libro>

5. Listar año y título de los libros publicados por Addison-Wesley después del año 1992.

for $x in doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro
where $x/@anyo>1992 and $x/editorial=”Addison-Wesley”
return <libro> {$x/@anyo} {$x/titulo }</libro>


<libro anyo="1994">
<titulo>TCP/IP Illustrated</titulo>
</libro>

6. Listar año y título de los libros que tienen más de un autor.

for $x in doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro
where $x/count (autor)>1
return <libro> {$x/@anyo} {$x/titulo }</libro>


<libro anyo="2000">
<titulo>Data on the Web</titulo>
</libro>


Otra forma:

for $x in doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro
let $y := $x//autor
where count ($y)>1
return <libro> {$x/@anyo} {$x/titulo }</libro>

7. Listar año y título de los libros que no tienen autor.

for $x in doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro
where empty($x/autor)
return <libro> {$x/@anyo} {$x/titulo }</libro>


<libro anyo="1999">
<titulo>Economics of Technology for Digital TV</titulo>
</libro>

8. Mostrar los apellidos de los autores que aparecen en el documento, sin repeticiones, ordenados alfabéticamente.

for $x in doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro/autor
order by $x/apellido
return $x/apellido


<apellido>Abiteboul</apellido>
<apellido>Buneman</apellido>
<apellido>Stevens</apellido>
<apellido>Stevens</apellido>
<apellido>Suciu</apellido>

9. Por cada libro, listar agrupado en un elemento <result> su título y autores

let $result := doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro/titulo |/bib/libro/autor
return

<result>
{
data($result)
}
</result>


<result>TCP/IP Illustrated StevensW. Advanced Programming for Unix environment StevensW. Data on the Web AbiteboulSerge Economics of Technology for Digital TV BunemanPeter SuciuDan</result>
10. Por cada libro, obtener su título y el número de autores, agrupados en un elemento <libro>
let $libro := doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro/titulo |/bib/libro[count (autor)]
return
<libro>
{
data($libro)
}
</libro>


<libro>TCP/IP Illustrated TCP/IP IllustratedStevensW.Addison-Wesley65.95 Data on the WebAbiteboulSergeBunemanPeterSuciuDanMorgan Kaufmann editorials39.95 Advanced Programming for Unix environment Data on the Web Economics of Technology for Digital TV</libro>
11. Generar un documento html con un encabezado que diga “Listado de libros” seguido de una tabla de 3 columnas, en la que se muestre el título, editorial y precio de cada libro. La tabla deberá tener bordes y la primera fila tendrá un formato especial con los nombres de las columnas. Las columnas de título y editorial irán alineadas a la izquierda, y el precio a la derecha. 

<html>
<body>
<h1 align="center">Listado de libros</h1>
<center>
<table border ="1">
<tr>
<th>Titulo</th>
<th>Editorial</th>
<th>Precio</th>
</tr>
{
for $x in doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro
order by $x
return
<tr>
<td>{data($x/titulo)}</td>
<td>{data($x/editorial)}</td>
<td>{data($x/precio)}</td>
</tr>
}
</table>
</center>
</body>
</html>

Ejercicios Xpath


XPath - Ejercicio 1 - Expresiones simples
Dado el siguiente documento XML, escriba las expresiones XPath que devuelvan la respuesta deseada (mostrada en los cuadros).
<?xml version="1.0" encoding="UTF-8"?>
<ies>
  <nombre>IES Abastos</nombre>
  <web>http://www.iesabastos.org</web>
  <ciclos>
    <ciclo id="ASIR">
      <nombre>Administración de Sistemas Informáticos en Red</nombre>
      <grado>Superior</grado>
      <decretoTitulo año="2009" />
    </ciclo>
    <ciclo id="DAW">
      <nombre>Desarrollo de Aplicaciones Web</nombre>
      <grado>Superior</grado>
      <decretoTitulo año="2010" />
    </ciclo>
    <ciclo id="SMR">
      <nombre>Sistemas Microinformáticos y Redes</nombre>
      <grado>Medio</grado>
      <decretoTitulo año="2008" />
    </ciclo>
  </ciclos>
</ies>
1. Nombre del Instituto:
<nombre>IES Abastos</nombre>

Solución:
//ies/nombre

2. Página web del Instituto:
http://www.iesabastos.org

Solución:
//web/text()

3. Nombre de los Ciclos Formativos:
Administración de Sistemas Informáticos en Red
Desarrollo de Aplicaciones Web
Sistemas Microinformáticos y Redes

Solución:
//ciclo/nombre/text()

4. Siglas por las que se conocen los Ciclos Formativos:
id="ASIR"
id="DAW"
id="SMR"

Soluciones:
//@id
//ciclo/@*


5. Años en los que se publicaron los decretos de título de los Ciclos Formativos:
año="2009"
año="2010"
año="2008"

Solución:
//@año

6. Ciclos Formativos de Grado Medio (se trata de obtener el elemento <ciclo> completo):
<ciclo id="SMR">
<nombre>Sistemas Microinformáticos y Redes</nombre>
<grado>Medio</grado>
<decretoTitulo año="2008"/>
</ciclo>

Soluciones:
//ciclo[grado="Medio"]
//grado[.="Medio"]/..


7. Nombre de los Ciclos Formativos de Grado Superior:
<nombre>Administración de Sistemas Informáticos en Red</nombre>
<nombre>Desarrollo de Aplicaciones Web</nombre>

Soluciones:
//ciclo[grado="Superior"]/nombre
//grado[.="Superior"]/../nombre


8. Nombre de los Ciclos Formativos anteriores a 2010:
Administración de Sistemas Informáticos en Red
Sistemas Microinformáticos y Redes

Soluciones:
//@año[.<2010]/../../nombre/text()
//decretoTitulo[@año<2010]/../nombre/text()


9. Nombre de los Ciclos Formativos de 2008 o 2010:
Desarrollo de Aplicaciones Web
Sistemas Microinformáticos y Redes

Soluciones:
(//@año[.=2008]|//@año[.=2010])/../../nombre/text()
//decretoTitulo[@año=2008 or @año=2010]/../nombre/text()


XPath - Ejercicio 2 - Expresiones simples
Dado el siguiente documento XML, escriba las expresiones XPath que devuelvan la respuesta deseada (mostrada en los cuadros).
<?xml version="1.0" encoding="UTF-8"?>
<ies>
  <modulos>
    <modulo id="0228">
      <nombre>Aplicaciones web</nombre>
      <curso>2</curso>
      <horasSemanales>4</horasSemanales>
      <ciclo>SMR</ciclo>
    </modulo>
    <modulo id="0372">
      <nombre>Gestión de bases de datos</nombre>
      <curso>1</curso>
      <horasSemanales>5</horasSemanales>
      <ciclo>ASIR</ciclo>
    </modulo>
    <modulo id="0373">
      <nombre>Lenguajes de marcas y sistemas de gestión de información</nombre>
      <curso>1</curso>
      <horasSemanales>3</horasSemanales>
      <ciclo>ASIR</ciclo>
      <ciclo>DAW</ciclo>
    </modulo>
    <modulo id="0376">
      <nombre>Implantación de aplicaciones web</nombre>
      <curso>2</curso>
      <horasSemanales>5</horasSemanales>
      <ciclo>ASIR</ciclo>
    </modulo>
  </modulos>
</ies>
1. Nombre de los módulos que se imparten en el Instituto:
Aplicaciones web
Gestión de bases de datos
Lenguajes de marcas y sistemas de gestión de información
Implantación de aplicaciones web

Solución:
//nombre/text()

2. Nombre de los módulos del ciclo ASIR:
Gestión de bases de datos
Lenguajes de marcas y sistemas de gestión de información
Implantación de aplicaciones web

Solución:
//modulo[ciclo="ASIR"]/nombre/text()

3. Nombre de los módulos que se imparten en el segundo curso de cualquier ciclo:
Aplicaciones web
Implantación de aplicaciones web

Solución:
//modulo[curso=2]/nombre/text()

4. Nombre de los módulos de menos de 5 horas semanales:
Aplicaciones web
Lenguajes de marcas y sistemas de gestión de información

Solución:
//modulo[horasSemanales<5]/nombre/text()

5. Nombre de los módulos que se imparten en el primer curso de ASIR:
Gestión de bases de datos
Lenguajes de marcas y sistemas de gestión de información

Solución:
//modulo[ciclo="ASIR" and curso=1]/nombre/text()

6. Horas semanales de los módulos de más de 3 horas semanales (4, 5, 5).
4
5
5

Soluciones
//modulo[horasSemanales>3]/horasSemanales/text()
//horasSemanales[.>3]/text()


XPath - Ejercicio 3 - Expresiones anidadas
Dado el siguiente documento XML, escriba las expresiones XPath que devuelvan la respuesta deseada (mostrada en los cuadros).
<?xml version="1.0" encoding="UTF-8"?>
<ies>
  <nombre>IES Abastos</nombre>
  <web>http://www.iesabastos.org</web>
  <ciclos>
    <ciclo id="ASIR">
      <nombre>Administración de Sistemas Informáticos en Red</nombre>
      <grado>Superior</grado>
      <decretoTitulo año="2009" />
    </ciclo>
    <ciclo id="DAW">
      <nombre>Desarrollo de Aplicaciones Web</nombre>
      <grado>Superior</grado>
      <decretoTitulo año="2010" />
    </ciclo>
    <ciclo id="SMR">
      <nombre>Sistemas Microinformáticos y Redes</nombre>
      <grado>Medio</grado>
      <decretoTitulo año="2008" />
    </ciclo>
  </ciclos>
  <modulos>
    <modulo id="0228">
      <nombre>Aplicaciones web</nombre>
      <curso>2</curso>
      <horasSemanales>4</horasSemanales>
      <ciclo>SMR</ciclo>
    </modulo>
    <modulo id="0372">
      <nombre>Gestión de bases de datos</nombre>
      <curso>1</curso>
      <horasSemanales>5</horasSemanales>
      <ciclo>ASIR</ciclo>
    </modulo>
    <modulo id="0373">
      <nombre>Lenguajes de marcas y sistemas de gestión de información</nombre>
      <curso>1</curso>
      <horasSemanales>3</horasSemanales>
      <ciclo>ASIR</ciclo>
      <ciclo>DAW</ciclo>
    </modulo>
    <modulo id="0376">
      <nombre>Implantación de aplicaciones web</nombre>
      <curso>2</curso>
      <horasSemanales>5</horasSemanales>
      <ciclo>ASIR</ciclo>
    </modulo>
  </modulos>
</ies>
1. Nombre de los módulos del ciclo "Sistemas Microinformáticos y Redes". Nota: en la expresión final no deben aparecer las siglas SMR:
Aplicaciones web

Solución:
siglas del ciclo "Sistemas Microinformáticos y Redes":
//ciclo[nombre="Sistemas Microinformáticos y Redes"]/@id
módulos del ciclo SMR:
//modulo[ciclo="SMR"]/nombre/text()
sustituyendo la primera en la segunda:
//modulo[ciclo=//ciclo[nombre="Sistemas Microinformáticos y Redes"]/@id]/nombre/text()

2. Nombre de los ciclos que incluyen el módulo "Lenguajes de marcas y sistemas de gestión de información":
Administración de Sistemas Informáticos en Red
Desarrollo de Aplicaciones Web

Solución:
siglas de los ciclos que incluyen el módulo "Lenguajes de marcas y sistemas de gestión de información":
//modulo[nombre="Lenguajes de marcas y sistemas de gestión de información"]/ciclo/text()
nombre de los ciclos ASIR o DAW:
//ciclo[@id="ASIR"]/nombre/text()
//ciclo[@id="DAW"]/nombre/text()
 sustituyendo la primera en la segunda:
//ciclo[@id=//modulo[nombre="Lenguajes de marcas y sistemas de gestión de información"]/ciclo]/nombre/text()

3. Nombre de los módulos de ciclos de Grado Superior:
Gestión de bases de datos
Lenguajes de marcas y sistemas de gestión de información
Implantación de aplicaciones web

Solución:
siglas de los ciclos de grado superior:
//ciclo[grado="Superior"]/@id
módulos de los ciclos ASIR o DAW:
//modulo[ciclo="ASIR"]/nombre/text()
//modulo[ciclo="DAW"]/nombre/text()

sustituyendo la primera en la segunda:
//modulo[ciclo=//ciclo[grado="Superior"]/@id]/nombre/text()

4. Nombre de los módulos de ciclos cuyo título se aprobó en 2008:
Aplicaciones web

Solución:
siglas de los ciclos cuyo título se aprobó en 2008:
//decretoTitulo[@año=2008]/../@id
 módulos del ciclo SMR:
//modulo[ciclo="SMR"]/nombre/text()
sustituyendo la primera en la segunda:
//modulo[ciclo=//decretoTitulo[@año=2008]/../@id]/nombre/text()
5. Grado de los ciclos con módulos de primer curso:
Superior
Superior

Solución:
siglas de los ciclos con módulos de primer curso:
//modulo[curso=1]/ciclo
 Grados de los ciclos ASIR o DAW:
//ciclo[@id="ASIR"]/grado/text()
//ciclo[@id="DAW"]/grado/text()

 sustituyendo la primera en la segunda:
//ciclo[@id=//modulo[curso=1]/ciclo]/grado/text()

domingo, 17 de agosto de 2014

Ejercicios XSLT

XSLT - Ejercicio 1
Dado el siguiente documento XML, escriba las hojas de estilo XSLT que devuelvan la respuesta deseada.
<?xml version="1.0" encoding="UTF-8"?>
<ies nombre="IES Abastos" web="http://www.iesabastos.org/" >
  <ciclos>
    <ciclo id="ASIR">
      <nombre>Administración de Sistemas Informáticos en Red</nombre>
      <grado>Superior</grado>
      <decretoTitulo año="2009" />
    </ciclo>
    <ciclo id="DAW">
      <nombre>Desarrollo de Aplicaciones Web</nombre>
      <grado>Superior</grado>
      <decretoTitulo año="2010" />
    </ciclo>
    <ciclo id="SMR">
      <nombre>Sistemas Microinformáticos y Redes</nombre>
      <grado>Medio</grado>
      <decretoTitulo año="2008" />
    </ciclo>
  </ciclos>
</ies>

Sin etiquetas:
<?xml version="1.0" encoding="UTF-8"?>
    Administración de Sistemas Informáticos en Red
    Desarrollo de Aplicaciones Web
    Sistemas Microinformáticos y Redes
SOLUCION
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="ciclo">
<xsl:value-of select="nombre"/>
</xsl:template>
</xsl:stylesheet>

Párrafos:

<?xml version="1.0" encoding="UTF-8"?>  
<html>
    <p>Administración de Sistemas Informáticos en Red</p>
    <p>Desarrollo de Aplicaciones Web</p>
    <p>Sistemas Microinformáticos y Redes</p>
</html>

SOLUCION:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="ciclos">
<html>
<xsl:apply-templates/>
</html>
</xsl:template>
<xsl:template match="ciclo">
<p>
<xsl:value-of select="nombre"/>
</p>
</xsl:template>
</xsl:stylesheet>

Lista:

<?xml version="1.0" encoding="UTF-8"?>
<html>
  <ul>
    <li>Administración de Sistemas Informáticos en Red</li>
    <li>Desarrollo de Aplicaciones Web</li>
    <li>Sistemas Microinformáticos y Redes</li>
  </ul>
</html>

SOLUCION:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="ciclos">
<html>
<ul>
<xsl:apply-templates/>
</ul>
</html>
</xsl:template>
<xsl:template match="ciclo">
<li>
<xsl:value-of select="nombre"/>
</li>
</xsl:template>
</xsl:stylesheet>

Tabla:
<?xml version="1.0" encoding="UTF-8"?>
<html>
  <table border="1">
    <tr>
      <td>Administración de Sistemas Informáticos en Red</td>
    </tr>
    <tr>
      <td>Desarrollo de Aplicaciones Web</td>
    </tr>
    <tr>
      <td>Sistemas Microinformáticos y Redes</td>
    </tr>
  </table>
</html>

SOLUCION:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="ciclos">
<html>
<table border="1">
<xsl:apply-templates/>
</table>
</html>
</xsl:template>
<xsl:template match="ciclo">
<tr>
<xsl:text></xsl:text>
<td>
<xsl:value-of select="nombre"/>
</td>
<xsl:text></xsl:text>
</tr>
</xsl:template>
</xsl:stylesheet>

Tabla:
<?xml version="1.0" encoding="UTF-8"?>
<html>
  <h1>IES Abastos</h1>
  <p>Página web: <a href="http://www.iesabastos.org/">http://www.iesabastos.org/</a></p>
  <table border="1">
  <tr>
    <th>Nombre del ciclo</th>
    <th>Grado</th>
    <th>Año del título</th>
  </tr>
  <tr>
    <td>Administración de Sistemas Informáticos en Red</td>
    <td>Superior</td>
    <td>2009</td>
  </tr>
  <tr>
    <td>Desarrollo de Aplicaciones Web</td>
    <td>Superior</td>
    <td>2010</td>
  </tr>
  <tr>
    <td>Sistemas Microinformáticos y Redes</td>
    <td>Medio</td>
    <td>2008</td>
  </tr>
</table>
</html>

SOLUCION:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<xsl:apply-templates/>
</html>
</xsl:template>
<xsl:template match="ies">
<h1>
<xsl:value-of select="@nombre"/>
</h1>
<p>
Página web:
<a>
<xsl:attribute name="href">
<xsl:value-of select="@web"/>
</xsl:attribute>
<xsl:value-of select="@web"/>
</a>
</p>
<table border="1">
<xsl:text></xsl:text>
<tr>
<xsl:text></xsl:text>
<th>Nombre del ciclo</th>
<xsl:text></xsl:text>
<th>Grado</th>
<xsl:text></xsl:text>
<th>Año del título</th>
<xsl:text></xsl:text>
</tr>
<xsl:text></xsl:text>
<xsl:apply-templates/>
</table>
</xsl:template>
<xsl:template match="ciclo">
<tr>
<xsl:text></xsl:text>
<td>
<xsl:value-of select="nombre"/>
</td>
<xsl:text></xsl:text>
<td>
<xsl:value-of select="grado"/>
</td>
<xsl:text></xsl:text>
<td>
<xsl:value-of select="decretoTitulo/@año"/>
</td>
<xsl:text></xsl:text>
</tr>
</xsl:template>
</xsl:stylesheet>