Altova XMLSpy 2023 Enterprise Edition

我们将以下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>

 

 

我们希望制作一个图表,在X轴上绘制年份并比较每年的区域销售额。我们的图表应该类似于下方的条形图。

ChartYAxis02

我们将展示两种方法。这两种方法共同展示了如何结合不同的数据选择参数以产生所需的结果。

 

方法1:修改轴值

第一种方法是,在“选择列”对话框中选择轴,然后在“选择数据”对话框中对轴进行修改。需要确保的是,所有需要的数据都可以在“选择数据”对话框的图表数据表格中进行选择。

 

1.在“选择列”对话框中,确保所有必需的节点都可用于X轴和Y轴选择。在下方截图中,请注意列搜索深度已设置为2,因此Year/@id特性也被选中。

ChartEx2ColSelect

2.在“选择数据”对话框(参见下方截图)中,图表数据表格具有以下列:第一列是X轴选择(即自动枚举),其余列是系列(Y轴)列,即Region/@id特性、Year元素内容和Year/@id特性。另外,您可以看到:(i) 仅有三行,因此有三个X轴刻度(但是我们需要六个X轴刻度来表示六年;(ii) 有13个系列列。

ChartEx2DataSelect

3.在“系列”窗格中,我们删除了13个系列行中的任意10个。然后将剩下的三个系列重命名为AmericasEuropeAsia,正如上方截图所示。此处选择的顺序将是X轴刻度标签的顺序。

4.在“系列”窗格中,选择Americas系列。在“轴值”窗格中,单击X轴框以启用修改。然后单击图表数据表格中的单元格I1并拖动至单元格N1。在Y轴文本框中输入C1:H1,或通过从C1拖动至H1进行选择。

5.对于Europe和Asia系列,分别为Y轴选择C2:H2C3:H3。X轴选择可以与Americas的选择相同。

6.单击确定,生成所需的图表。

 

请注意:X轴刻度数(默认情况下,由图表数据表格中的行数定义)从三个增加到六个,因为X轴标签数是六个。

 

方法2:使用XPath表达式生成系列

第二种方法是,插入XPath表达式,生成系列。这是必要的,因为源XPath(参见下方截图)没有系列所需的节点作为其后代。然而,源XPath确实生成了六个X轴刻度(通过选择第一个Region元素的Year元素)。为了使用[1]谓词选择第一个Region元素,必须选中包含索引复选框并单击更新列按钮。

ChartEx1ColSelect

在“选择列”对话框中,Region[1]/Year元素仅具有两个后代:@idtext()。为X轴选择@id特性,从而为六个X轴刻度的每一个生成正确的X轴标签。图表数据将被评估如下:

 

源XPath

X轴

Y轴(系列轴)

Region[1]/Year[1]

@id

text()

XPath-1

XPath-2

Region[1]/Year[2]

@id

text()

XPath-1

XPath-2

Region[1]/Year[3]

@id

text()

XPath-1

XPath-2

Region[1]/Year[4]

@id

text()

XPath-1

XPath-2

Region[1]/Year[5]

@id

text()

XPath-1

XPath-2

Region[1]/Year[6]

@id

text()

XPath-1

XPath-2

 

请注意,上下文节点依次是六个Region[1]/Year元素中的每一个。第一个XPath表达式将查找当前的Year/@id特性值并返回Region[2]/Year元素,它具有与当前Region[1]/Year@id 值相同的Year/@id值。第二个XPath表达式对Region[3]/Year元素执行相同的操作。这样,对于六个年份中的每一年:三个Y轴系列分别是三个Region元素的Year子元素。(text()节点返回Region[1]/Year元素的内容。)

 

“选择数据”对话框中的图表数据表格将如下所示:

ChartEx1DataSelect

“选择数据”对话框中的系列名称可以从XPath表达式(如上方截图所示)改成有意义的图例(参见下方截图)。对于每个系列,可以在“轴值”窗格中指定正确的数据列(通过单击Y轴文本框,然后在图表数据表格中选择所需的列)。

ChartEx1DataSelectSerMod

上方显示的两种方法都会生成相同的图表。展示不同的方法是为了说明如何使用数据选择参数。

 

© 2017-2023 Altova GmbH