Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Reddington en 4 Abril 2019, 16:55 pm



Título: Comparar dos atributos en XSLT
Publicado por: Reddington en 4 Abril 2019, 16:55 pm
!Buenas!

Necesito comparar dos atributos en XSLT para que me muestre unos datos. Si existe otra forma de hacerlo, estoy abierto a ideas.

Tengo un XML donde aparecen varios Alumnos de esta forma:

Código:
        <alumno>
        <nombre>Guadalupe</nombre>
        <apellido>Lotas</apellido>
        <DNI>54368436</DNI>
        <fechanacimiento>
            <dia>17</dia>
            <mes>10</mes>
            <año>1999</año>
        </fechanacimiento>
        <matriculado asignatura="LM" nota="SB"/>
        <matriculado asignatura="AD" nota="SS"/>
    </alumno>

Y también una asignaturas de esta forma:

Código:
<asignaturas>
    <asignatura codigo="POO">
        <titulo>Programación orientada a objetos</titulo>
        <curso>Primero</curso>
    </asignatura>
    <asignatura codigo="AD">
        <titulo>Acceso a datos</titulo>
        <curso>Segundo</curso>
    </asignatura>
    <asignatura codigo="ED">
        <titulo>Entornos de desarrollo</titulo>
        <curso>Primero</curso>
    </asignatura>
    <asignatura codigo="LM">
        <titulo>Lenguajes de Marcas</titulo>
        <curso>Primero</curso>
    </asignatura>
</asignaturas>

Como se puede ver, el alumno esta matriculado en una de ellas y esta en forma de atributo, y el código de cada asignatura también. Necesito que en una tabla me aparezca el curso de la asignatura que el alumno esta matriculado.

Y esto es lo que llevo realizado:

Código:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:output method="html"/>

  <xsl:template match="universidad">
  
  <html>
  
  <head></head>
  
  <body>
    
    <h2>ALUMNOS</h2>
    
    <xsl:apply-templates select="alumnos/alumno" mode="tabla"/>
  
  </body>
  
  </html>
  </xsl:template>
  
  
  
  <xsl:template match="matriculado">
  
  <xsl:value-of select="@asignatura"/>,
  
  </xsl:template>
  
  
  <xsl:template match="alumno" mode="tabla">
  
  <b><xsl:value-of select="nombre"/></b>
  
  <table border="2">
  
<tr>
    <th>Titulo</th>
    <th>Curso</th>
    <th>Nota</th>
</tr>

 <tr>
  <td><xsl:apply-templates select="matriculado"/></td>
  <td>prueba</td>

  <td><xsl:value-of select="matriculado/@nota"/></td>
  </tr>
    
  </table>
  
  <br></br>
  
  </xsl:template>
  
  

</xsl:stylesheet>

Y en donde tengo prueba, necesito que se muestre el curso de la asignatura en cuestión. ¿Como hago para que se muestre?.

Agradecería mucho una ayuda, llevo atascado en esto mas tiempo de lo previsto... Muchas gracias de antemano.