.. _ej-xslt: |XSLT| ****** .. |XSLT| replace:: :abbr:`XSLT (eXtensible Stylesheet Language Transformations)` .. warning:: Los ejercicios está organizados según el |XML| que traducen y no según dificultad. Si prefiere hacerlos según su dificultad un orden apropiado (incluyendo sólo los que generan una salida de texto) es: 1, 7, 9, 10, 11, 8, 12, 21, 3, 22, 11, 5, 6, 15, 16, 17, 18 Terminar de ordenarlos... .. todo:: Añadir problemas que consistan en manipular el |XML| original quitando o añadiendo nodos. #. Dada la solución propuesta para almacenar la información de un dibujo técnico en dos dimensiones, hacer una lista con las entidades que se encuentran en el dibujo: cada item constará del nombre de la entidad y, entre paréntesis, el identificador. .. rst-class:: sol-oculta :download:`Solución propuesta ` #. Haga una transformación semejante a la anterior, pero genere una salida |HTML| en forma de tabla de dos columnas, la primera columna contendrá el nombre de la entidad y la segunda el identificador. .. _ej-xslt-3: #. Ídem al ejercicio 1, pero cada ítem debe tener el siguiente aspecto: * Si es punto: :code:`P=(x,y)`. * Si es circunferencia: :code:`C=(x, y); R=r`. * Si es recta: :code:`R=(x1, y1)-(x2, y2)`. * Si es rectángulo: :code:`R=(x1, y1)+(x2, y2)`. .. rst-class:: sol-oculta :download:`Solución propuesta ` #. Vuelva a hacer el ejercicio anterior, pero genere una tabla |HTML| como salida parecida a la del ejercicio **2**. En este caso la segunda columna contendrá las expresiones anteriores para identificar a cada entidad, en vez del identificador. .. _ej-xslt-5: #. Sobre el mismo |XML| crear una lista con el siguiente aspecto:: LISTA DE ENTIDADES 1. circunferencia: - e03 2. punto: - e01 - e05 3. recta: - e02 4. rectangulo: - e04 es decir, una lista organizada por tipos de entidad. De cada entidad sólo hay que indicar su identificador. .. rst-class:: sol-oculta :download:`Solución propuesta ` #. Haga una lista semejante a la del ejercicio 3, pero las entidades deberán estar ordenadas por tipo y junto a la información del tipo, deberá incluirse la cantidad de entidades que hay de ese tipo. Por ejemplo:: a) circunferencia: 5 1. C(3, 4); R=2 2. ... b) punto: 2 1. P(0, 25) 2. P(-4, 10) 3. ... .. rst-class:: sol-oculta :download:`Solución propuesta ` #. Tomando el :ref:`XML introductorio `, obtenga una lista numerada de profesores ordenada alfabéticamente por apellidos. .. rst-class:: sol-oculta :download:`Solución propuesta ` #. Haga lo mismo que en el caso anterior, pero la lista dividida en cuatro secciones: a. Profesores activos (incluye titulares y sustitutos). #. Profesores sustituidos. #. Profesores sin sustituto (son aquellos cuyo atributo ``id`` coincide con el valor del atributo ``sustituto``). #. Profesores sustitutos. .. rst-class:: sol-oculta :download:`Solución propuesta ` #. Dada la solución propuesta para almacenar la información sobre las facturas de una empresa, muestre una lista numerada de clientes de la empresa. .. rst-class:: sol-oculta :download:`Solución propuesta ` #. Haga lo mismo que en el ejercicio anterior, pero muestre en la lista sólo los clientes que han comprado algo. .. rst-class:: sol-oculta :download:`Solución propuesta ` #. Haga una lista de facturas, en cada una de las cuales aparezca la cantidad de productos distintos que se han comprado. .. rst-class:: sol-oculta :download:`Solución propuesta ` #. Repita la lista, pero incluyendo sólo las facturas con más de un producto distinto. .. rst-class:: sol-oculta :download:`Solución propuesta ` #. A partir del |XML| de las facturas, haga una lista de clientes para cada uno de los cuales se desglosen sus facturas. De las facturas se debe mostrar el identificador y la fecha. .. rst-class:: sol-oculta :download:`Solución propuesta ` #. Haga lo mismo que en el ejercicio anterior, pero el documento resultante debe ser una tabla |HTML| de dos columnas: la primera indicará el cliente; y la segunda las facturas. .. _ej-xslt-15: #. Sobre el mismo |XML| devuelva una lista de facturas, de cada una de las cuales debe desglosarse cuáles son productos que incluye y qué cantidad de ellos. Por ejemplo:: 1. f01 (2018-10-15): + mollete: 3 + tomate: 1 2. f02 (2018-11-15): + tomate: 2 .. rst-class:: sol-oculta :download:`Solución propuesta ` #. Dada la solución propuesta para almacenar la información sobre los libros y préstamos en una biblioteca, crear un listado de lectores que hayan pedido al menos dos préstamos. .. rst-class:: sol-oculta :download:`Solución propuesta ` #. Sobre el |XML| del ejercicio anterior, vuelva a hacer la lista de lectores, pero ordenados por el número de préstamos que han realizado. .. rst-class:: sol-oculta :download:`Solución propuesta ` #. Partiendo del |XML| anterior, devuelva un listado de libros ordenados por año de edición y en el que se indique el número de ejemplares de los que se dispone en la biblioteca. .. rst-class:: sol-oculta * :download:`Solución propuesta ` suponiendo que disponible significa que es propiedad de la biblioteca. * :download:`Solución propuesta ` suponiendo que disponible significa que está físicamente en la biblioteca y no en la casa de un lector. #. A partir del mismo |XML|, genere una lista de libros que incluya cuántas veces se ha prestado y que desglose para cada uno de ellos a quién se le prestó:: - Don Quijote de la Mancha: 2 préstamos 1. Lector 1. 2. Lector 2. - Tirante el Blanco: 1 préstamo 2. Lector 2. Órdene la lista del más prestado al menos prestado. .. rst-class:: sol-oculta :download:`Solución propuesta ` #. Sobre el mismo |XML|, cree una tabla |HTML| que cuyas columnas sean: * Los libros ordenados por número de prestamos. * Los préstamos realizados de ese libro (indíquese la fecha y el plazo). * El cliente que pidió el préstamo (su nombre y DNI). #. Dada la solución propuesta para almacenar la información sobre los coches que vende un concesionario, presente un listado de modelos de coche ordenados como primer criterio por marca y como segundo por potencia. De cada modelo deberá verse nombre del modelo (nombre de la marca): potencia. .. rst-class:: sol-oculta :download:`Solución propuesta ` #. Sobre el |XML| anterior, repita la lista, pero haciéndola de dos niveles: el primero serán las marcas y el segundo los modelos (incluya también la información sobre la potencia). #. Dada la solución propuesta para almacenar la información sobre los parques nacionales, devuelva el listado de parques nacionales y dentro de cada uno de ellos dos listas más: el de la fauna en alto peligro de extinción y el de la flora en alto peligro de extinción. .. rst-class:: sol-oculta :download:`Solución propuesta ` #. Sobre el |XML| anterior, devuelva un listado con primero la flora y luego la fauna. De cada uno de ellos habrá que indicar los parques nacionales en los que se encuentran. .. rst-class:: sol-oculta :download:`Solución propuesta ` #. Del mismo |XML|, saque un listado de animales en alto peligro de extinción en que se indique el total ejemplares que hay de cada uno. .. rst-class:: sol-oculta :download:`Solución propuesta ` #. Soble el mismo |XML|, obtener un listado de parques para cada uno de los cuales se indique la cantidad de especies animales y vegetales protegidas. .. rst-class:: sol-oculta :download:`Solución propuesta ` #. Dada la solución propuesta para almacenar la información sobre los habitantes de un municipio, muestre aquellos de los que se conoce padre y madre. .. rst-class:: sol-oculta :download:`Solución propuesta ` #. Sobre el mismo |XML|, saque un listado de padres y otro de madres. #. Sobre el mismo |XML|, saque un listado de habitantes con algún abuelo conocido. #. Sobre el |XML| de facturas tratado en el ejercicio 5, haga un listado de clientes que hayan comprado el producto Altramuces. #. Sobre el mismo |XML| de facturas haga un listado de facturas (incluya en ella el indentificador y el nombre del cliente) que indique cuál ha sido el gasto en cada producto. #. Saque el mismo listado de facturas, pero en el que se indique cuál ha sido el importe total de la factura, en vez de el importe en cada producto.