XSL - Acceso al atributo de un elemento padre

 
Vista:

Acceso al atributo de un elemento padre

Publicado por Irene (1 intervención) el 03/11/2014 14:41:55
Buenas tardes.
Estoy haciendo un ejercicio para pasar un .xml a .txt mediante xsl. Tengo que acceder a cada convocatoria para saber si es igual o mayor que 4, y en tal caso escribir: el alumno con NIA [*NIA] va a la convocatoria [*CONVOCATORIA] en la asignatura [*ASIGNATURA]. Y tengo un problema a la hora de acceder al atributo NIA.


- Tengo el siguiente XML:


<?xml version="1.0" encoding="iso-8859-1"?>

<alumnos>
<alumno NIA="A200087542" titulacion="ITT">
<nombre>Antonio</nombre>
<apellido1>Fernández</apellido1>
<asignaturas>
<asignatura convocatoria="03" codigo="IIT-LST"/>
<asignatura convocatoria="02" codigo="IIT-ALG"/>
<asignatura convocatoria="01" codigo="IIT-FISI"/>
<asignatura convocatoria="04" codigo="IIT-AO"/>
<asignatura convocatoria="01" codigo="IIT-OPT"/>
<asignatura convocatoria="04" codigo="IIT-IT"/>
</asignaturas>
</alumno>
<alumno NIA="A200012785" titulacion="ITT">
<nombre>María</nombre>
<apellido1>Pernas</apellido1>
<asignaturas>
<asignatura convocatoria="01" codigo="IIT-FISI"/>
<asignatura convocatoria="02" codigo="IIT_FISII"/>
<asignatura convocatoria="01" codigo="IIT-MAOD"/>
<asignatura convocatoria="01" codigo="IIT-FIA"/>
<asignatura convocatoria="02" codigo="IIT-EDO"/>
</asignaturas>
</alumno>
</alumnos>



- Y he realizado el siguiente XSL:

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text"/>

<xsl:template match="/">

<xsl:for-each select="alumnos/alumno/asignaturas/asignatura">
<xsl:if test="@convocatoria>=04">
El alumno <xsl:value-of select="alumnos/alumno/@NIA"/> va en la convocatoria <xsl:value-of select="@convocatoria"/> en la asignatura <xsl:value-of select="@codigo"/>.
</xsl:if>
</xsl:for-each>

</xsl:template>

</xsl:stylesheet>


- Y da el siguiente resultado:

El alumno va en la convocatoria 04 en la asignatura IIT-AO.

El alumno va en la convocatoria 04 en la asignatura IIT-IT.

El alumno va en la convocatoria 05 en la asignatura IIF-RC.

El alumno va en la convocatoria 04 en la asignatura IIF-IAI.


¿Cómo puedo hacer para acceder a la ruta donde está el atributo NIA y que aparezca?

Muchas gracias de antemano. Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Acceso al atributo de un elemento padre

Publicado por kakaroto (1 intervención) el 31/01/2015 18:34:21
Buenas Irene,
Con este código te saca la salida que necesitas:

<xsl:for-each select="alumnos/alumno/asignaturas/asignatura">
<xsl:if test="@convocatoria>=04">
<xsl:text>El alumno </xsl:text>
<xsl:value-of select="../../@NIA"/>
<xsl:text> va en la convocatoria </xsl:text>
<xsl:value-of select="@convocatoria"/>
<xsl:text> en la asignatura </xsl:text>
<xsl:value-of select="@codigo"/>
<xsl:text>&#13;&#10;</xsl:text>
</xsl:if>
</xsl:for-each>

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar