100165646.htm
来自「C#高级编程(第三版),顶死你们。。 。up」· HTM 代码 · 共 250 行 · 第 1/3 页
HTM
250 行
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <body></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <table></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <xsl:apply-templates/></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </table> </span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </body> </span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </html> </span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </xsl:template></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <xsl:template match="bookstore"></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <xsl:apply-templates select="book"/></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </xsl:template></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <xsl:template match="book"></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <tr><td></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <xsl:value-of select="title"/></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </td><td></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <xsl:value-of select="price"/></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </td></tr></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </xsl:template></span></p>
<p class="a6" style="MARGIN-TOP: 0cm; BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US"></xsl:stylesheet></span></p>
<h4 style="FTEL: 21.45pt"><span style="FONT-FAMILY: 黑体">使用</span><span lang="EN-US">XsltArgumentList</span></h4>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">前面提到了</span><span lang="EN-US">XsltArgumentList</span><span style="FONT-FAMILY: 宋体">,这是把对象和方法绑定到命名空间上的一种方式。绑定好后,就可以在转换过程中调用该方法。下面的示例说明了它的具体工作方式</span><span lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">在</span><span lang="EN-US">XPathXSLSample4</span><span style="FONT-FAMILY: 宋体">中</span><span lang="EN-US">)</span><span style="FONT-FAMILY: 宋体">。将下面突出显示的代码添加到示例代码中:</span></p>
<p class="a6" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><a ftel="OLE_LINK29"><span lang="EN-US">private void button1</span></a><span lang="EN-US" style="FONT-FAMILY: 'Baskerville BE Regular'">_</span><span lang="EN-US">Click(object sender, System.EventArgs e)</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">{</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> //new XPathDocument</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> XPathDocument doc=new XPathDocument("..\\..\\..\\booksxpath.xml");</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> //new XslTransform</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> XslTransform transForm=new XslTransform();</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> transForm.Load("..\\..\\..\\booksarg.xsl");</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> //new XmlTextWriter since we are creating a new XML document</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> XmlWriter xw=new XmlTextWriter("..\\..\\..\\argSample.xml",null);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> //create the XsltArgumentList and new BookUtils object</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> XsltArgumentList argBook=new XsltArgumentList();</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> BookUtils bu=new BookUtils();</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> //this tells the argumentlist about BookUtils</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> argBook.AddExtensionObject("urn:ProCSharp",bu);</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> //new XPathNavigator</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> XPathNavigator nav=doc.CreateNavigator();</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> //do the transform</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> transForm.Transform(nav,argBook,xw);</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> xw.Close();</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">}</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">//simple test class</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">public class BookUtils</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">{</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> public BookUtils(){}</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> public string ShowText()</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> {</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> return "This came from the ShowText method!"; </span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> }</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">}</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">下面是转换的结果。其结果已进行了格式化,以便于查看</span><span lang="EN-US">(argSample.xml)</span><span style="FONT-FAMILY: 宋体">:</span></p>
<p class="a6" style="MARGIN-TOP: 8.15pt; BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US"><books></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <discbook></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <booktitle>The Autobiography of Benjamin Franklin</booktitle></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <showtext>This came from the ShowText method!</showtext></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </discbook></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <discbook></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <booktitle>The Confidence Man</booktitle></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <showtext>This came from the ShowText method!</showtext></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </discbook></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <discbook></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <booktitle>The Gorgias</booktitle></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <showtext>This came from the ShowText method!</showtext></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </discbook></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <discbook></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <booktitle>The Great Cookie Caper</booktitle></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <showtext>This came from the ShowText method!</showtext></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </discbook></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <discbook></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <booktitle>A Really Great Book</booktitle></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <showtext>This came from the ShowText method!</showtext></span></p>
<p class="a6" style="BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </discbook></span></p>
<p class="a6" style="MARGIN-TOP: 0cm; BACKGROUND: #f2f2f2; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US"></books></span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">在本例中,我们定义一个新类</span><span lang="EN-US">BookUtils</span><span style="FONT-FAMILY: 宋体">。在这个类中有一个不起作用的方法,它返回字符串</span><span lang="EN-US">This came from the ShowText method!</span><span style="FONT-FAMILY: 宋体">。在</span><span lang="EN-US">button1</span><span lang="EN-US" style="FONT-FAMILY: 'Baskerville BE Regular'">_</span><span lang="EN-US">Click</span><span style="FONT-FAMILY: 宋体">事件中,像以前一样创建</span><span lang="EN-US">XPathDocument </span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US"> XslTransform</span><span style="FONT-FAMILY: 宋体">,但这次有一个不同。这次我们创建一个</span><span lang="EN-US">XML</span><span style="FONT-FAMILY: 宋体">文档,所以使用</span><span lang="EN-US">XMLWriter</span><span style="FONT-FAMILY: 宋体">来代替以前的</span><span lang="EN-US">FileStream</span><span style="FONT-FAMILY: 宋体">。下一个变化如下所示:</span></p>
<p class="a6" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">XsltArgumentList argBook=new XsltArgumentList();</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">BookUtils bu=new BookUtils();</span></p>
<p class="a6" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">argBook.AddExtensionObject("urn:ProCSharp",bu);</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">这段代码创建了</span><span lang="EN-US">XsltArgumentList</span><span style="FONT-FAMILY: 宋体">对象。接着创建</span><span lang="EN-US">BookUtils</span><span style="FONT-FAMILY: 宋体">对象的一个实例,在调用</span><span lang="EN-US">AddExtensionObject</span><span style="FONT-FAMILY: 宋体">方法时,其参数是扩展的命名空间和要调用方法的对象。在调用</span><span lang="EN-US">Transform</span><span style="FONT-FAMILY: 宋体">时,其参数是</span><span lang="EN-US">XsltArgumentList (argBook)</span><span style="FONT-FAMILY: 宋体">、前面创建的</span><span lang="EN-US">XPathNavigator</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US">XmlWriter</span><span style="FONT-FAMILY: 宋体">对象。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">下面是</span><span lang="EN-US">booksarg.xsl</span><span style="FONT-FAMILY: 宋体">文档</span><span lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">基于</span><span lang="EN-US">books.xsl)</span><span style="FONT-FAMILY: 宋体">:</span></p>
<p class="a6" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US"><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> xmlns:bookUtil="urn:ProCSharp"></span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <xsl:output method="xml" indent="yes"/></span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <xsl:template match="/"></span></p>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?