Я очень новичок в XML / XSLT, и мне трудно разобраться в цикле по root - дочерним узлам и потомкам дочерних узлов.
Например, у меня есть файл XML, который связан с моим XSL-файлом, и в этом файле XML есть несколько дочерних узлов с потомками в нем. см. ниже
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="TEST.xsl"?>
<student>
<alumno id="001">
<nombre>Samuel</nombre>
<apellido>Van Bladel</apellido>
<email>Samuelvanbladel@gmail.com</email>
<foto><img width="800" height="800" alt="bla bla" src="test.png"/></foto>
<expediente>NX0001R</expediente>
<curso>1</curso>
<modulos>
<modulo1>
<modulonom>daw1</modulonom>
<nota>10</nota>
<comentario>Muy bien hecho hasta el techo</comentario>
</modulo1>
<modulo2>
<modulonom>daw2</modulonom>
<nota>10</nota>
<comentario>Muy bien hecho hasta el techo</comentario>
</modulo2>
</modulos>
</alumno>
</student>
Я понимаю, что иерархия здесь представляет собой student / alumno / modulos / modulo1 или modulo2, но когда я хотел бы провести l oop через них в моем XSL, я могу до ученика / выпускника или если Я выбираю студента / выпускника / по модулю я могу l oop по модулю, но я теряю информацию в alumno (имя, фамилия и т. Д. 1024 *), которую, как я понимаю, ожидают, потому что я внутри Модулоса, но я хотел бы знать, как я могу получить их, чтобы пройти через все вместе. XSL ниже:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="alumno">
<p>
<xsl:apply-templates select="nombre"/>
<xsl:apply-templates select="apellido"/>
<xsl:apply-templates select="curso"/>
<xsl:apply-templates select="modulonom"/>
<xsl:apply-templates select="nota"/>
<xsl:apply-templates select="comentario"/>
</p>
</xsl:template>
<xsl:template match="nombre">
Nombre: <span style="color:#ff0000">
<xsl:value-of select="."/></span>
<br />
</xsl:template>
<xsl:template match="apellido">
Apellido: <span style="color:#00ff00">
<xsl:value-of select="."/></span>
<br />
</xsl:template>
<xsl:template match="curso">
Curso: <span style="color:#00ff00">
<xsl:value-of select="."/></span>
<br />
</xsl:template>
<xsl:template match="modulonom">
Nombre Modulo: <span style="color:#00ff00">
<xsl:for-each select="."/></span>
<br />
</xsl:template>
<xsl:template match="nota">
Nota: <span style="color:#00ff00">
<xsl:for-each select="."/></span>
<br />
</xsl:template>
<xsl:template match="comentario">
Comentario: <span style="color:#00ff00">
<xsl:for-each select="."/></span>
<br />
</xsl:template>
</xsl:stylesheet>
XML теперь отображается в браузере:
Номер: Сэмюэль Апеллидо: Ван Бладель Курсо: 1
Но я хотел бы видеть вся информация в узле
Основной вопрос поста: 1. Почему не отображается "modulonom" / nota / "comentario", которые находятся под узлом "Alumno". 2. Из того, что я вижу, это может быть как-то связано с текущим узлом, в котором он находится, это Alumno, но Modulos находится внутри alumno, и именно здесь возникает мой вопрос. 3. Как исправить это, если это возможно?
Большое спасибо уже