C#使用XSLT实现xsl、xml与html相互转换

目录

  • 一、转为html文档
    • 1、xsl文件
    • 2、转换
    • 3、结果
  • 二、转为xml文档
    • 1、prices.xsl
    • 2、转换XsltArgumentList.AddExtensionObject
  • 三 、调用XSL参数
    • 1、xml文件
    • 2、order.xsl
    • 3、转换
  • 四、使用 XML 控件
    XML文件
    books.xml:
    The Autobiography of Benjamin Franklin - 锐客网BenjaminFranklin8.99The Confidence Man - 锐客网HermanMelville11.99The Gorgias - 锐客网Plato9.99

    【C#使用XSLT实现xsl、xml与html相互转换】
    一、转为html文档
    1、xsl文件
    books.xsl:
    Price List - 锐客网


    2、转换
    将books.xml按照books.xsl定义的格式转换成out.html
    XslCompiledTransform trans = new XslCompiledTransform(); trans.Load(@"..\..\books.xsl"); trans.Transform(@"..\..\books.xml", "out.html");


    3、结果
    out.html:
    Price List - 锐客网
    The Autobiography of Benjamin Franklin8.99
    The Confidence Man11.99
    The Gorgias9.99


    二、转为xml文档
    1、prices.xsl
    Price conversion factor


    2、转换XsltArgumentList.AddExtensionObject
    在以下示例中,样式表使用 XSLT 扩展对象要转换的书籍价格。
    using System; using System.IO; using System.Xml; using System.Xml.XPath; using System.Xml.Xsl; public class Sample {public static void Main() {// Create the XslCompiledTransform and load the stylesheet.XslCompiledTransform xslt = new XslCompiledTransform(); xslt.Load("prices.xsl"); // Create an XsltArgumentList.XsltArgumentList xslArg = new XsltArgumentList(); // Add an object to calculate the new book price.BookPrice obj = new BookPrice(); xslArg.AddExtensionObject("urn:price-conv", obj); using (XmlWriter w = XmlWriter.Create("output.xml")){// Transform the file.xslt.Transform("books.xml", xslArg, w); }}// Convert the book price to a new price using the conversion factor.public class BookPrice{private decimal newprice = 0; public decimal NewPriceFunc(decimal price, decimal conv){decimal tmp = price*conv; newprice = decimal.Round(tmp, 2); return newprice; }}}


    三 、调用XSL参数
    1、xml文件
    order.xml
    Represents a customer orderThe Handmaid's Tale - 锐客网19.95Americana - 锐客网16.95


    2、order.xsl
    total>


    3、转换
    下面的示例使用AddParam方法来创建表示当前日期和时间的参数。
    using System; using System.IO; using System.Xml; using System.Xml.Xsl; public class Sample{public static void Main(){// Create the XslCompiledTransform and load the stylesheet.XslCompiledTransform xslt = new XslCompiledTransform(); xslt.Load("order.xsl"); // Create the XsltArgumentList.XsltArgumentList xslArg = new XsltArgumentList(); // Create a parameter which represents the current date and time.DateTime d = DateTime.Now; xslArg.AddParam("date", "", d.ToString()); // Transform the file.using (XmlWriter w = XmlWriter.Create("output.xml")){xslt.Transform("order.xml", xslArg, w); }}}


    四、使用 XML 控件 有时候你可能希望把带有其他内容的转换后的 HTML 输出和 Web 控件组合在一起,XML 控件在页面独立的部分显示 XSL 转换后的结果:
    ID="Xml1" runat="server" DocumentSource="DvdList.xml"TransformSource="DvdList.xslt">

    注意: 你也可以用编码中XmlDocument 对象赋给 Document 属性,或者把一个包含 XML 内容的字符串赋给 DocumentContent 属性,而不是使用 DocumentSource 属性。类似的,你可以一个 XslTransform 对象值赋给 Transform 属性来提供 XSLT 信息。
    到此这篇关于C#使用XSLT实现xsl、xml与html相互转换的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

      推荐阅读