精华内容
下载资源
问答
  • java swing 编写的xslt调试工具,含源码,需visualswing4eclipse插件的支持,有打包的可执行jar,有jdk就可运行,可方便调试xml json 格式的文本,由xslt技术转换为其它结构
  • 本篇文章是对XSLT调试的相关问题进行了详细的分析介绍,需要的朋友参考下
  • 使用应用模板的顺序,应用模板的上下文以及按时间进行概要分析的输出来调试XSL模板。 目前,是概念验证。 您将需要lxml才能工作。 使用 python lxml_debug.py XSL XML 或具有与HeadHunter中使用的扩展名相似的...
  • xslt_即时调试XSLT

    2020-06-21 20:36:25
    现在,您可以获得XSLT调试器,甚至是完整的集成开发环境(IDE),但您可能并不总是希望通过启动调试器的所有动作来检查单个值。 对于像我这样的人来说,尤其如此,他们使用普通的旧XEmacs(以我的情况为xslide)来...

    xslt

    早在转向调试器之前,大多数开发人员都以其编程语言中的printprintf语句开始,以尝试记录可能有助于弄清其代码错误行为的记录值。 XSLT也不例外。 现在,您可以获得XSLT调试器,甚至是完整的集成开发环境(IDE),但您可能并不总是希望通过启动调试器的所有动作来检查单个值。 对于像我这样的人来说,尤其如此,他们使用普通的旧XEmacs(以我的情况为xslide)来编辑XSLT转换。

    xsl:message通常是最好的解决方案。 您可以简单地将消息插入正确模板中的正确位置,作为快速调试工具。 主要缺点是没有xsl:message输出的标准规范:它可以采用弹出对话框,日志文件的形式,或者-对于命令行XSLT处理器-标记为标准显示错误输出。 通常,这是小事。 快速浏览所有工具的文档将告诉您它如何呈现处理器消息。 尽管表示形式可能存在差异,但是xsl:message是它是标准指令,因此可以跨处理器移植。 在这里,我将介绍一些技巧,以使xsl:message调试更加有效。

    简单消息

    清单1(labels.xml)是我将在整个讨论过程中使用的源文档。 这是一个简单的XML文档,其中包含用于邮寄地址标签的数据。

    清单1.邮件标签(labels.xml)
    <?xml version="1.0"?>
    <labels>
     <label>
      <name>Thomas Eliot</name>
      <address>
       <street>3 Prufrock Lane</street>
       <city>Hartford</city>
       <state>CT</state>
      </address>
     </label>
     <label>
      <name>Ezra Pound</name>
      <address>
       <street>45 Usura Place</street>
       <city>Hailey</city>
       <state>ID</state>
      </address>
     </label>
     <label>
      <name>William Williams</name>
      <address>
       <street>100 Wheelbarrow Blvd</street>
       <city>Patterson</city>
       <state>NJ</state>
      </address>
     </label>
    </labels>

    清单2(plainmsg.xslt)是一个简单的样式表。 在其中,我使用xsl:message来显示从简单XPath表达式获得的地址的节点集。

    清单2.使用普通xsl:message进行调试的示例(plainmsg.xslt)
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                    version="1.0">
    
      <xsl:template match="labels">
        <xsl:call-template name="get-addresses"/>
      </xsl:template>
    
      <xsl:template name="get-addresses">
        <xsl:variable name="addresses" select="label/address"/>
        <xsl:message>
          <xsl:copy-of select="$addresses"/>
        </xsl:message>
        <!-- Actually do something useful here -->
      </xsl:template>
    
      <!-- Suppress all other element display -->
      <xsl:template match="*"/>
    
    </xsl:transform>

    该消息仅显示每个标签及其后代的地址元素。 可以通过addresses变量访问有问题的XPath表达式label/address 。 我可能会使用这种技术来发现常见的XPath错误,其中在元素名称中输入了错字,因此返回的节点集会意外为空。 这可能会在处理中进一步产生奇怪的影响。 通过使用此类调试消息,您可以发现问题更靠近源头。 需要注意的最重要的事情是,我使用xsl:copy-of而不是xsl:value-of将节点集放入消息中。 我使用4XSLT获得的输出是:

    $ 4xslt labels.xml plainmsg.xslt
    STYLESHEET MESSAGE:
    <address>
       <street>3 Prufrock Lane</street>
       <city>Hartford</city>
       <state>CT</state>
      </address><address>
       <street>45 Usura Place</street>
       <city>Hailey</city>
       <state>ID</state>
      </address><address>
       <street>100 Wheelbarrow Blvd</street>
       <city>Patterson</city>
       <state>NJ</state>
      </address>
    END STYLESHEET MESSAGE

    如果我改用xsl:value-of

    <xsl:message>
          <xsl:value-of select="$addresses"/>
        </xsl:message>

    -那么输出本来就没那么有用了:

    $ 4xslt labels.xml plainmsg.xslt
    STYLESHEET MESSAGE:
    <?xml version='1.0' encoding='UTF-8'?>
       3 Prufrock Lane
       Hartford
       CT
    
    END STYLESHEET MESSAGE

    这是因为xsl:value-of将其select表达式的结果转换为节点集中第一个节点的扁平字符串表示形式。 xsl:copy-of实际上将所有节点完整地复制为完整的标记,这是您通常需要的。

    显示上下文

    在更复杂的场景中,到处散布着许多模板和几条调试消息,在消息中呈现一些XPath上下文也可能很方便。 上下文节点本身通常是调试最常见错误的最方便的信息。 清单3是XSLT的片段,它说明了这一点:

    清单3. xsl:message指令的格式也可以显示序列化的上下文节点
    <xsl:message>
          <xsl:text>START MESSAGE HEADER
    </xsl:text>
          <xsl:text>CONTEXT NODE:
    </xsl:text>
          <xsl:copy-of select="."/>
          <xsl:text>
    STOP MESSAGE HEADER
    </xsl:text>
          <xsl:text>START MESSAGE BODY
    </xsl:text>
          <xsl:copy-of select="$addresses"/>
          <xsl:text>
    STOP MESSAGE BODY</xsl:text>
        </xsl:message>

    这会将消息格式化为标题和正文,并在标题中显示上下文节点( <xsl:copy-of select="."/> )。 请注意我所散布的“”实体:这些是换行实体,是在XSLT中强制回车的安全方法(只要未将其剥离为空白,这就是为什么我确保它们在xsl:text标记)。

    内省者小工具

    如果您的XSLT处理器支持EXSLT标准XSLT扩展的dyn模块,则在调试时您可以做更多的事情。 dyn模块提供了用于在运行时动态评估XPath表达式的工具。 您可以通过在运行时检查样式表本身来利用此功能来添加一些巧妙的调试技巧。 这类似于某些语言中所谓的自省 。 例如,我将添加一个小的实用程序模板来显示所有全局变量的值。 清单4是使用它的完整样式表(global-vars.xslt):

    清单4.一个脚本演示了如何使用动态评估来显示全局变量(global-vars.xslt)
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:transform
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      version="1.0"
    >
    
      <xsl:variable name="spam" select="'eggs'"/>
      <xsl:variable name="first-label" select="/labels/label[1]"/>
      <xsl:param name="monty" select="'python'"/>
    
      <xsl:template match="labels">
        <xsl:call-template name="get-addresses"/>
      </xsl:template>
    
      <xsl:template name="get-addresses">
        <xsl:variable name="addresses" select="label/address"/>
        <xsl:message>
          <xsl:call-template name="dump-globals"/>
        </xsl:message>
      </xsl:template>
    
      <!-- Suppress all other element display -->
      <xsl:template match="*"/>
    
    
      <!-- Cut and paste this template into your own scripts -->
      <xsl:template name="dump-globals"
        xmlns:exsl="http://exslt.org/common"
        xmlns:dyn="http://exslt.org/dynamic"
        >
        <!-- Get the current transform document element -->
        <!-- A -->
        <xsl:variable name="ctde" select="document('')/xsl:*"/>
        <xsl:text>GLOBAL VARIABLES:
    </xsl:text>
        <!-- B -->
        <xsl:for-each
          select="$ctde/xsl:variable|$ctde/xsl:param">
          <!-- C -->
          <xsl:variable name="value" select="dyn:evaluate(concat('$', @name))"/>
          <xsl:text>VARIABLE NAME:</xsl:text>
          <xsl:value-of select="@name"/><xsl:text>
    </xsl:text>
          <xsl:text>VARIABLE VALUE:</xsl:text>
          <xsl:choose>
            <!-- D -->
            <xsl:when test="exsl:object-type($value) = 'node-set'">
              <xsl:copy-of select="$value"/>
            </xsl:when>
            <xsl:otherwise>
              <xsl:value-of select="$value"/>          
            </xsl:otherwise>
          </xsl:choose>
          <xsl:text>
    </xsl:text>
        </xsl:for-each>
        <xsl:text>END GLOBAL VARIABLES
    </xsl:text>
      </xsl:template>
    
    </xsl:transform>

    这是4XSLT从此转换产生的输出,将其应用于labels.xml文档:

    $ 4xslt labels.xml global-vars.xslt 
    STYLESHEET MESSAGE:
    GLOBAL VARIABLES:
    VARIABLE NAME:spam
    VARIABLE VALUE:eggs
    VARIABLE NAME:first-label
    VARIABLE VALUE:<label>
      <name>Thomas Eliot</name>
      <address>
       <street>3 Prufrock Lane</street>
       <city>Hartford</city>
       <state>CT</state>
      </address>
     </label>
    VARIABLE NAME:monty
    VARIABLE VALUE:python
    END GLOBAL VARIABLES
    
    END STYLESHEET MESSAGE

    如您所见,结果是显示所有全局变量名称和值。 执行此技巧的代码是dump-globals模板,我将其设计为完全封装的,包括其所需的扩展名称空间。 您可以将此模板直接复制到自己的XSLT代码中以使用它,也可以将其复制到独立的XSLT文件中以进行导入。 只需调用<xsl:call-template name="dump-globals"/>即可使用它。 它将全局变量列表转储到输出中。 在清单4中 ,我从xsl:message的正文中调用它,以便它显示为消息内容。 我插入了以字母标记的注释,以便更清楚地说明dump-globals模板的工作原理。 以下各段解释每个带字母的部分。

    :我使用标准document('')表单来检索当前样式表作为源文档。 我将此样式表的document元素分配给ctde变量,以便可以随时访问顶级XSLT元素。 请注意,我小心使用xsl:*作为文档元素的名称测试。 这是因为xsl:stylesheetxsl:transform都是合法的文档元素名称,并且我不确定在特定脚本中将使用哪个名称。 该模板不适用于将文字结果元素用作 XSLT允许的根格式的样式表,但是无论如何您都不能在此类转换中包含真正的全局变量,因此您将不太可能使用dump-globals模板。

    Bxsl:for-each循环遍历顶级变量和参数元素。

    C :每个变量或参数元素都有一个name属性。 因为我有变量名,所以我要做的就是评估变量引用以获取其值。 我通过动态创建一个XPath表达式,采用当前变量名称并在美元符号$ 。 现在,我需要将结果字符串评估为XPath表达式。 这就是dyn:evaluate函数的dyn:evaluate 。它接受一个字符串并将其作为XPath表达式执行,并返回结果。 这样,我从每个全局变量或参数中获取值,并将其分配给$value供以后使用。

    D :显示变量名后,此代码显示值。 正如我上面提到xsl:copy-of在出于参考目的显示节点集时,通常使用xsl:copy-of最有用。 当显示数字,字符串和布尔值时, xsl:value-of是您想要的。 因为我不知道每个变量值是节点集还是其他类型的对象,所以我需要一种在运行时确定它的方法。 幸运的是,EXSLT在common模块中提供了另一个有用的功能exsl:object-type 。 该函数返回一个字符串,该字符串指示通过评估其参数而得到的XPath对象的类型。

    结论

    您可以将这些基本思想更进一步。 动态XPath表达式和document('')形式为处理技巧提供了很多可能性,甚至是调试之外。 另外,EXSLT还有许多其他有用的模块和功能应您尝试使用。 如果您喜欢的XSLT处理器不支持EXSLT,请确保从供应商处请求这种支持。 对EXSLT的支持正在增长,并且Saxon,Xalan,libxslt,jd.xslt和4XSLT(4Suite的一部分)都支持部分或全部EXSLT模块。

    不要忘记xsl:message支持terminate属性,如果将其设置为yes ,则终止样式表。 这提供了一种支持XSLT中断言的简单方法-也就是说,您可以将对意外情况的检查放入样式表中,并使用终止消息中止发生这种情况。

    在本文中,我演示了如何使用xsl:message进行调试,一些对于调试任务非常有用的常规技巧和技术,以及通过使用EXSLT函数扩展转换所带来的一些新可能性。 我想所有的XML开发人员都会在某个时候到达某个点,他们必须花很多精力来调出XSLT调试器,但是我希望我已经帮助减少了必要的次数。


    翻译自: https://www.ibm.com/developerworks/xml/library/x-debugxs/index.html

    xslt

    展开全文
  • XSLT调试

    2017-11-15 22:02:00
    调试xslt 有两种方式: 第一种:使用VS 打开xsl,可以发现菜单多了XML,点击XML菜单的调试XSLT,然后选择book.xml 就可以进行调试了。 同样F9设置断点,   第二种方法:使用代码. class   ...

    新建控制台程序CAStudy.在应用程序中,添加books.xml,belowAvg.xsl 代码分别如下:

     

    books.xml

    <?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 了。

     

    belowAvg.xsl:

    <?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 &lt; $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; lt less than 的意思,同理xml里面是&gt; gt 就是great than的意思。

     

    接着进行copy-of 操作,”.” 代表的就是self::node(),也就是book节点。

    image

     

    调试xslt 有两种方式:

    第一种:使用VS

    打开xsl,可以发现菜单多了XML,点击XML菜单的调试XSLT,然后选择book.xml 就可以进行调试了。

    image

    同样F9设置断点,

     

    第二种方法:使用代码.

    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 属性修改如下:

    image

    还要将XslCompiledTransform xslt = new XslCompiledTransform(true);

    参数传递为true,代表enableDebug.

     

    就可以看到如下界面了:

    image

     

    使用代码调试的话,不需要设置断点,只要enableDebug为true的话,会自动在xsl中中断。

    本人猜测估计是调用了Debugger.Break() 方法。






    本文转自LoveJenny博客园博客,原文链接:http://www.cnblogs.com/LoveJenny/archive/2011/12/13/2285511.html,如需转载请自行联系原作者

    展开全文
  • XSLT (eXtensible Stylesheet Language Transformation) 是一种用来转换XML文档结构的语言。 相信大家对XML已经并不陌生了,它是一种计算机程序间交换原始数据的简单而标准的方法,HTML是一种特殊的XML,XSLT本身也...
          XSLT (eXtensible Stylesheet Language Transformation) 是一种用来转换XML文档结构的语言。
          相信大家对XML已经并不陌生了,它是一种计算机程序间交换原始数据的简单而标准的方法,HTML是一种特殊的XML,XSLT本身也是一种XML,只不过前者用来在浏览器中展示特定的文本信息,后者则被用来格式化XML中的数据,按照XSLT文档中指定的要求输出XML中的数据。可以毫不夸张地说,XSLT之于XML就好比CSS之于HTML。有关XSLT更加详细的介绍和使用,读者可以参考 W3School中有关XSLT的部分。
          在Visual Studio中开发和使用XSLT是非常方便的,这要归功于Microsoft的XML控件,我不太记得这个控件是在.NET的哪个版本中开始引入的,不过自从有了这个控件,我们在程序中加载和格式化XML输出就变得异常轻松。网上有很多介绍XML控件的文章和例子,使用起来大概是这个样子:
    < asp:Xml ID ="xmlContent" runat ="server" DocumentSource ="~/xbrl/XBRL.xml"   />

    1  xmlContent.TransformSource =   " ~/xsl/IncomeStatement.xslt " ;
    2 
    3  xmlContent.TransformArgumentList =   new System.Xml.Xsl.XsltArgumentList();
    4  xmlContent.TransformArgumentList.AddParam( " Quarter " , string .Empty, currentQuarter.Number);
    5  xmlContent.TransformArgumentList.AddParam( " Year " , string .Empty, currentQuarter.Year);
    6  xmlContent.TransformArgumentList.AddParam( " StatementType " , string .Empty, FinancialTable.ToString());

           在XML控件中可以直接通过DocumentSource属性指定要加载的XML文件,XSLT文件也可以在前台代码中通过TransformSource属性来指定,上例中的后台代码主要是为了给XSLT文件传递三个参数,以便在解析XML文件时可以根据这三个参数的值做一些判断运算。
          在一般的应用中,当XML文件的结构简单时,我们几乎可以自己编写脚本来完成所有的格式化工作,这毫不费力!而且即使使用XSLT来解析,遇到问题也可以非常直观地去修改。但是如果要解析的XML文件非常庞大和复杂,例如在XBRL (eXtensible Business Reporting Language, 通用业务报告语言) 中,我们通常都需要使用XSLT来解析XBRL实体文件,进而生成许多复杂的企业财务报表。这个时候如果遇到错误,直观地去观察代码很难发现错误。既然XSLT中可以编写代码逻辑并支持简单的逻辑运算,那么它可不可以调试呢?就像我们调试C#代码一样!
          网上有很多专门用于调试XSLT代码的工具,不过都不是很理想。事实上,Visual Studio就提供了很好的XSLT调试器,而且是集成在开发环境中的,我们可以非常容易地使用它来进行XSLT的调试。

    9-17-2009 9-40-49 AM

     

                   9-17-2009 9-41-45 AM

           XSLT是用来解析XML的,所在,调试的时候只需要有这两个文件就足够了,并不需要实际的运行环境或者页面。有两种方法可以启动XSLT调试,除了上面给出的两个菜单位置外,你可以在XML文件中设置断点,或者在XSLT文件中设置断点,个人比较倾向于后者,因为解析过程中的关键算法都写在XSLT文件中,直接设置断点在调试时实时跟踪各个变量的值是最直观地。
          点击Debug XSLT,如果你是通过XML文件进行调试的,Visual Studio会弹出选择XSLT文件的对话框;如果你是通过XSLT文件进行调试的,Visual Studio会弹出选择XML文件的对话框。选择文件后XSLT便开始尝试去解析对应的XML文件,如果遇到断点则停下来,这时你可以像调试C#代码一样调试XSLT。

    9-17-2009 10-00-00 AM

          解析的结果会显示在右边的窗口中,最终的结果应当会是一段相对完整的HTML,这要取决于你的XSLT文件中的定义。
          如果你在编写复杂XSLT文件时经常遇到问题,不妨可以使用Visual Studio提供的这个调试工具进行XSLT的调试,相信你也可以编写出功能非常强大的XSLT文件,从而将XML文件解析出各种不同的样式。

    转载于:https://www.cnblogs.com/jaxu/archive/2009/09/17/1568249.html

    展开全文
  • XSLT调试(转)

    2015-10-21 13:12:16
    调试xslt 有两种方式: 第一种:使用VS 打开xsl,可以发现菜单多了XML,点击XML菜单的调试XSLT,然后选择book.xml 就可以进行调试了。 同样F9设置断点,   第二种方法:使用代码. class ...

    新建(vc/c#控制台程序(vc/c#控制台都可以)CAStudy.在应用程序中,添加books.xml,belowAvg.xsl 代码分别如下:

     

    books.xml

    <?xmlversion='1.0'?>

    <!-- This file represents a fragment of a book store inventory database-->

    <bookstore>

      <bookgenre="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>

      <bookgenre="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>

      <bookgenre="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 了。

     

    belowAvg.xsl:

    <?xmlversion='1.0'?>

    <xsl:stylesheetversion="1.0"

          xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

      <xsl:outputmethod="xml"encoding="utf-8"/>

      <xsl:templatematch="/">

        <xsl:variablename="bookCount"select="count(/bookstore/book)"/>

        <xsl:variablename="bookTotal"select="sum(/bookstore/book/price)"/>

        <xsl:variablename="bookAverage"select="$bookTotal div $bookCount"/>

        <books>

          <!--Books That Cost Below Average-->

          <xsl:for-eachselect="/bookstore/book">

            <xsl:iftest="price&lt; $bookAverage">

              <xsl:copy-ofselect="."/>

            </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; lt 是less than 的意思,同理> 在xml里面是&gt; gt 就是great than的意思。

     

    接着进行copy-of 操作,”.” 代表的就是self::node(),也就是book节点。


     

    调试xslt 有两种方式:

    第一种:使用VS

    打开xsl,可以发现菜单多了XML,点击XML菜单的调试XSLT,然后选择book.xml 就可以进行调试了。


    同样F9设置断点,

     

    第二种方法:使用代码.

    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 =newXslCompiledTransform(true);

     

            // Compile the style sheet.

            xslt.Load(stylesheet);

     

            // Execute the XSLT transform.

            FileStream outputStream =newFileStream(outputFile,FileMode.Append);

            xslt.Transform(sourceFile, null, outputStream);

        }

    }

     

    在这里由于使用的是相对路径,所以要将books.xml和belowAvg.xsl 属性修改如下:


    还要将XslCompiledTransform xslt =newXslCompiledTransform(true);

    参数传递为true,代表enableDebug.

     

    就可以看到如下界面了:


     

    使用代码调试的话,不需要设置断点,只要enableDebug为true的话,会自动在xsl中中断。

    本人猜测估计是调用了Debugger.Break() 方法。

    作者: LoveJenny
    出处: http://www.cnblogs.com/LoveJenny/    
    转自:http://www.cnblogs.com/LoveJenny/archive/2011/12/13/2285511.html
    可能遇到的问题:http://blog.csdn.net/dragoo1/article/details/49302895

    展开全文
  • 有webservice适配器,用起来还算方便,其中会接触到xslt的语法维基百科的解释:http://zh.wikipedia.org/wiki/XSLT就是根据模板将XML 报文转换成MML串(a=1,b=2,c=3),语法到也算简单,不过开始调试的时候很
  • 用于XSLTXSLT之类的编程语言的交互式调试器。
  • IDEA 是 Java 的集成开发环境,也是调试分析 Java 相关漏洞的神器,这篇文章将会介绍如何使用 IDEA 对 Java 反序列化漏洞进行分析,并以 Fastjson 反序列化漏洞的调试分析作为实战例子。 本次实验需要具备 Java 语言...
  • 在Web服务领域,Web服务描述语言(WSDL)文档描述了Web服务提供的接口-并指出了可以在网络上找到这些Web服务实例的位置。 通常,借助于各种开发工具... 一种这样的工具XSLT可用于对XML数据进行复杂的转换。 由于WSDL...
  • (X)Emacs次要模式,用于XSLT处理和调试
  • java 面试题 总结

    2009-09-16 08:45:34
    assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为...
  • VB 2010 (41)XSLT转换

    2020-04-15 09:45:46
    XSLT 转换 https://docs.microsoft.com/zh-cn/dotnet/standard/data/xml/xslt-transformations 可扩展样式表语言转换 (XSLT) 可以将源 XML 文档的内容转换为另一个格式或结构不同的文档。例如,可以使用 XSLT 将 ...
  • 使用VS.NET调试XSLT

    千次阅读 2010-06-30 15:27:00
    使用VS.NET调试XSLT
  • Chrome不能打开XSLT 修饰的XML文件

    千次阅读 2018-01-07 22:26:48
    今晚Chrome加载XML文件发现并不能够被加载出来但是查看源代码却发现可以显示出来,用DTD 验证了一下并没有问题,那么谷歌这么高级的浏览器怎么可能不支持...XSLT代码如下 ,helvetica,sans-serif;font-size:12pt;
  • 回声打印是调试棘手问题的最古老方法之一。 尽管如此,它仍然是最简单,最快的方法之一。 当您不太确定为什么某个功能无法按预期运行时,请使用printf()或等效功能将一些变量输出到控制台,以查看发生了什么。 ...
  • 使用VS.NET调试XSLT

    2008-05-10 05:38:00
    我们知道,XSLT是用来将一个XML文档转换成其他XML或非XML格式文档的语言。它本身是被设计用来配合XSL语言(XML样式表语言),满足结构文档和显示文档(例如HTML)之间转换的需求,不过我们很多时候也可以独立使用这...
  • vs2008调试XSLT程序

    2007-12-17 17:51:00
    比较简单.VS2008打开XSLT文件,然后XML-&gt;Debug XSLT即可.(VS2005也可以调试XSLT文件,但VS.NET2003无此功能).如下图所示:  
  • 最近使用Firefox进行网页的调试,发现有些Javascript XSLT处理XML的语句仅仅支持IE浏览器。而网络中的一些介绍javascript XSLT 处理XML的文章基本上都是依据AJAX来做的。  无奈中,自己写了一个Javascript XSLT处理...
  • XML+XSLT实现的人口金字塔图,效果如下: XML示例数据(数据是我自己造的): View Code <?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="PopulationChart.xslt"?&...
  • Xml+Xslt测试工具

    千次阅读 2013-07-21 15:55:53
    软件截图: 下载地址:http://download.csdn.net/detail/a497785609/5791359 说明:下载后,修改下Xslt部分的头部: 上传程序时忘了修改,修改后便能正常编译输出。
  • 例如,XPath 1.0表达式中的拼写错误的名称除了提供有用的错误消息外没有返回任何内容,从而使其难以调试。 常用缩略语 HTML:超文本标记语言 XHTML:可扩展HTML XML:可扩展标记语言 XSLT:可扩展样式...
  • XSLT入门

    2019-10-01 13:03:25
    对于描述转换过程,可以形象的描述为:XSLT把XML源树转(XML source-tree)换成XML结果树(XML result-tree)。 XSLT对于XPath的使用 XSLT通过对XPath的使用来找寻XML文档中的信息。XPath用于操作XML文件中的...
  • XSLT初步

    2019-10-08 06:58:32
    还有,浏览器并没有支持真正的开发工具,所以在调试代码的时候毫无用处。XSLT格式转化通常在服务器上完成,所以浏览器只能对那些包含了指向风格表单链接的XML文件才有效。  Instant Saxon 是一款用于Windows系统...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,719
精华内容 3,487
关键字:

xslt调试