Altova XMLSpy 2023 Enterprise Edition

源XPath在“选择列”对话框中指定。它决定了文档中的哪些节点可用作X轴和Y轴数据。“列搜索深度”组合框决定了将要搜索多少个级别以返回可用于X轴和Y轴数据的节点。

ChartSelectColumnsDlg

选择新的源XPath后,您必须单击更新列以使更改生效并在对话框中更新X轴和Y轴数据选择。如果XPath表达式中包含谓词,(例如,/Data/Region[1]使用[1]谓词来选择第一个Region元素),则必须选中“包含索引”复选框。如果您修改源XPath表达式,请始终记住单击更新列

 

来自光标位置的源XPath

为了阐述在“选择列”对话框打开时会选择哪个源XPath,我们将使用下方显示的XML文档。它名为YearlySales.xml且位于C:\Documents and Settings\<username>\My Documents\Altova\XMLSpy2023\Examples\Tutorial文件夹中。

 

<?xml version="1.0" encoding="UTF-8"?>

<Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

      xsi:noNamespaceSchemaLocation="YearlySales.xsd">

 <Region id="Americas">

         <Year id="2005">30000</Year>

         <Year id="2006">90000</Year>

         <Year id="2007">120000</Year>

         <Year id="2008">180000</Year>

         <Year id="2009">140000</Year>

         <Year id="2010">100000</Year>

 </Region>

 <Region id="Europe">

         <Year id="2005">50000</Year>

         <Year id="2006">60000</Year>

         <Year id="2007">80000</Year>

         <Year id="2008">100000</Year>

         <Year id="2009">95000</Year>

         <Year id="2010">80000</Year>

 </Region>

 <Region id="Asia">

         <Year id="2005">10000</Year>

         <Year id="2006">25000</Year>

         <Year id="2007">70000</Year>

         <Year id="2008">110000</Year>

         <Year id="2009">125000</Year>

         <Year id="2010">150000</Year>

 </Region>

</Data>

 

 

以下情况有可能出现:

 

如果光标位于Data元素的开始标记(包含在特性值中)或结束标记内的任何位置,或位于Data元素内的任何位置但不在后代节点内,则源XPath将为:/Data

如果光标位于任何一个Region元素的开始标记(包含在特性值中)或结束标记内的任何位置,或Region元素内的任何位置但不在后代节点内,则源XPath将为:/Data/Region

如果光标位于Year元素的开始标记(包含在特性值中)或结束标记内的任何位置,或Year元素内的任何位置,则源XPath将为:/Data/Region[N]/Year。谓词过滤器[N]将选择所选Year元素所在的特定Region元素。因此,X轴和Y轴数据选择将限制为该特定Region元素的Year元素。

如果您只想选择一个Region元素,例如:/Data/Region[1],则将该元素突出显示,即第一个Region元素,如下方截图所示。

ChartXMLSelection

同样,如果您选择两个Region元素,则会生成一个仅选择这两个Region元素的XPath表达式。

 

您可以随后在“选择列”对话框中编辑源XPath表达式。

 

在网格视图中,选择是通过单击一个节点或标记一个范围来完成的。从网格视图选定内容中生成的源XPath与上述文本视图相同。

 

在XPath中包含索引

包含索引复选框决定了是否在XPath表达式中使用谓词过滤器,这些谓词过滤器是在调用“选择列”对话框时自动输入还是手动输入。例如,如果光标位于文档的第一个Region元素的后代元素内,并选中了包含索引复选框,则自动输入的XPath表达式将为:/Data/Region[1]/Year。如果未选中包含索引复选框,则表达式将为:/Data/Region/Year

 

包含索引复选框还决定了是否保留手动输入的谓词。因此,如果您希望在源XPath表达式中使用谓词,则必须选中包含索引复选框。

 

源XPath选择的含义

请注意源XPath选择的以下含义。

 

源XPath返回的序列中的项数决定了X轴上的刻度数。除了修改源XPath之外,只能通过另一种方法来更改X轴上的刻度数:为任何系列选择一个标签数量,该数量大于刻度数。有关这种情况的更多信息,请参见X轴选择

源XPath节点是所有可用作X轴和Y轴数据选择的节点,以及所有您可以输入的XPath表达式的祖先节点。

作为上述两点的结果,对源XPath表达式的任何更改不但会影响X轴上的刻度数,还会影响与图表相关的任何XPath表达式的上下文。

 

以上方所示的XML文档为例,下方对一些XPath表达式进行了解释:

 

/Data/Region:返回三个Region元素,因此X轴上有三个刻度。每个Region元素将依次成为XPath表达式的上下文节点。

/Data/Region/Year:返回18个Year元素,因此X轴上有18个刻度。每个Year元素将依次成为XPath表达式的上下文节点。

/Data/Region[1]/Year:返回第一个Region元素的六个Year子元素,因此X轴上有六个刻度。第一个Region元素的每个Year元素将依次成为XPath表达式的上下文节点。

distinct-values(//Year/@id):返回六项(Year/@id特性的单个值:200520062007200820092010)。然而,由于此XPath表达式不返回任何节点项,因此它不能用作XPath表达式的上下文节点。如果此序列中的项用于XML文档中的目标节点(例如,使用current()函数(简写:.)),则为了建立上下文,使用当前项的XPath表达式必须从文档根开始。例如:/Data/Region[1]/Year[@id eq .]

 

© 2017-2023 Altova GmbH