C# XSLT图像转换

C# XSLT图像转换,c#,xslt,C#,Xslt,考虑以下XSLT,我知道这是不正确的 我想将数据库中的一些数据提取到一个XML文件中,并使用此XSLT获取一个HTML表。我正在做以下工作 在IDataReader中提取-包含以下内容的ojbect[3]: “阿尔夫基” “奥贝街57号” 字节[14205](id和图片) 我将IDataReader加载到MemoryStream 我将XSL应用于内存流,得到一个字符串作为结果 问题是我无法处理图片的情况-在我的数据库中,我有实际的图片,而不是它的路径 需要做哪些修改 <xsl:styl

考虑以下XSLT,我知道这是不正确的

我想将数据库中的一些数据提取到一个XML文件中,并使用此XSLT获取一个HTML表。我正在做以下工作

  • IDataReader
    中提取-包含以下内容的ojbect[3]:
    • “阿尔夫基”
    • “奥贝街57号”
    • 字节[14205](id和图片)
  • 我将
    IDataReader
    加载到
    MemoryStream
  • 我将XSL应用于
    内存流
    ,得到一个字符串作为结果
  • 问题是我无法处理图片的情况-在我的数据库中,我有实际的图片,而不是它的路径

    需要做哪些修改

    <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>
    
    
    身体{
    字体系列:verdana;
    字号:9pt;
    } 
    运输署{
    字号:8pt
    }
    客户编号:
    客户地址:
    图片:
    
    如果数据库中只有图片,则需要编写处理程序从数据库中提取图片并将其显示在图像标记中。最好的方法是编写一个自定义的.ashx处理程序来执行此操作,然后通过XSLT生成的图像标记调用它

    <img src="ImgHandler.ashx?imgid=1" width="50" height="50" alt="alttext" />
    
    
    
    有一篇关于的文章。

    如果
    以XML编码的Base64形式输出,您可以这样做:

    <!-- ... -->
    <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)——因此这不是最可移植的方法


    除此之外,它会使结果文档膨胀,用户代理无法单独缓存图像

    我认为这是无法回答的,除非你告诉我你的XML元素是什么样子的,什么东西现在不起作用