<!--
    Nombre: Irene Rodríguez
    Fecha de creación: 27/01/2025
    Fecha de modificacion: 29/01/2025
    Descripción: Creación de un documento markdown(.md) con un ejercicio de rutas en xPath
-->

# XPath [Ejercicio 1](http://xpather.com/WRCbZIz0)

1. Códigos de las carreras en las que hay algún alumno matriculado:
   ```
   universidad/alumnos/alumno/estudios/carrera/@codigo
   ```
2. Apellidos y Nombre de los alumnos con beca:
    
    El siguiente código no sería correcto, puesto que sólo mostraría un resultado y en caso de que hubiera más de uno, daría error:
    ```
    concat(//alumnos/alumno[@beca='si']/apellido1 ," ", //alumnos/alumno[@beca]/apellido2 ," ",
    //alumnos/alumno[@beca]/nombre)
    ```
    Lo correcto sería hacer lo siguiente:
    ```
    //alumnos/alumno[@beca='si']/apellido1 |
    //alumnos/alumno[@beca]/apellido2 |
    //alumnos/alumno[@beca]/nombre
    ```
3. Nombre de las asignaturas de la titulación c04:
    <!--
        Ojo, las rutas relativas no son recomendables ya que en caso de haber más de uno con el mismo nombre daría error o no funcionaría
    -->
    Utiliando ruta absoluta:
    ```
    universidad/asignaturas/asignatura[@titulacion='c04']/nombre/text()
    ```

    Utilizando una ruta relativa:
    ````
    //asignaturas/asignatura/[@titulacion='c04]/nombre/text()
    ```
4. Nombre de las asignaturas de segundo trimestre:
    ```
    universidad/asignaturas/asignatura[trimestre='2']/nombre/text()
    ```
5. Nombre de las asignaturas que no tienen 4 créditos teóricos:
    ```
    universidad/asignaturas/asignatura[creditos_teoricos!=4]/nombre/text()
    ```
6. Código de la carrera que estudia el último alumno:
    ```
    universidad/alumnos/alumno[last()]/estudios/carrera/@codigo
    ```
7. Código de las asignaturas que estudian mujeres:
    ```
    //alumnos/alumno[sexo="Mujer"]/estudios/asignaturas/asignatura/@codigo
    ```
8. Nombre de los alumnos que matriculados en la asignatura a02:
    ```
    //alumnos/alumno[estudios/asignaturas/asignatura/@codigo='a02']/nombre/text()
    ```
9.  Códigos de las carreras que estudian los alumnos matriculados en alguna asignatura.
    ```
    //alumnos/alumno[estudios/asignaturas/asignatura]/estudios/carrera/@codigo
    ```
    La manera más correcta de hacerlo sería la siguiente:
    ```
    //alumnos/alumno/estudios[asignaturas/asignatura]/carrera/@codigo
    ```
10. Apellidos de todos los hombres:
    ```
    universidad/alumnos/alumno[sexo="Hombre"]/apellido1/text()|/universidad/alumnos/alumno[sexo="Hombre"]/apellido2/text()
    ```
11. Nombre de la carrera que estudia Víctor Manuel:
    ```
    /universidad/carreras/carrera[@id=/universidad/alumnos/alumno[nombre="Víctor Manuel"]/estudios/carrera/@codigo]/nombre/text()
    ```
12. Nombre de las asignaturas que estudia Luisa:
    <!--
        Se hace en dos partes, primero una la cual es saber el codigo de las asignaturas /universidad/alumnos/alumno[nombre="Luisa"]/estudios/asignaturas/asignatura/@codigo
        y despues el que corresponde a las asignaturas /universidad/asignaturas/asignatura/estudios/asignaturas/asignatura/@codigo]/nombre/text()
        Al final se mezcla el primero con el segundo para poder obtener los nombres que estamos buscando en este caso
    -->
    ```
    /universidad/asignaturas/asignatura[@id=/universidad/alumnos/alumno[nombre="Luisa"]/estudios/asignaturas/asignatura/@codigo]/nombre/text()
    ```
13. Primer apellido de los alumnos matriculados en Ingeniería del Software:
    <!--
        Cod. ing de software: //asignaturas/asignatura[nombre="Ingeniería del Software"]/@id
        Primer apellido: //alumnos/alumno/apellido1
        Ruta: //alumnos/alumno[estudios/asignaturas/asignatura/@codigo=//asignaturas/asignatura[nombre="Ingeniería del Software"]/@id]/apellido1
        OJO!! No es necesario poner corchetes después de @codigo
    -->
    ```
    //alumnos/alumno[estudios/asignaturas/asignatura/@codigo=//asignaturas/asignatura[nombre="Ingeniería del Software"]/@id]/apellido1
    ```
14. Nombre de las carreras que estudian los alumnos matriculados en la asignatura Tecnología de los Alimentos:
    ```
    /universidad/carreras/carrera[@id=/universidad/alumnos/alumno[estudios/asignaturas/asignatura[@codigo="a07"]]/estudios/carrera/@codigo]/nombre/text()
    ```
15. Nombre de los alumnos matriculados en carreras que no tienen subdirector:
    ```
    /universidad/alumnos/alumno[estudios/carrera/@codigo=/universidad/carreras/carrera[not(subdirector)]/@id]/nombre/text()
    ```
16. Nombre de los alumnos matriculados en asignaturas con 0 créditos prácticos y que estudien la carrera de I.T. Informática
    ```
    /universidad/alumnos/alumno[estudios/carrera/@codigo='c01' and estudios/asignaturas/asignatura[@codigo=/universidad/asignaturas/asignatura[creditos_practicos=0]/@id]]/nombre/text()
    ```
17. Nombre de los alumnos que estudian carreras cuyos planes son anteriores a 2002
    ```
    /universidad/alumnos/alumno[estudios/carrera/@codigo=/universidad/carreras/carrera[plan < 2002]/@id]/nombre/text()
    ```