源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

基于XSLT调试的相关问题

  • 时间:2020-10-14 03:24 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:基于XSLT调试的相关问题
新建控制台程序CAStudy.在应用程序中,添加books.xml,belowAvg.xsl 代码分别如下: [b]books.xml[/b] <?xml version='1.0'?> <!-- This file represents a fragment of a book store inventory database --> <bookstore>   <book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">     <title>The Autobiography of Benjamin Franklin</title>     <author>       <first-name>Benjamin</first-name>       <last-name>Franklin</last-name>     </author>     <price>8.99</price>   </book>   <book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">     <title>The Confidence Man</title>     <author>       <first-name>Herman</first-name>       <last-name>Melville</last-name>     </author>     <price>11.99</price>   </book>   <book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6">     <title>The Gorgias</title>     <author>       <name>Plato</name>     </author>     <price>9.99</price>   </book> </bookstore> books.xml一看就知道是一个bookstore,里面包含了三个book. 每个book都会有一些attribute和property.例如genre,publicationdate,ISBN 就是attribute.而诸如title,author,price 就是book的property 了。 [b]belowAvg.xsl:[/b] <?xml version='1.0'?> <xsl:stylesheet version="1.0"       xmlns:xsl="http://www.w3.org/1999/XSL/Transform">   <xsl:output method="xml" encoding="utf-8"/>   <xsl:template match="/">     <xsl:variable name="bookCount" select="count(/bookstore/book)"/>     <xsl:variable name="bookTotal" select="sum(/bookstore/book/price)"/>     <xsl:variable name="bookAverage" select="$bookTotal div $bookCount"/>     <books>       <!--Books That Cost Below Average-->       <xsl:for-each select="/bookstore/book">         <xsl:if test="price < $bookAverage">           <xsl:copy-of select="."/>         </xsl:if>       </xsl:for-each>     </books>   </xsl:template> </xsl:stylesheet> belowAvg.xsl:名字就代表了,小于平均值的xsl. XSLT: 可扩展样式表语言转换Extensible Stylesheet Transformation (XSLT) 这个belowAvg.xsl 主要就是将book.xml 中小于平均值的那些book找出来,输出成xml match=”/”:这样就可以匹配三个book节点了。 接着声明3个变量,bookCount,bookTotal,在第三个变量中使用$符号来引用前面声明的变量得到平均值。 接着进行for-each的循环,在循环里面进行if 测试,测试的条件是price < $bookAverage. < xml里面是< lt less than 的意思,同理> xml里面是> gt 就是great than的意思。 接着进行copy-of 操作,”.” 代表的就是self::node(),也就是book节点。 [img]http://files.jb51.net/file_images/article/201305/2013051312411265.png[/img]   [b]调试xslt 有两种方式:[/b] [b]第一种:使用VS[/b] 打开xsl,可以发现菜单多了XML,点击XML菜单的调试XSLT,然后选择book.xml 就可以进行调试了。 [img]http://files.jb51.net/file_images/article/201305/2013051312411266.png[/img] 同样F9设置断点, [b]第二种方法:使用代码.[/b] class XmlXsltDemo {     private const string sourceFile = @"books.xml";     private const string stylesheet = @"belowAvg.xsl";     private const string outputFile = @"output.xml";     public static void Main()     {         // Enable XSLT debugging.         XslCompiledTransform xslt = new XslCompiledTransform(true);         // Compile the style sheet.         xslt.Load(stylesheet);         // Execute the XSLT transform.         FileStream outputStream = new FileStream(outputFile, FileMode.Append);         xslt.Transform(sourceFile, null, outputStream);     } } 在这里由于使用的是相对路径,所以要将books.xml和belowAvg.xsl 属性修改如下: [img]http://files.jb51.net/file_images/article/201305/2013051312411267.png[/img] 还要将XslCompiledTransform xslt = new XslCompiledTransform(true); 参数传递为true,代表enableDebug. [b]就可以看到如下界面了:[/b] [img]http://files.jb51.net/file_images/article/201305/2013051312411268.png[/img]   使用代码调试的话,不需要设置断点,只要enableDebug为true的话,会自动在xsl中中断。 本人猜测估计是调用了Debugger.Break() 方法。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部