Usar imágenes con XSLT

Maria Jesus
05 de Enero del 2002
Como se pueden incluir imagenes en un documento XSLT?

Tengo la siguiente DTD:

<!NOTATION gif SYSTEM "Psp.exe">
<!NOTATION jpg SYSTEM "Psp.exe">
<!ENTITY foto1 SYSTEM "foto1.jpg" NDATA jpg>
<!ENTITY foto2 SYSTEM "foto2.gif" NDATA gif>
<!ELEMENT ListadoLibros (libro)+>
<!ELEMENT libro (titulo, autor+, editorial, isbn, comentario?,prestado?,foto?)>
<!ATTLIST libro id ID #REQUIRED>
<!ATTLIST libro fecha_adquisicion CDATA "">
<!ATTLIST libro precio CDATA "" >
<!ATTLIST libro paginas CDATA "" >
<!ATTLIST libro tipo (informatica | novela | viajes | turismo | enciclopedia | matematicas | relatos ) "informatica" >

<!ELEMENT prestado (fecha, aquien)>
<!ELEMENT titulo (#PCDATA)>
<!ELEMENT autor (nombre, apellidos)>
<!ELEMENT editorial (#PCDATA)>
<!ELEMENT isbn (#PCDATA)>
<!ELEMENT comentario (#PCDATA)>
<!ELEMENT fecha (#PCDATA)>
<!ELEMENT aquien (#PCDATA)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT apellidos (#PCDATA)>
<!ELEMENT foto EMPTY>
<!ATTLIST foto portada ENTITY #REQUIRED>

He construido el documento XML y es válido. Pero al hacer el documento XSLT no aparece la imagen en el navegador.
Incluyo la imagen de esta manera:

<xsl:template match="foto"> <img src="{unparsed-entity-uri(@portada)}" /> </xsl:template>

Antes de la orden anterior he escrito lo siguiente:
<xsl:apply-templates select="foto" />

Un saludo
Maria Jesus

Joaquin
05 de Enero del 2002
Hola Maria....

Porque no nos envias mejor un ejemplo del XML que de la DTD.

Un saludo

Maria Jesus
05 de Enero del 2002
Aqui va el texto XML:

<?xml version="1.0" encoding ="ISO-8859-1" ?>
<?xml-stylesheet href="listadolibros.xsl" type="text/xsl"?>
<!DOCTYPE ListadoLibros SYSTEM "listadolibros.dtd">

<ListadoLibros>
<libro id="1" fecha_adquisicion="10/Nov/2001" precio="4.500 pts">
<titulo>XML a través de ejemplos</titulo>
<autor><nombre>Abrahan</nombre><apellidos>Gutierrez</apellidos></autor>
<autor><nombre>Raul</nombre><apellidos>Martinez</apellidos></autor>
<editorial>Rama</editorial> <isbn>84-7897-455-5</isbn>
<foto portada="foto1"/>
<comentario>Este es el libro con los primeros pasos sobre XML</comentario>
</libro>

<libro id="2" fecha_adquisicion="8/Mayo/2000" precio="4.900 pts" paginas="540">
<titulo>Desarrollo de aplicaciones en entornos de 4ª generación y con herramientas Case</titulo>
<autor><nombre>Maria Jesús</nombre><apellidos>Ramos</apellidos></autor>
<autor><nombre>Alicia</nombre> <apellidos>Ramos</apellidos></autor>
<autor><nombre>Fernando</nombre> <apellidos>Montero</apellidos></autor>
<editorial>McGrawHill</editorial> <isbn>84-481-2599-1</isbn>
<comentario>Este libro trata sobre la base de datos Oracle. Se verá el Lenguaje SQL, el lenguaje de programación
PL/SQL y herramientas de desarrollo de Oracle. Forms 5 y Reports 3</comentario>
<prestado><fecha> Enero 2001</fecha> <aquien>Ana</aquien></prestado>
<foto portada="foto2"/>
</libro>

<libro id="3" fecha_adquisicion="10/Dic/2001" precio="1.500 pts" tipo="relatos">
<titulo>Diccionario del diablo</titulo>
<autor><nombre>Ambrose</nombre><apellidos>Bierce</apellidos></autor>
<editorial>Letras universales</editorial> <isbn>84-376-1760-X</isbn>
<comentario>Este diccionario tienen como objetivos: iluminar a las almas que prefieren el vino seco al dulce,
la razon al sentimiento, el ingenio al humor y un ingles pulido al habla dialectal</comentario>
</libro>


</ListadoLibros>

Joaquin Bravo
05 de Enero del 2002
Hola Maria

Nunca he utilizado el 'unparsed-entity-uri' pero por lo que estoy mirando por Internet, me parece que lo haces bien.

Si miras esta dirección:

http://www.dpawson.co.uk/xsl/sect2/notation.html

veras que hay un ejemplo muy parecido al tuyo y hacen exactamente lo mismo.

¿Con que procesador de XSLT estas realizando la transformación? Por lo que veo al poner la XSLT en la cabecera del documento XML es que estes intentando visualizarlo en el IE5 ¿es asi?. Y me parece que debes estar utilizando una versión de la MSXML que todavía no soportaba esta función.

Si miras esta dirección:

http://www.xmlhack.com/read.php?item=806

y entenderas lo que te digo.

Lo que te recomiendo es que pruebas con otro procesadores de XSLT para asegurarte en un principio que la XSLT es correcta y funcione (p. ej. Saxon) ... Y si funciona prueba a actualizar la versión de la MSXML que esta utilizando tu explorador. Podras obtener más información sobre el tema en:

http://www.netcrucible.com/xslt/msxml-faq.htm.

Aunque si este problema te esta pasando a ti, le puede pasar a otros, por lo que igual lo mejor es que cambies la forma de referenciar las imágenes y te olvides de declararlas como entidades en la DTD..

Ya nos diras algo.

Un saludo.