---
title: "用于数据报表的 XPath 表达式"
date: "2013-09-27"
categories: 
  - "xpath"
tags: 
  - "altova-xmlspy"
  - "authentic"
  - "epub"
  - "stylevision"
  - "xml-reports"
  - "xpath"
Descriptions: Learn about using XPath to select data for reports in Altova StyleVision. 
description: 本文探讨了如何在 XMLSpy 和 StyleVision 中使用 XPath 表达式，以实现高效的数据报表生成，包括交互式电子表单和图表创建。
---
Status: #blog

Tags:  #altova-xmlspy #authentic #epub #stylevision #xml-reports #xpath

Categories: [xpath+xquery](/blog/zh/category/xpathxquery.md)
# 用于数据报表的 XPath 表达式

在我们的上一篇文章中，标题是： [使用 XPath 表达式来精确选择数据](https://www.altova.com/blog/2013/09/use-xpath-expressions-to-refine-data.html), 我们详细介绍了如何使用 XMLSpy 工具，通过构建 XPath 表达式，从美国教育部提供的大量数据集中提取出其中的一个数据表。

![基于StyleVision中XPath数据选择的HTML报告](https://lh3.ggpht.com/-8oo4VgEw2gE/UjnhznO7ahI/AAAAAAAABTA/MgScZv75SRE/clip_image001%25255B3%25255D.png?imgmax=800 "An HTML report based on XPath data selection in StyleVision")

我们可以利用在 [XMLSpy](https://www.altova.com/zh/xmlspy.html) 中完成的工作，快速地在 [StyleVision](https://www.altova.com/zh/stylevision.html) 中设计一份报表或电子表格，从而清晰地呈现数据中的关键信息。 <!--more--> 我们可以从在 StyleVision 中基于 gradData XML 模式和我们在 XMLSpy 中创建的 XML 文件进行一个简单的设计开始。 由于我们在 XMLSpy 中保存了最终完善的图表设置，我们也可以在 StyleVision 中重新加载这些图表设计。

![StyleVision 设计用于数据报告](https://lh5.ggpht.com/-xiB7bV790Jk/Ujnh0IRLadI/AAAAAAAABTE/2Iu9DewDrVE/clip_image002%25255B3%25255D.png?imgmax=800 "StyleVision design for the data report")

我们将使用在 XMLSpy 中开发的 XPath 表达式 `set setnum="FOS"`，在两个地方使用该表达式，以选择大型 XML 文件中包含的单个表格。该表达式只会匹配 `setnum` 属性值为 "FOS" 的 `/data/set` 节点 `set setnum="FOS"`.

首先，我们将使用一个表达式来定义描述元素的条件输出。每个表格都包含一个描述，这个描述可以作为有用的图表标题。我们可以在“属性”辅助窗口中输入用于定义条件的 XPath 表达式。

![用于条件控制的属性窗口，显示XPath表达式](https://lh5.ggpht.com/-YG9jeuYhz60/Ujnh0nD5kOI/AAAAAAAABTM/e8991AZ1Mmo/clip_image003%25255B3%25255D.png?imgmax=800 "Properties window for the condition control, showing the XPath expression")

当光标悬停在条件上时，该表达式就会显示出来

![XPath表达式在设计窗口中显示](https://lh6.ggpht.com/-29GKlKQI2lg/Ujnh1IkwNKI/AAAAAAAABTU/uwAQH1bDzsU/clip_image004%25255B3%25255D.png?imgmax=800 "XPath displayed in the design window")

我们还将使用 XPath 表达式，在“图表设置”对话框中选择用于绘制图表的数据行

![图表设置对话框中的 XPath，用于数据选择](https://lh3.ggpht.com/-2CPnWbnUFDo/Ujnh1pCrmCI/AAAAAAAABTc/sSVaLkPHNo4/clip_image005%25255B3%25255D.png?imgmax=800 "XPath for data selection in the chart settings dialog")

这两个例子产生了文章顶部第一张图片中显示的HTML输出结果。

**一个 XPath 表达式加上一个下拉框，就能实现用户选择的功能**

我们可以将报告转换为一个交互式版本 [Authentic](https://www.altova.com/zh/authentic.html) 我们可以通过在 XPath 表达式中使用 XML 元素作为变量，而不是硬编码的字符串值“FOS”，来实现电子表单的功能。 这样，我们就可以允许用户通过下拉列表来设置 XML 元素的内容。

为了实现此功能，我们将插入一个额外的 XML 文件，用于存储用户的临时选择。该文件将在 StyleVision 设计概览和模式树窗口中显示，具体内容如下。

![设计概览和模式树，展示多个可用的XML文件](https://lh3.ggpht.com/-Im-cnaYif1U/Ujnh2Cw5PcI/AAAAAAAABTk/C4XnAC8TpC8/clip_image006%25255B3%25255D.png?imgmax=800 "Design Overview and Schema Tree showing multiple working XML files")

我们可以将下拉列表框插入到表单的顶部，位于描述和图表之上。

![为了实现交互控制，设计中添加了一个下拉列表框](https://lh5.ggpht.com/-bVe6I8apjyQ/Ujnh3ICXv6I/AAAAAAAABTs/MlP9zxtIb6U/clip_image007%25255B3%25255D.png?imgmax=800 "A combo box added to the design for interactive contro")

StyleVision 提供了多种方式来定义下拉框的行为。我们将使用一个包含可见条目的列表，以及与之对应的 XML 值。

![下拉框的可见条目和XML值定义](https://lh4.ggpht.com/-FKR2V28AAo0/Ujnh3rnMaSI/AAAAAAAABT0/AxeFDeQ3O5I/clip_image008%25255B3%25255D.png?imgmax=800 "Combo box defintion of Visible Entries and XML values")

下拉列表框会将一个XML值分配给`userselections.xml`文件中的图表项，然后我们可以将该值与`gradData.xml`文件中的`setnum`属性进行匹配。

接下来，我们需要修改两个 XPath 表达式。用于描述字段的条件所用的新 XPath 表达式是：

../@setnum=$XML2/userchoice/chart

如以下“属性”窗口所示。

![更新用户选择的显示所用的 XPath 表达式](https://lh3.ggpht.com/-JdpIuvVUwkg/Ujnh4LTVkgI/AAAAAAAABT8/zgCirqKk4N4/clip_image009%25255B3%25255D.png?imgmax=800 "Updated XPath expression for user-selected display")

新的 XPath 表达式，用于获取图表数据，如下所示： `$XML/data/set[@setnum=$XML2/userchoice/chart]/row`

如以下图表设置对话框中所示。

![图表设置对话框中更新了XPath表达式](https://lh5.ggpht.com/-dGod4uRG51s/Ujnh4o79oAI/AAAAAAAABUE/4ARuRxZhoY4/clip_image010%25255B3%25255D.png?imgmax=800 "Updated XPath in the chart settings dialog")

StyleVision 包含一个 XPath 表达式编辑器，您可以通过点击上方显示的 XPath 表达式旁边的“编辑”按钮来访问它。该 XPath 表达式编辑器具有构建模式和评估模式，以帮助您编写 XPath 1.0 和 XPath 2.0 表达式。构建模式提供实时语法检查，并提供自动补全功能，以提高效率。以下是缩小后的 XPath 编辑器界面：

![XPath 构建器 (简化视图)](https://lh5.ggpht.com/-Ub_TN4ToohM/Ujnh5S626lI/AAAAAAAABUM/HiponeePKfk/clip_image011%25255B3%25255D.png?imgmax=800 "XPath Builder (reduced view)")

在我们将下拉框调整大小以适应最长的输入内容后，电子表单会呈现如下所示：

![交互式电子书，用于数据报告](https://lh6.ggpht.com/-0yA20dK6nbU/Ujnh6j9GF7I/AAAAAAAABUU/g2vu5nIXBPk/clip_image012%25255B3%25255D.png?imgmax=800 "Interactive e-Pub for data reporting")

下拉列表框允许用户选择其他任何图表

![从下拉菜单中选择新的用户](https://lh4.ggpht.com/-IG1CxL7EX54/Ujnh7K_KfpI/AAAAAAAABUc/DIEOPx80NSU/clip_image013%25255B3%25255D.png?imgmax=800 "New user selection from combo-box drop-down")

新的选择对应的XML值将替换掉现有内容 `<chart>` 在用户选择的 XML 文件（userselections.xml）中，这两个 XPath 表达式都会产生新的结果：

![更新后的电子书报告](https://lh3.ggpht.com/-zjsWOtn6bhQ/Ujnh7rIzJ7I/AAAAAAAABUo/NOL594co0Bg/clip_image014%25255B3%25255D.png?imgmax=800 "Updated e-Pub report")

[**点击此处下载 Altova MissionKit 的免费试用版**](https://www.altova.com/zh/download-trial.html)**，其中包括 XMLSpy、MapForce 和 StyleVision，并开始使用 XPath 来优化您的数据选择！**
