新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> Oracle, SQL Server与XML,XML在数据挖掘中的应用, PMML.
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - 高级XML应用『 XML 与 数据库 』 → 转换数据 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 10918 个阅读者浏览上一篇主题  刷新本主题   平板显示贴子 浏览下一篇主题
     * 贴子主题: 转换数据 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     yibingzheng 帅哥哟,离线,有人找我吗?
      
      
      威望:5
      头衔:一兵征
      等级:研一(帮老板干活拿了2000元)
      文章:818
      积分:4280
      门派:XML.ORG.CN
      注册:2004/4/30

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给yibingzheng发送一个短消息 把yibingzheng加入好友 查看yibingzheng的个人资料 搜索yibingzheng在『 XML 与 数据库 』的所有贴子 访问yibingzheng的主页 引用回复这个贴子 回复这个贴子 查看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="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 文件,您的浏览器将显示如下:

    “雇员”表的第一个记录

    1
    Ms.
    Davolio
    Nancy
    2
    Dr.
    Fuller
    Andrew
    3
    Ms.
    Leverling
    Janet
    ...
    9
    Ms.
    Dodsworth
    Anne

    在此输出中,我们通过在元素之间使用BREAK <br> HTML 标记,而不是PARAGRAPH <p> 标记来更改元素数据间距。我们选择输出比在第一个示例中更少的元素。我们也调换了名和姓的顺序。这些仅仅是转换数据时可用的一些技术。希望您能继续试验这些技术和其他技术,从而发现如何使用 XSL 和 XSLT 文件来创建您所需要的数据文件类型。


       收藏   分享  
    顶(1)
      




    ----------------------------------------------
    如果我不为自己打算,那么谁为我打算。如果我只为自己打算,那么我又算什么。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/1/4 17:36:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XML 与 数据库 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/15 13:21:16

    本主题贴数6,分页: [1]

     *树形目录 (最近20个回帖) 顶端 
    主题:  转换数据(8080字) - yibingzheng,2005年1月4日
        回复:  这个很简单吗,4楼的搂主。Access---〉xml可以使用ADO.NET的DataSet,再设置..(114字) - ksai,2005年9月2日
        回复:  不错(4字) - royczy,2005年8月30日
        回复:  "将“雇员”表导出为 XML 文档。有关导出为 XML 的详细信息,请参阅 Access 帮助。"..(113字) - myway,2005年5月26日
        回复:  能放例子就更好了。(18字) - xmzhy,2005年2月16日
        回复:  介绍了一些将 XML 数据、基于 XML 的文件(例如 XSLT 和 XSL)与 Access 配..(271字) - yibingzheng,2005年1月4日

    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    78.125ms