Ejercicio 508
Consideremos el siguiente documento XML:
<?xml version="1.0" encoding="UTF-8"?>
<inventario>
<producto codigo="P1">
<peso unidad="kg">10</peso>
<nombre>Ordenador</nombre>
<lugar edificio="B">
<aula>10</aula>
</lugar>
</producto>
<producto codigo="P2">
<peso unidad="g">500</peso>
<nombre>Switch</nombre>
<lugar edificio="A">
<aula>6</aula>
</lugar>
</producto>
</inventario>
Diseña el fichero XSLT que permita obtener la siguiente salida en HTML:
Solución
Debemos añadir una cabecera al documento XML (suponiendo que el nombre del fichero XSLT es 508.xsl
):
<?xml-stylesheet type="text/xsl" href="508.xsl"?>
Hoja XSL:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="utf-8" indent="yes"/>
<xsl:template match="/">
<html>
<head>
<title>Resultado HTML</title>
</head>
<body>
<ul>
<xsl:for-each select="inventario/producto">
<li>
Elemento
<xsl:value-of select="./@codigo"/>
<ul>
<li>
Nombre:
<xsl:value-of select="nombre"/>
</li>
<li>
Peso:
<xsl:value-of select="peso"/>
<xsl:value-of select="peso/@unidad"/>
</li>
</ul>
</li>
</xsl:for-each>
</ul>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Documento HTML de salida:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Resultado HTML</title>
</head>
<body>
<ul>
<li>
Elemento
P1
<ul>
<li>
Nombre:
Ordenador
</li>
<li>
Peso:
10kg
</li>
</ul>
</li>
<li>
Elemento
P2
<ul>
<li>
Nombre:
Switch
</li>
<li>
Peso:
500g
</li>
</ul>
</li>
</ul>
</body>
</html>