---
title: "使用 XPath 表达式来精确选择数据"
date: "2013-09-12"
categories: 
  - "data-integration"
  - "xpath"
tags: 
  - "altova-xmlspy"
  - "mapforce"
  - "stylevision"
  - "xml-schema"
  - "xmlspy"
  - "xpath"
description: 探索如何有效地使用 XPath 表达式，利用如 XMLSpy、MapForce 和 StyleVision 等工具，对 XML 文档中的数据进行精细选择。
---
Status: #blog

Tags:  #altova-xmlspy #mapforce #stylevision #xml-schema #xmlspy #xpath

Categories: [data-integration](/blog/zh/category/data-integration.md) | [xpath+xquery](/blog/zh/category/xpathxquery.md)
# 使用 XPath 表达式来精确选择数据

在这个大数据时代，我们经常需要通过创建针对大型文件的特定视图来简化分析和沟通。 [XPath](https://www.altova.com/zh/solutions/xpath.html)，即XML路径语言的缩写，旨在允许用户访问大型XML文档的特定部分。 [XMLSpy](https://www.altova.com/zh/xmlspy.html) 支持XPath，并提供XPath分析器窗口，以及在XML数据图表界面中提供XPath支持。 [MapForce](https://www.altova.com/zh/mapforce.html) 支持XPath函数，用于XML数据映射。 [StyleVision](https://www.altova.com/zh/stylevision.html) 在条件模板、扩展模板和模板过滤中支持XPath。

[![人脸识别笔记本电脑](/blog/images/faces-laptop.jpg)](faces-laptop.jpg)

<!--more-->

Altova 的工具在可能的情况下，采用相同的用户界面，因此在一个工具中掌握的技能可以很容易地应用于其他工具。我们之前在博客中介绍过 [StyleVision 中的 XPath 自动计算功能](https://www.altova.com/blog/2012/04/xpath-enhances-xml-reports.html)，现在我们来看一个不同的例子。

通常，一个大型数据集包含多个独立的表格。例如，这里展示了一个来自美国教育部关于近期大学毕业生就业情况的信息，以CSV文件形式呈现：

![针对大学毕业生的就业数据，以CSV格式呈现](https://lh6.ggpht.com/-aeLkzdD4tbU/Ui4gx-TsrpI/AAAAAAAABRw/0uEPSuijaW8/image%25255B2%25255D.png?imgmax=800 "CSV view of employment data for college graduates")

每张表格描述了不同专业和不同毕业年份的毕业生就业情况中的一项统计数据。

一个用于描述数据的 XML 模式，在 XMLSpy 的模式视图中可能如下所示：其中，每个独立的数据表都由 <set> 元素描述，而展开 <row> 元素会显示每个专业或研究方向的更多子元素。

![XMLSpy 的模式视图](https://lh3.ggpht.com/-d_0HFon1IzY/Ui4gyFoMi1I/AAAAAAAABR0/LcXgUVXBezQ/image%25255B5%25255D.png?imgmax=800 "XMLSpy Schema view")

一个简单的 MapForce 数据映射可以将 CSV 文件中的数据转换为 XML 格式，然后我们可以使用 XMLSpy 打开这些数据

![XMLSpy 文本视图，显示数据的一部分](https://lh6.ggpht.com/-WsWwQyP2pUw/Ui4gyphhlHI/AAAAAAAABSA/Ta4HHQlEnls/image%25255B8%25255D.png?imgmax=800 "XMLSpy text view of a portion of the data")

如果我们要为某个图表创建图形，最简单的方法是从 XMLSpy 的网格视图开始。在这里，我们可以选择一个子表格，然后在右键菜单中选择“新建图表”

![XMLSpy 中 XML 数据的网格视图](https://lh5.ggpht.com/-jvRELkv-RVA/Ui4gzJRqC1I/AAAAAAAABSI/9Dd2txJYtJU/image%25255B11%25255D.png?imgmax=800 "XMLSpy Grid View of the XML data")

在接下来弹出的“图表数据选择”对话框中，XMLSpy 会自动生成一个 XPath 表达式，用于描述所选的数据：

![XMLSpy 图表数据选择对话框](https://lh6.ggpht.com/-4kRmhk_bfIg/Ui4gzkYpquI/AAAAAAAABSM/Jf8xVph3Gsg/image%25255B14%25255D.png?imgmax=800 "XMLSpy Chart Data Selection dialog")

相应的折线图如下所示：

![XMLSpy 中用于显示网格视图中选择数据的图表](https://lh5.ggpht.com/-v1E5tr1BolU/Ui4gz4cHZ2I/AAAAAAAABSU/crPjFcYAGBw/image%25255B17%25255D.png?imgmax=800 "XMLSpy chart of the data selected in Grid View")

要绘制不同的表格，我们可以返回到数据源，手动选择不同的数据集，或者直接编辑 XPath 表达式。在数据选择窗口中，原始表达式是：/data/set[3]/row

我们可以修改数字“3”来选择不同的表格，或者我们可以利用“setnum”属性，根据表格的内容而非在文件中的顺序来选择表格。这是一种更好的方式，可以在数据发生变化时，明确地选择特定的表格。例如，在未来的版本中，一个关于兼职工作的表格可能会插入到第二个位置，从而改变所有后续表格的序号。

一个 XPath 表达式，它使用 "setnum" 属性来选择数据，从而在图表中显示毕业生在与他们所学专业密切相关的领域就业的百分比，其形式如下：![在图表数据选择对话框中编辑 XPath 表达式]

(https://lh3.ggpht.com/-79L2DcOC2qQ/Ui4g0MGs4mI/AAAAAAAABSg/WrX4KY8qlaE/image%25255B20%25255D.png?imgmax=800 "在图表数据选择对话框中编辑 XPath 表达式")

以下图表显示了员工从事的工作与他们所学专业相关程度的百分比：

![XMLSpy 软件提供的折线图，用于展示毕业生的就业情况，具体显示了有多少毕业生在与所学专业相关的领域找到了工作](https://lh4.ggpht.com/-UFPLM1hf7yg/Ui4g0ikH27I/AAAAAAAABSo/nLKFSjlitYg/image%25255B23%25255D.png?imgmax=800 "XMLSpy line chart for graduates employed close to their fields of study")

如果您在开发 XPath 表达式时希望尝试各种选项，那么 XPath 分析器窗口是一个非常有用的工具。XPath 分析器会在您输入时检查语法，并预览结果：

![XMLSpy XPath 分析器窗口](https://lh3.ggpht.com/-PqfeXYaADD8/Ui4g01aF9gI/AAAAAAAABSs/HGhCgbfKsdM/image%25255B26%25255D.png?imgmax=800 "XMLSpy XPath Analyzer window")

下一步是使用在 XMLSpy 中创建的图表和 XPath 数据选择表达式，并在 StyleVision 中利用它们来创建用于数据报表的样式表。我们将在未来的文章中详细介绍这个主题。

**同时，您可以** [**点击此处下载 Altova MissionKit 的免费试用版**](https://www.altova.com/zh/download-trial.html)**，该试用版包含 XMLSpy、MapForce 和 StyleVision，您可以亲自体验一下！**
