我爱我家

我不去想是否能够成功,既然选择了远方,便只顾风雨兼程......
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

XslTransform和XslArgumentList

Posted on 2006-07-05 16:13  晓白  阅读(222)  评论(0)    收藏  举报

XslTransform建立在一个流拉模型(streaming pull mode)上。因此可以把几个转换连接在一起。

private void button1_Click(object sender, System.EventArgs e)
  {
   XPathDocument doc =new XPathDocument("booksxpath.xml");
   XslTransform transForm = new XslTransform();
   transForm.Load("books.xsl");
   //下面的文件流将会被输出
   FileStream fs = new FileStream("booklist.html",FileMode.Create);
   //创建一个浏览器
   XPathNavigator nav = ((IXPathNavigable)doc).CreateNavigator();
   //用transForm输出文件
   transForm.Transform(nav,null,fs);
  }

XslArgumentList,这是把对象和方法绑定到名称空间上的一种方式,绑定好后,就可以在转换中调用该方法。

  private void button1_Click(object sender, System.EventArgs e)
  {
   XPathDocument doc = new XPathDocument("booksxpath.xml");
   XslTransform transform = new XslTransform();
   transform.Load("booksarg.xsl");
   XmlWriter xw = new XmlTextWriter("argSample.xml",null);

   XsltArgumentList argBook = new XsltArgumentList();
   BookUtils bu = new BookUtils();

   argBook.AddExtensionObject("urn:ProCSharp",bu);
   XPathNavigator nav = ((IXPathNavigable)doc).CreateNavigator();
   transform.Transform(nav,argBook,xw);
   xw.Close();
   
  }

  //简单的测试类
  public class BookUtils
  {
   public BookUtils()
   {
   }
   public string ShowText()
   {
    return "This came from the ShowText method!";
   }
  }