最近做了个发邮件的接口,需要能够方便的修改邮件格式,所以就用了xslt文件作为一个模板,下面就是将xml转换为xslt,然后在xslt文件里面绑定数据,如下:
XslCompiledTransform RSSXslt = null;
MemoryStream memoryStream = null;
try
{
RSSXslt = new XslCompiledTransform();
//检查xlst文件是否有效存在
if (File.Exists(vXsltPath))
{
//加载xlst文件内容
RSSXslt.Load(vXsltPath);
memoryStream = new MemoryStream();
//将邮件的xml数据按xslt的要求进行转换,并存储在内存数据流中
RSSXslt.Transform(vXMLDoc,null,memoryStream);
//获取转换后的XML数据字符串内容
vBodyText = System.Text.UTF8Encoding.UTF8.GetString(memoryStream.ToArray());
//删除转换后XML数据字符串中的前后标志位
vBodyText = vBodyText.Substring(1,(vBodyText.Length - 1));
}
}
--------------------------------------------------------------------------------------------------------------------------------------------
<p>
共有<xsl:value-of select="/EmailInfoRoot/emMailInfo/EmailInfo/AttachmentCount"/>个附件,附档总页数
<xsl:variable name="pageCountSum" select="/EmailInfoRoot/EmailAttachments/EmailAttachment"/>
<xsl:value-of select="sum($pageCountSum/AttachmentPageCount) "/>
</p>
<p>附件名称:<table>
<tr>
<xsl:for-each select="/EmailInfoRoot/EmailAttachments/EmailAttachment">
<td>
<xsl:value-of select="EmailAttachmentName"/>
</td>
</xsl:for-each>
</tr>
</table>