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.
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
0