XSLT преобразование изображения - PullRequest
0 голосов
/ 20 августа 2009

Учитывая следующее XSLT, которое, как я знаю, неверно.

Я хочу извлечь некоторые данные из базы данных в файл XML и использовать этот XSLT для получения таблицы HTML. Я делаю следующее.

  1. экстракт в IDataReader - объекте [3], содержащем:
    • "ALFKI"
    • "Obere str.57"
    • a byte[14205] (удостоверение личности и изображение)
  2. Я загружаю IDataReader в MemoryStream
  3. Я применяю XSL к MemoryStream, в результате получаю строку

Проблема в том, что я не могу справиться с ситуацией с изображением - в моей базе данных есть фактическое изображение, а не путь к нему.

Какие модификации нужно сделать?

<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>

Ответы [ 2 ]

2 голосов
/ 20 августа 2009

Если у вас есть изображение только в базе данных, вам нужно написать обработчик для извлечения изображения из базы данных и отображения его в теге изображения. Лучшим способом было бы написать собственный обработчик .ashx, который делает это, а затем вызвать его из тега изображения, сгенерированного с помощью XSLT, например.

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

Здесь есть статья о CodeProject, которая должна помочь .

0 голосов
/ 20 августа 2009

Если <Picture> выводится как XML в кодировке Base64, вы могли бы встроить его прямо в HTML , например:

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

Firefox понимает это, IE не понимает (IIRC) - так что это не самый переносимый подход.

Кроме того, он раздувает результирующий документ, и пользовательские агенты не могут кэшировать изображение по отдельности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...