---
title: "PXF 文件：作为软件领域的“即插即用”概念——一个数据库编辑应用案例"
date: "2011-08-09"
categories: 
  - "software"
description: 探索便携式XML格式（PXF）如何提升数据库编辑和设计效率，从而实现XML和SQL数据的无缝集成，并在企业应用中发挥作用。
---
Status: #blog

Tags: 

Categories: [development](/blog/zh/category/development.md) [database + sql](/blog/zh/category/database-sql.md)
# PXF 文件：作为软件领域的“即插即用”概念——一个数据库编辑应用案例

几周前，我们向您介绍了[便携式XML格式（PXF）](https://www.altova.com/zh/stylevision/authentic_eform_desktop.html)，这是一种文件格式，其中包含了支持StyleVision设计的各种设计元素，包括XML Schema和实例文档、SPS设计文件、XSLT、图像以及其他外部文件。最终用户只需在Authentic中打开PXF文件，即可立即开始编辑XML数据和数据库数据。 

[![(图片剪辑)](https://lh3.ggpht.com/-EYWr_SBTj64/Tjw7lF3a0qI/AAAAAAAAAHM/4hS3Bm8VYxQ/clip_image014_thumb%25255B1%25255D.png?imgmax=800 "clip_image014")](http://lh4.ggpht.com/-W7ZAW-A3A1U/Tjw7ktItbXI/AAAAAAAAAHI/fOOwGLvCodM/s1600-h/clip_image014%25255B4%25255D.png)

在这篇文章中，我们将创建一个电子表格，供企业用户记录捐款，并为一家名为“绿色地球基金”的虚构慈善机构添加新的捐赠者。Altova 的全新 PXF 文件格式对于开发人员和最终用户来说都是一大福音——PXF 文件可以像其他办公文档一样进行传输、下载、复制和保存，从而提高效率并减少错误。开发人员不再需要发送或安装多个文件，也不需要创建服务器应用程序来支持设计，而企业用户可以快速、可靠地分发关键业务信息。这在分布式组织中尤其重要，因为业务数据需要通过电子邮件在不同地点之间或在现场员工和其总部同事之间进行传输。支持在 StyleVision 中设计并由 Authentic 中的企业用户编辑的电子表格的 PXF 文件，使得编辑业务数据变得非常简单。在大多数情况下，这些业务数据将直接包含在 PXF 文件中，作为嵌入的 XML 文档，但也可以将 PXF 文件连接到数据库服务器，并将数据直接存储在数据库中，如下面的用例所示。

在这个例子中，我们将使用 StyleVision 来创建一个电子表格，用于记录捐款并添加新的捐赠者，该表格服务于虚构的“绿色地球基金”。最终用户将通过“Authentic”系统与这些表格进行交互 [所见即所得编辑器](https://www.altova.com/zh/authentic.html), 一个类似于高级文字处理软件的界面，允许最终用户捕获、查看和更新 XML 和数据库内容。在 StyleVision 中，点击“文件”->“从数据库新建”，会启动连接向导。只需选择数据库类型，系统会提示您选择数据源。 

[![(图片剪辑)](https://lh3.ggpht.com/--jKT2liOD_k/Tjw7e18n_rI/AAAAAAAAAFw/Ndts9-22PUY/clip_image001_thumb%25255B1%25255D.gif?imgmax=800 "clip_image001")](http://lh4.ggpht.com/-zsLKZuLLC5g/Tjw7er1VH7I/AAAAAAAAAFs/dn9KgVKrVfc/s1600-h/clip_image001%25255B4%25255D.gif) 

在这里，我们已经从名为“MARKETING006SQLEXPRESS”的服务器上识别出了“DonorsDatabase”数据库。连接字符串会被自动保存到设计文件中，并且每次业务用户在Authentic系统中访问该表单时，都会重新建立连接。数据库会根据业务用户在Authentic系统中输入的信息进行更新。 

[![(图片已剪辑)](https://lh5.ggpht.com/-I5IhjtJd3NI/Tjw7fn_S86I/AAAAAAAAAF4/_Yo7X_PybXs/clip_image002_thumb%25255B1%25255D.gif?imgmax=800 "clip_image002")](http://lh3.ggpht.com/-RKdQqTJATKo/Tjw7fQbBOOI/AAAAAAAAAF0/jVtTgHKDcOE/s1600-h/clip_image002%25255B4%25255D.gif) 

一旦您建立连接，您就可以在“插入数据库对象”对话框中选择表、数据视图，甚至可以直接输入 SQL SELECT 语句。 

[![(图片已剪辑)](https://lh4.ggpht.com/-ADs0U5zltTM/Tjw7gNibz_I/AAAAAAAAAGA/M3pExZ7uJHA/clip_image003_thumb%25255B1%25255D.gif?imgmax=800 "clip_image003")](http://lh4.ggpht.com/-N1JaZsDiE80/Tjw7f13IRzI/AAAAAAAAAF8/ug8IDN7khMk/s1600-h/clip_image003%25255B4%25255D.gif) 

在这个示例中，我们添加了一个 SQL SELECT 语句（见下文），该语句将捐赠者头衔、名和姓连接起来，并计算每位捐赠者总共捐赠的金额。一旦您点击“添加 SELECT 语句”，这个 SQL SELECT 语句就会在 StyleVision 设计界面中可用，如上图所示。 

[![(图片已剪辑)](https://lh6.ggpht.com/-AU4MuFoCB1I/Tjw7g4wSPZI/AAAAAAAAAGI/7LVJOALjBJk/clip_image004_thumb%25255B1%25255D.gif?imgmax=800 "clip_image004")](http://lh6.ggpht.com/-YaRHyvwpp74/Tjw7gsAjXSI/AAAAAAAAAGE/6Av7pLg3Cto/s1600-h/clip_image004%25255B4%25255D.gif) 

请注意，我们使用了 Altova [DatabaseSpy](https://www.altova.com/zh/databasespy.html)，这是一款多数据库查询、设计和数据库比较工具，来构建我们的 SQL 语句。虽然您可以使用 DatabaseSpy 中的 SQL 编辑器将数据导出为多种格式，但在这个例子中，我们只是简单地将 SELECT 语句从 DatabaseSpy 复制到 StyleVision 中 SQL 选择对话框中的窗口中。StyleVision 会根据数据库的结构生成一个临时的 XML Schema，并在 Schema 窗口中显示它。请注意，“Contributions”和“Donors”表以及我们的 SQL SELECT 语句都显示在 Schema 树中。 

[![(图片已剪辑)](https://lh6.ggpht.com/-M0Zpte_mFr4/Tjw7hDXpTTI/AAAAAAAAAGQ/osu0zMEpHLU/clip_image005_thumb%25255B1%25255D.gif?imgmax=800 "clip_image005")](http://lh5.ggpht.com/-q534_fkPkW0/Tjw7g7HF4eI/AAAAAAAAAGM/gaDBCjGZksw/s1600-h/clip_image005%25255B4%25255D.gif) 

在这一转换过程中，StyleVision 会创建内部 XML 文件：一个用于预览的不可编辑文件，以及一个作为生成 XML 数据文件的源文件，以及一个可编辑的 XML 文件，用于将修改写回数据库。现在，既然我们已经建立了并保存了数据库连接字符串，我们就可以开始设计 Green Planet 基金将用于添加新捐赠者并记录捐款的电子表格。在这个例子中，我们在 StyleVision 中创建了两个简单的表格：一个用于记录捐款，另一个用于查找和添加捐赠者。（请注意，我们的示例仅用于说明目的，我们只展示了在实际应用中通常包含的字段中的一小部分。其功能也远不如实际项目中那样复杂。）我们对设计进行了以下操作：
* 创建了一个设计片段，其中包含一个用于输入新捐赠者的表格和一个动态填充的已注册捐赠者表格。
* 添加了一个复选框，当选中时，将显示已注册捐赠者表格和来自设计片段的数据输入表格。
* 更改了已注册捐赠者表格的“认证”属性，以检索所有记录。
* 更改了数据输入表格的“认证”属性，以仅检索一条记录，以便更轻松地输入数据。
* 使用 XPath 将每个捐赠者的职称、名和姓连接起来，用于已注册捐赠者表格，并使用 normalize-space 函数删除所有空格。
* 使用值格式化（见下文）来格式化捐款日期——这还允许最终用户通过“认证”中的日历界面编辑日期。

[![(图片已剪辑)](https://lh3.ggpht.com/-WBtD8wC1X8k/Tjw7hv0kNsI/AAAAAAAAAGY/yPdY_-h1B5Y/clip_image006_thumb%25255B1%25255D.gif?imgmax=800 "clip_image006")](http://lh6.ggpht.com/-2J43TgS-Wck/Tjw7hbQIDVI/AAAAAAAAAGU/R2vN3B-o47E/s1600-h/clip_image006%25255B4%25255D.gif) 

请注意，设计片段“DonorList”被包含在数据库标签（DB tags）中，并且被表示为一个单独的元素。该设计片段本身位于设计的底部。 

[![(图片剪辑)](https://lh6.ggpht.com/-zMJhaGKardQ/Tjw7ia5MEfI/AAAAAAAAAGg/qVcF1LzPIhA/clip_image008_thumb%25255B1%25255D.jpg?imgmax=800 "clip_image008")](http://lh3.ggpht.com/-5Hfw7IROWSs/Tjw7h-hfOUI/AAAAAAAAAGc/SPCBBIqtQf4/s1600-h/clip_image008%25255B4%25255D.jpg) 

点击“设计”选项卡旁边的标签，可以以不同的格式生成报告。这里我们展示的是“原样”视图。 

[![(图片剪辑)](https://lh3.ggpht.com/-2oHQJRTtPpk/Tjw7i3vnx8I/AAAAAAAAAGs/zq975fjuWY0/clip_image010_thumb%25255B1%25255D.jpg?imgmax=800 "clip_image010")](http://lh3.ggpht.com/-Bp8eCYz6YkA/Tjw7ipq04jI/AAAAAAAAAGo/Px7_p09CpoA/s1600-h/clip_image010%25255B4%25255D.jpg) 

请注意，该设计仍然采用标准的SPS格式（greenplanetdonorsII.sps）。现在，我们可以将其保存为PXF格式，以便通过电子邮件发送给客户，并在客户收到后立即部署。在顶部菜单中选择“文件”->“另存为”，您可以选择将设计保存为SPS格式或PXF格式。 

[![(图片剪辑)](https://lh6.ggpht.com/-QGjpsv_YTb0/Tjw7jXLsw2I/AAAAAAAAAG0/bfwIq5kRYrY/clip_image011_thumb%25255B1%25255D.gif?imgmax=800 "clip_image011")](http://lh6.ggpht.com/-u1a_y36ZKtU/Tjw7jIIJvyI/AAAAAAAAAGw/wmFK7BjDTuk/s1600-h/clip_image011%25255B4%25255D.gif) 

当您选择将文件另存为 PXF 文件时，系统会提示您选择要嵌入到 PXF 文件中的文件。所有支持 StyleVision 设计的文件都会自动显示在对话框中。 

[![(图片剪辑)](https://lh6.ggpht.com/-vpOBRt6UyJg/Tjw7j6ES3CI/AAAAAAAAAG8/MVs3FvpCPks/clip_image012_thumb%25255B1%25255D.gif?imgmax=800 "clip_image012")](http://lh6.ggpht.com/-3IrvEz_cueo/Tjw7jnXnA4I/AAAAAAAAAG4/dSqKcaCn3A8/s1600-h/clip_image012%25255B4%25255D.gif) 

在这里，我们已经检查了所有的设计元素以及XSLT文件。这将允许最终用户直接从Authentic生成StyleVision设计表单的各种格式输出。请注意，您还可以选择包含其他文件。虽然这个设计本身不需要其他文件，但这个功能使得传输和部署需要多个文件的项目变得更加容易。现在，您可以将您刚刚创建的PXF文件发送给客户。所有项目文件以及数据库连接字符串都嵌入在PXF文件中，因此，当最终用户在Authentic中打开它时，他可以立即开始查看、编辑和输入数据。要在Authentic中创建一个新记录，将光标放在表单上“贡献”表格中的一个字段中，然后点击工具栏上的“添加行”按钮。（或者，您也可以从顶部菜单选择“Authentic”->“添加行”） 

[![(图片剪辑)](https://lh5.ggpht.com/-Ayja1Iksf2w/Tjw7kRarnPI/AAAAAAAAAHE/7b_UXrTpD8Q/clip_image013_thumb%25255B1%25255D.gif?imgmax=800 "clip_image013")](http://lh6.ggpht.com/-JEQlq12xldY/Tjw7kA11yuI/AAAAAAAAAHA/_2zc5z0NG_E/s1600-h/clip_image013%25255B4%25255D.gif) 

现在，业务用户可以输入内容（新的数据会以粗体显示）…… 

[![(图片剪辑)](https://lh3.ggpht.com/-EYWr_SBTj64/Tjw7lF3a0qI/AAAAAAAAAHM/4hS3Bm8VYxQ/clip_image014_thumb%25255B1%25255D.png?imgmax=800 "clip_image014")](http://lh4.ggpht.com/-W7ZAW-A3A1U/Tjw7ktItbXI/AAAAAAAAAHI/fOOwGLvCodM/s1600-h/clip_image014%25255B4%25255D.png) 

...以及新的捐助者。 

[![(图片剪辑)](https://lh5.ggpht.com/-mTCdNUilMJI/Tjw7l-G9cnI/AAAAAAAAAHU/DfWjVK0EzCw/clip_image015_thumb%25255B1%25255D.gif?imgmax=800 "clip_image015")](http://lh3.ggpht.com/-4DlCOz_rB0w/Tjw7lVIVLjI/AAAAAAAAAHQ/y50yklmfJLw/s1600-h/clip_image015%25255B4%25255D.gif) 

请注意，在 SQL Server 数据库中，捐赠者 ID 是一个自动生成的字段。当最终用户点击顶部菜单中的“文件”->“保存”后，新的信息会被提交到数据库，数据库会生成一个 ID 编号，并将这些新信息填充到表单中的其他表格中。（如上所述，数据是实时更新的。）修改和新增的内容会立即写入数据库。以下 SQL Server 数据库的视图显示，我们刚刚添加到“Authentic”表单中的 Edward 和 Julie Jay 被分配了捐赠者 ID 为 18。 

[![(图片剪辑)](https://lh3.ggpht.com/-5HjV2YQ5Y1Y/Tjw7mWtNNVI/AAAAAAAAAHg/Pxc9XKS0jj0/clip_image017_thumb%25255B2%25255D.png?imgmax=800 "clip_image017")](http://lh3.ggpht.com/-EQRAkypnY1k/Tjw7mBLKEWI/AAAAAAAAAHY/-J7C4nwoa-U/s1600-h/clip_image017%25255B5%25255D.png) 

虽然我们没有在此处展示，但该表单可以设计成，当用户尝试保存新的捐赠者信息，但未填写至少一个姓或名时，会生成错误提示。这可以通过在“Authentic”属性的附加验证属性中使用XPath来实现，或者可以在SQL Server数据库中创建约束。这个用例旨在展示创建和部署交互式表单的便捷性。使用StyleVision设计的电子表单始终是更新XML和数据库内容的一种有效方式，而PXF文件则简化了它们的传输和部署。




