2009-08-20 4 views
0

Considérant le XSLT suivant, que je sais est incorrect.conversion de picure XSLT

Je souhaite extraire des données de la base de données dans un fichier XML et utiliser ce fichier XSLT pour obtenir un tableau HTML. Je fais ce qui suit.

  1. extrait dans un IDataReader - un ojbect [3] contenant:
    • "ALFKI"
    • "Obere str.57"
    • un byte[14205] (id et image)
  2. je charge le IDataReader dans un MemoryStream
  3. -je appliquer la XSL au MemoryStream, j'obtiens une chaîne à la suite

Le problème est que je ne peux pas gérer la situation de l'image - dans ma base de données que j'ai l'image réelle, pas le chemin d'accès.

Quelles sont les modifications à effectuer?

<xsl:stylesheet 
    xmlns:xsl='http://www.w3.org/1999/XSL/Transform' 
    version='1.0' 
> 
    <xsl:template match='CustomersOrdersDataSet'> 
    <STYLE> 
     BODY { 
     font-family: verdana; 
     font-size: 9pt; 
     } 
     TD { 
     font-size: 8pt 
     } 
    </STYLE> 
    <TABLE WIDTH='100%' BORDER='0'> 
     <xsl:apply-templates select='CustomersOrders' /> 
    </TABLE> 
    </xsl:template> 

    <xsl:template match='CustomersOrders'> 
    <TABLE WIDTH='100%' HEIGHT='100' BORDER='0'> 
     <TR> 
     <TD valign='top'> 
      <B>Customer ID:</B> 
     </TD> 
     <TD valign='top'> 
      <xsl:value-of select='CustID' /> 
     </TD> 
     </TR> 
     <TR> 
     <TD valign='top'> 
      <B>Customer Address:</B> 
     </TD> 
     <TD valign='top'> 
      <xsl:value-of select='CustomerAddress' /> 
     </TD> 
     </TR> 
     <TR> 
     <TD valign='top'> 
      <B>Picture:</B> 
     </TD> 
     <TD valign='top'> 
      <xsl:value-of select='Picture' /> 
     </TD> 
     </TR> 
    </TABLE> 
    </xsl:template> 
</xsl:stylesheet> 
+0

Je ne pense pas que cela puisse être répondu à moins de dire à quoi ressemble votre élément XML , et * ce qui ne fonctionne pas * maintenant. – Tomalak

+0

bien .. l'image <. élément de ce que je reçois est quelque chose comme ASKKNIU4545KJKHKJUJHO3 ... qui est la transformation ASCII des octets qui représentent l'image –

Répondre

2

Si vous avez l'image dans la base de données que vous aurez besoin d'écrire un gestionnaire pour tirer l'image de la base de données et l'afficher dans une balise d'image. Le meilleur moyen serait d'écrire un gestionnaire .ashx personnalisé qui le fait et ensuite l'appeler à partir de la balise d'image générée via votre XSLT par exemple.

<img src="ImgHandler.ashx?imgid=1" width="50" height="50" alt="alttext" /> 

Il existe un article sur CodeProject here which should help.

0

Si la <Picture> est sortie en base64 codé dans le fichier XML, vous pourraitembed it right into the HTML comme ceci:

<!-- ... --> 
<TD valign='top'> 
    <!-- needs to be the correct MIME type, obviously --> 
    <img alt="Embedded Image" src=" 
    {concat('data:image/png;base64,', Picture)} 
    " /> 
</TD> 
<!-- ... --> 

Firefox comprendre, qui ne représentent pas (IIRC) - c'est donc pas le plus portable approche. En dehors de cela, il gonfle le document de résultat et les agents utilisateurs ne peuvent pas mettre en cache l'image individuellement.