Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/12/2004, 22:14
Ktion
 
Fecha de Ingreso: diciembre-2003
Mensajes: 54
Antigüedad: 21 años, 2 meses
Puntos: 0
Hola,
por lo que veo en el xsl, utilizas el nodo "materia" que no esta definido en la estructura que dibujaste, segundo el if no tiene sentido porque no existe el atributo isbn en el nodo usuario.
La solución a la que llegue es esta:

Xml de ejemplo basado en tu dibujo:
Código:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="biblioteca.xsl"?>
<biblioteca>
	<libros>
		<libro isbn="L1">
			<titulo>Titulo1</titulo>
			<autor>Autor1</autor>
		</libro>
		<libro isbn="L2">
			<titulo>Titulo2</titulo>
			<autor>Autor2</autor>
		</libro>
		<libro isbn="L3">
			<titulo>Titulo3</titulo>
			<autor>Autor3</autor>
		</libro>
		<libro isbn="L4">
			<titulo>Titulo4</titulo>
			<autor>Autor4</autor>
		</libro>
		<libro isbn="L5">
			<titulo>Titulo5</titulo>
			<autor>Autor5</autor>
		</libro>
	</libros>
	<usuarios>
		<usuario dni="20000001">
			<nombre>Nombre1</nombre>
			<prestamos>
				<prestamo isbn="L1">
					<fecha_prestamo>1/1/2004</fecha_prestamo>
					<retraso>1</retraso>
				</prestamo>
				<prestamo isbn="L6">
					<fecha_prestamo>2/1/2004</fecha_prestamo>
					<retraso>2</retraso>
				</prestamo>
			</prestamos>
		</usuario>
		<usuario dni="20000002">
			<nombre>Nombre2</nombre>
			<prestamos>
				<prestamo isbn="L3">
					<fecha_prestamo>2/2/2004</fecha_prestamo>
					<retraso>2</retraso>
				</prestamo>
			</prestamos>
		</usuario>
		<usuario dni="20000003">
			<nombre>Nombre3</nombre>
			<prestamos>
				<prestamo isbn="L4">
					<fecha_prestamo>1/1/2004</fecha_prestamo>
					<retraso>1</retraso>
				</prestamo>
				<prestamo isbn="L8">
					<fecha_prestamo>1/2/2004</fecha_prestamo>
					<retraso>1</retraso>
				</prestamo>
				<prestamo isbn="L1">
					<fecha_prestamo>1/3/2004</fecha_prestamo>
					<retraso>2</retraso>
				</prestamo>
			</prestamos>
		</usuario>
	</usuarios>
</biblioteca>
Xsl:
Código:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>
	<xsl:template match="/">
		<html>
			<head>
				<title>P5</title>
			</head>
			<body>
				<xsl:apply-templates select="/biblioteca/usuarios/usuario"/>
			</body>
		</html>
	</xsl:template>
	<xsl:template match="/biblioteca/usuarios/usuario">
		<p>
			<strong>Usuario: </strong><xsl:value-of select="nombre"/>
			<br/>
			<strong>D.N.I.: </strong><xsl:value-of select="@dni"/>
		</p>
		<ol>
			<xsl:call-template name="prestamos">
				<xsl:with-param name="libros" select="prestamos/prestamo/@isbn"/>
			</xsl:call-template>
		</ol>
	</xsl:template>
	<xsl:template name="prestamos">
		<xsl:param name="libros"/>
		<xsl:for-each select="/biblioteca/libros/libro[@isbn=$libros]">
			<li><xsl:value-of select="@isbn"/></li>
		</xsl:for-each>
	</xsl:template>
</xsl:stylesheet>
Resultado:
Código HTML:
<?xml version="1.0" encoding="utf-8"?>
<html>
	<head>
		<title>P5</title>
	</head>
	<body>
		<p><strong>Usuario: </strong>Nombre1<br/><strong>D.N.I.: </strong>20000001</p>
		<ol>
			<li>L1</li>
		</ol>
		<p><strong>Usuario: </strong>Nombre2<br/><strong>D.N.I.: </strong>20000002</p>
		<ol>
			<li>L3</li>
		</ol>
		<p><strong>Usuario: </strong>Nombre3<br/><strong>D.N.I.: </strong>20000003</p>
		<ol>
			<li>L1</li>
			<li>L4</li>
		</ol>
	</body>
</html> 
Los libros L6 del primer usuario y L8 del tercero no los muestra porque no estan en la lista de libros.

Saludos