|
|

|
|
|
|
[计算机技术][收藏]转换数据 -- 作者:yibingzheng 文章收藏
|
本文转载自W3CHINA.ORG讨论区(BBS.W3CHINA.ORG) 原文链接作者:yibingzheng以下为原文:转换数据前面我们讨论了将数据(或 Access 对象)及其在 Access 中的属性和特征导出至 XML 文件。假设您要将数据(或对象)“转换”为另一种格式,例如,为了在 Web 浏览器中显示。要实现此目的,您可能希望通过筛选或排序重新设置数据结构,并通过添加 HTML 标记来告诉浏览器如何显示这些数据。您可以通过将 HTML 标记添加至 .xml 文件并重新排列数据来手动完成,这将是一项相当繁琐的任务,您也可以使用另一种基于 XML 类型的文件来进行转换:XSL 转换 (XSLT) 文件。
XSLT 文件(XSLT 命令是 XSL 命令的子集)主要用于将一个 XML 文档转换为另一个 XML 文档。这话并不十分贴切,因为 XSLT 也很适合于将 XML 转换为 HTML 或其他基于文本的格式。
XSL 和 XSLT 之间的区别是什么呢?XSL 文件定义 XML 文档在屏幕、打印机或其他显示设备上的格式和外观。XSLT 文件实际执行转换。
完成文档转换的过程如下:
在 Access 以外使用文本编辑器(例如 Microsoft 记事本)创建 XSLT 文件(与 XSL 一样扩展名为 .xsl)。在此文件中,根据需要添加处理指令以转换和重新设置数据的结构。对于您希望输出文档中包含的每一个或每一组(分枝)元素,都需要处理指令。 添加从 XML 数据文件(.xml 文件)内指向 XSLT 文件的引用标记。 使用 XSLT 处理器将 XSLT 样式表应用于 XML 数据文件。这将会生成所需的输出文件(.htm 文件)。 有多种 XSLT 处理器可供使用,其中包括 Microsoft MSXML3 处理器,您可以从 Microsoft Developer Network (MSDN) 网站免费下载它。要运行以下示例,您需要在硬盘上安装 MSXML3 处理器。
XSLT 如何工作?与 XSL 一样,XSLT 使用模板和指令,在 XML 数据文件中遇到一个特殊元素或元素分枝时,这些模板和指令被触发。模板指令定位数据文件的元素,并指定处理什么样的输出。大多数模板主体都包括 HTML 标记和要输出的文本。指令命令告诉处理器要输出数据的哪个部分。指令处理的特殊元素或元素分枝按照数据将要输出的顺序放置,而不管 XML 数据文件中元素的实际顺序。它提供了重新设置数据结构以满足您的需要的方法。条件编程指令允许您对数据进行筛选和排序。这些技巧的组合提供了强大的工具,使您可以将 XML 数据转换为任何格式。
为了让您对活动中的默认 .xsl 样式表有一个初步印象,我们将使用 Microsoft Internet Explorer 来查看从 Access 罗斯文贸易示例数据库中导出的文件。
打开罗斯文示例数据库。对于 Access 2003,Northwind.mdb 数据库的默认位置为 C:\Program Files\Microsoft Office\Office11\Samples;对于 Access 2002,默认位置是 C:\Program Files\Microsoft Office\Office10\Samples。 将“雇员”表导出为 XML 文档。有关导出为 XML 的详细信息,请参阅 Access 帮助。 找到 Employees XML 文件 (*.xml) 并双击该图标。 假设您的默认浏览器为 Internet Explorer,该文件将显示为带有可扩展元素分支的树结构。此树状结构是由 Internet Explorer 使用的 XSLT 文件创建的,用于转换数据。 Internet Explorer 的默认 XML 输出显示了扩展的数据区:
<?xml version="1.0" encoding="UTF-8" ?> - <dataroot> - <Employees><EmployeeID>1</EmployeeID><LastName>Davolio</LastName><FirstName>Nancy</FirstName><Title>Sales Representative</Title><TitleOfCourtesy>Ms.</TitleOfCourtesy><BirthDate>1968-12-08T00:00:00</BirthDate><HireDate>1992-05-01T00:00:00</HireDate><Address>507 - 20th Ave. E. Apt. 2A</Address><City>Seattle</City><Region>WA</Region><PostalCode>98122</PostalCode><Country>USA</Country><HomePhone>(206) 555-9857</HomePhone> ....
这是导出的 Employees XML 数据文件的一部分:
<?xml version="1.0" encoding="UTF-8"?><dataroot><Employees><EmployeeID>1</EmployeeID><LastName>Davolio</LastName><FirstName>Nancy</FirstName><Title>Sales Representative</Title><TitleOfCourtesy>Ms.</TitleOfCourtesy><BirthDate>1968-12-08T00:00:00</BirthDate><HireDate>1992-05-01T00:00:00</HireDate><Address>507 - 20th Ave. E. Apt. 2A</Address><City>Seattle</City><Region>WA</Region><PostalCode>98122</PostalCode><Country>USA</Country><HomePhone>(206) 555-9857</HomePhone>... <ReportsTo>5</ReportsTo> </Employees> </dataroot>
现在让我们看一个简单的 XSLT 文件示例。此文件可用于显示在先前创建的 Employees XML 数据文件的第一个记录中选择的字段。之后,您将看到您自行对其进行测试的步骤。
用于显示“雇员”表中第一个记录的 XSLT 文件
<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet version="1.0" xmlns:xsl="' target=_blank>http://www.w3.org/1999/XSL/Transform"><xsl:template match="/"><HTML><BODY><h4>First record of the Employees table</h4><p><xsl:value-of select="//EmployeeID"/></p><p><xsl:value-of select="//TitleOfCourtesy"/></p><p><xsl:value-of select="//FirstName"/></p><p><xsl:value-of select="//LastName"/></p><p><i><xsl:value-of select="//Title"/></i></p><p><xsl:value-of select="//HomePhone"/></p></BODY></HTML></xsl:template></xsl:stylesheet>
前两行包含所需的 XML 处理指令。第一个模板规则告诉处理器在 XML 数据文件的起始处开始处理。“/”表示开始处理文档时立刻触发此规则。要包括在输出 .htm 文档中的 HTML 标记的开始标记。我们希望出现在输出文档顶部的 HTML 标题。一组模板规则(查找选择语句中的元素标记并将那些标记的值输出到输出文档)的开始标记。值前面的“//”是导航符号,指示处理器 (MSXML3) 它需要向下走两个级别以到达所需的标记。 (例如,在 Employees XML 数据文件中,是文档元素“dataroot”,向下经过“Employees”元素,到达所需的“EmployeeID”元素。对应结束标记的开始标记。每一个开始标记都必须有一个结束标记。
要测试此文件,您需要:
打开文本编辑器(例如记事本)。 将上述示例文件复制并粘贴到一个空的记事本文档中。注意,粘贴至文本编辑器后,在处理器中运行该文件前,您需要删除文件的蓝色背景标注。 将此文件保存到与您先前创建的 Employees XML 数据文件相同的位置。将文件命名为 MyTransformFile.xsl。 请确保包括 .xsl 扩展名。 用文本编辑器(例如记事本)打开 Employees XML 数据文件。 将光标置于文档第一行末尾,按 Enter。 将下列文本行复制并粘贴到新的空行中: <?xml-stylesheet type="text/xsl" href="MyTransformFile.xsl"?>
此行告诉 Employees XML 文件使用您创建的样式表文件。保存 Employee XML 数据文件。 现在双击 Employee XML 数据文件将其打开。它应当在您的浏览器中打开,并仅显示“雇员”表中第一个记录的特定字段。 第一个 .xsl 文件示例的输出:
“雇员”表的第一个记录
1
Ms.
Nancy
Davolio
“销售代表”
(206) 555-9857
注意,输出中限制了所显示的字段的数量,并更改了字段在“雇员”表中的顺序(先是名,然后是姓)。在输出显示中,我们包括了原文档中没有的其他信息(文档标题)。同时也向“标题”元素中添加了其他格式,例如,PARAGRAPH (<p>) 标记和 ITALICIZED (<i>) 标记。
现在我们看另一个 .xsl 文件示例,它将显示 Employee XML 文件中所有记录的某些字段。
显示“雇员”表中所有记录的 XSLT 文件
<HTML xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xsl:version="1.0"><BODY><h4>All records of the Employees table</h4><xsl:for-each select="//Employees"><br><xsl:value-of select="EmployeeID"/></br><br><xsl:value-of select="TitleOfCourtesy"/></br><br><xsl:value-of select="LastName"/></br><br><xsl:value-of select="FirstName"/></br></xsl:for-each></BODY></HTML>
包含所需的 XML 处理指令,这一次将其组合以表明您可以将它们与 HTML 指令集成。要包括在输出 .htm 文档中的 HTML 标记的开始标记。第一个指令,它告诉处理器查找 Employees 标记。注意,这告诉处理器需要向下走两个级别来查找标记(根元素和“文档”元素“dataroot”)。一组指令(定位选择语句中显示的标记并将那些标记的值输出到输出文档)的开始标记。对应结束标记的开始标记。请记住,每一个开始标记都必须有一个对应的结束标记。
要运行此示例,您需要执行与第一个示例相同的步骤。请使用与您创建的第一个 .xsl 文件不同的名字保存此 XSLT 文件。请确保将 Employees XML 文件中的引用改为这个新的 .xsl 文件。请注意,将文本粘贴至文本编辑器后,从处理器中运行该文件前,您需要删除文件的蓝色背景标注 ( )。
双击 Employees XML 文件,您的浏览器将显示如下:
“雇员”表的第一个记录
1Ms.DavolioNancy2Dr.FullerAndrew3Ms.LeverlingJanet...9Ms.DodsworthAnne
在此输出中,我们通过在元素之间使用BREAK <br> HTML 标记,而不是PARAGRAPH <p> 标记来更改元素数据间距。我们选择输出比在第一个示例中更少的元素。我们也调换了名和姓的顺序。这些仅仅是转换数据时可用的一些技术。希望您能继续试验这些技术和其他技术,从而发现如何使用 XSL 和 XSLT 文件来创建您所需要的数据文件类型。
<完>参与讨论本主题 | |
一兵征 发表于 2005/1/4 17:42:41
|
|
|
♀链接 |
还有礼品赠送哦! |
签写新留言
blog名称:一兵征 日志总数:88 评论数量:137 留言数量:-3 访问次数:547296 建立时间:2004年10月31日 |
|
|
|