Altova XMLSpy 2023 Enterprise Edition

跟踪点使您能够跟踪由XSLT指令生成的内容。在下方截图中,每个跟踪点(直到调试会话中的那个点)都被列在了跟踪窗口的跟踪选项卡中。选择其中一个跟踪项将显示在该跟踪点生成的XSLT内容。该内容将显示在右侧的结果窗格中。

单击以展开/折叠

在上方截图中,我们可以看到设置了两个跟踪点:(i) 在xsl:variablexsl:value-of指令上。由于这两个指令都发生在xsl:for-each指令内,该指令选择了n1:Office元素,因此处理器会在XML文档的n1:Office元素中循环。对于每个n1:Office元素,\$office变量将被设为n1:Name子元素的值(针对当前n1:Office元素)。xsl:value-of指令输出\$office变量的值(这将是n1:Name元素的值)。

 

在截图中,调试程序浏览了两个n1:Office元素。xsl:variablexsl:value-of指令为每个n1:Office元素列出。选择这四个项之一,以在结果窗格中显示特定指令生成的结果。

 

您可以设置任意数量的跟踪点。随着调试程序在XSLT文档中向前处理时,所有遇到的跟踪点都会被列在跟踪选项卡中,您可以选择任何一个列出的指令来查看它所生成的结果。

 

重要事项

请注意以下几点:

 

可以在以下位置设置跟踪点:(i) 在XSL指令和XSLT样式表的字面结果上;(ii) 在XML和Xquery文档中的节点上。

无法在结束节点上定义跟踪点。

一个断点显示为一条蓝色虚线。

可以为同一个指令/节点同时设置跟踪点和断点。然后,会用红色和蓝色虚线组合来标记该指令/节点(参见上方截图)。

仅在跟踪的指令完成后才会在跟踪窗口中显示结果。

为文档设置的跟踪点将保留在该文档中,直至它被关闭。如果您切换到不是文本视图或网格视图的视图,跟踪点将被删除。

您也可以使用一个追踪点来看看以追踪点节点为上下文节点的XPath表达式会产生什么结果。下面描述了如何执行这一操作。

 

插入和删除跟踪点

跟踪点可以在文本视图和网格视图中设置。将光标放在要插入跟踪点的位置或要删除的跟踪点处,然后选择以下操作之一:

 

选择XSL/XQuery | 插入/删除跟踪点

Shift+F9

右键单击并选择断点/跟踪点 | 插入/删除跟踪点

 

要删除断点,您还可以使用“XSLT断点/跟踪点”对话框(参见下方描述)。

 

“XSLT断点/跟踪点”对话框

要访问“XSLT断点/跟踪点”对话框(参见下方截图),请单击XSL/XQuery | 断点/跟踪点...命令,或该命令的工具栏图标。

单击以展开/折叠

“XSLT断点/跟踪点”对话框提供以下功能:

 

列出所有在当前打开的XML、XSLT和XQuery文档中的断点和跟踪点。

将断点更改为跟踪点,反之亦然。方法是使用两个窗格之间的箭头按钮,然后在完成后单击确定

禁用/启用一个断点或跟踪点。方法是取消选择/选中相应的复选框,然后在完成后单击确定。禁用一个断点或跟踪点可以使您跳过它,而不需要删除它。

要删除一个或所有的断点/跟踪点,请单击相应的按钮,然后在完成后单击确定

直接转至相应文档中的断点/跟踪点,然后对其进行编辑。单击各自的编辑代码按钮(参见下方截图)。

在跟踪点上设置一个XPath表达式,查看该表达式返回的值。下面描述了如何执行这一操作。

 

在跟踪点上设置XPath表达式

如果您在一个跟踪点上设置了一个XPath表达式,该跟踪点不会返回由相应的XSLT指令生成的内容。而是会返回相对于跟踪点上下文节点的XPath表达式的计算结果。该结果将显示在跟踪窗口中。

 

在下方截图中,我们设置了三个跟踪点。第一个跟踪点(在第21行)以n1:Office元素的父节点作为其上下文节点。其他两个跟踪点将n1:Office元素作为其各自的上下文节点,因为它们在xsl:for-each指令内。

XSTracepoints

现在让我们在“XSLT断点/跟踪点”对话框(参见上文)中为上方截图中显示的三个跟踪点的每一个设置XPath表达式。请注意,第一个跟踪点的上下文节点是n1:Office元素的父节点,这使得我们对n1:Office元素作为子节点进行计数。对于第二个跟踪点,其上下文节点是n1:Office元素,我们可以对n1:Department子元素进行计数。

XSTracepointsXPath

在运行调试程序(XSL/XQuery | 启动调试程序)后,XPath表达式的计算结果将显示在跟踪窗口中(参见下方截图)。

XSTracepointsXPathResults

请注意以下几点:

 

由于在本例中有三个n1:Office元素,因此xsl:for-each循环对每个n1:Office元素都执行了一次。因此,循环内的其他两个跟踪点对每个office元素进行了计算,并返回对应于各自office元素的数据。

xsl:for-each跟踪点的XPath表达式在指令处理完成后进行计算。

 

© 2017-2023 Altova GmbH