OpenXML语法

关于 Open XML   

Open XML标准的简单介绍:

  Ecma Office Open XML(“Open XML”)是针对字处理文档、演示文稿和电子表格的国际化开放标准,可免费供多个应用程序在多个平台上实现。Microsoft Office(2007、2003、XP、2000)、OpenOffice Novell Edition、开源项目 Gnumeric、Neo-Office 2.1 和 PalmOS (Dataviz) 已经支持 Open XML。Corel 已经宣布在 WordPerfect 2007 中提供 Open XML 支持,全球的开发人员 正在使用 OpenXML 构建解决方案。

  Open XML 的标准化工作是由 Ecma International 通过其技术委员会 45 (TC45) 执行的,来自 Apple、Barclays Capital、BP、The British Library、Essilor、Intel、Microsoft、NextPage、Novell、Statoil、Toshiba 和 United States Library of Congress 的代表参与了该项工作。该标准旨在提供现有 ISO 标准所无法提供的独特好处,其中包括能够实现从现有二进制格式向基于 XML 的格式的高保真移植。

  更多信息请阅读技术白皮书 ---“Ecma Open XML – 完整白皮书”(http://www.ecma-international.org/news/TC45_current_work /OpenXML%20White%20Paper.pdf)

  目前Open XML正在努力成为国际标准的旅途中,我们坚信标准是可以多样化的。

  来自OpenXML社区的声音(节选,排名不分先后):

  4screen AG — 瑞士:“4screen AG 是 OpenXMLCommunity.org 的创始成员之一,我们是开放文档格式的坚定支持者。Ecma OpenXML 是我们构建客户需要的可互操作的解决方案的关键促成要素。我们还支持为使 OpenXML 被批准为 ISO/IEC 标准所做的努力。因此,我们未发现 OpenXML 和现有的 ISO 标准(例如 ODF)之间有任何冲突。有多种基于 XML 的文档格式可用很理想,因为这样可以促进不同标准实施之间的竞争,从而推动市场的创新。”----- Patrik Döös

  Bright Partners — 葡萄牙:“Open XML 代表了文档标准的重要进步,可以为全球的技术用户、技术行业、客户、商业和政府带来好处。2006 年 12 月 Ecma 批准时,该标准获得了高度的认可,并已提交给 JTC 1 [ISO/IEC Joint Technical Committee 1,ISO/IEC 标准化技术委员会] 以进行快速审批。我们相信,Open XML 代表着文档标准的积极进步,将为技术团体和客户带来切实的利益。特别是,它将增强解决方案之间的互操作性并推动公司的业务流程。”----- Fernando Almeida

  Clever Age — 法国:“与 Microsoft 一起从事增强互操作性的项目确实很令人兴奋。该公司对此项目具有非常高的标准、承诺和长期目标。我们将继续帮助客户在其应用中从 Open XML 标准获益。”---- Frederic Bond, 首席执行官   Patheon, Inc — 加拿大:“Patheon 是一家上市公司,是面向国际制药行业的医药开发和制造服务的领先提供商。Patheon 依靠电子文档进行记录管理、向政府递交资料和制定内部策略。进行医药开发时,所有电子提交材料都必须采用 XML 格式,因为这是美国食品药物管理局和加拿大卫生部规定的方法。使 OpenXML 成为国际认可的文档标准对于我们的现在和未来将极为有益。我们期盼 OpenXML 成为 ISO 认可的另一种国际标准。”------ Tom Ferguson, 全球 IT 高级副总裁

  ABB spa — 意大利:“互操作性是信息社会的一个重要概念。确保互操作性的方法之一是消除电子媒体的专有文档格式。采用 Open XML 作为国际标准是非常重要的一步,因为它代表 Office 生产率应用程序中使用的文档类型的最完整的格式。”----- Tormene Guido, IS 经理

  北京理正软件设计研究院有限公司:“我声明支持使用OpenXML作为文档格式的世界标准。文 档格式的不统一和交换困难一直都是计算机软件界的难题之一,我们因此也付出了很多不必要的成本和代价。非常希望能够有一种被大家广泛接受的格式成为标准并 得到更大范围的支持和推广。根据我对软件行业和对XML格式文档的了解,我相信基于XML的数据交换将是未来的主流方式;也希望OpenXML格式的文档 可以成为世界标准。谢谢。”----- 董青, 总经理策划助理

  南京工业大学控制工程中心:“我们相信Ecma’s Open XML开放标准会成为ISO国际标准的。因为这对于电子政务和信息社会的发展都是非常重要的,同时可以辅助政府部门之间和合作伙伴之间的信息交换。”------ 陆新建, IT工程师

  天津市电子计算机研究所:“Ecma’s Open XML开放标准会成为ISO国际标准,因为我们需要 Open XML 以便可以与以前数以亿万计的使用过去文件格式的现存文件相兼容。我们相信这会成为现实。”----- 朗天佩, 所长

  中国石化:“我们欢迎Ecma’s Open XML开放标准这样一种针对综合文档管理的开放的解决方案。在这个沟通无处不在的年代,我们需要一个标准的文档格式来使产业界、内容提供者和使用者可以访 问数亿计界的以前的文档,并且以后,可以创建无数的更多的文档。Open XML开放标准实现了这个目的。此外,Open XML/ODF翻译器使我们可以方便地浏览各种格式的文档。我们期望看到Open XML成为ISO标准。”----- 董良, 信息部副处长

  ……还有很多,不一一列举   

OPENXML 通过 XML 文档提供行集视图

由于OPENXML 是行集提供程序,因此可在会出现行集提供程序(如表、视图或 OPENROWSET 函数)的 Transact-SQL 语句中使用 OPENXML。实例如下:

  --创建一个XML文档@doc

  DECLARE @idoc int

  DECLARE @doc varchar(1000)

  SET @doc ='

  <ROOT>

  <Customer CustomerID="VINET" ContactName="Paul Henriot">

  <Order CustomerID="VINET" EmployeeID="5" OrderDate="1996-07-04T00:00:00">

  <OrderDetail OrderID="10248" ProductID="11" Quantity="12"/>

  <OrderDetail OrderID="10248" ProductID="42" Quantity="10"/>

  </Order>

  </Customer>

  <Customer CustomerID="LILAS" ContactName="Carlos Gonzlez">

  <Order CustomerID="LILAS" EmployeeID="3" OrderDate="1996-08-16T00:00:00">

  <OrderDetail OrderID="10283" ProductID="72" Quantity="3"/>

  </Order>

  </Customer>

  </ROOT>'

  --执行sp_xml_preparedocument 读取XML文档并进行分析,返回一个句柄,可用于访问 XML 文档的新创建的内部表示方式

  EXEC sp_xml_preparedocument @idoc OUTPUT, @doc

  A 、OPENXML 行集提供程序创建了一个三列行集(CostomerID、OrderID、Quantity),SELECT 语句从该行集中检索必要的列。

  select * from

  openxml (@idoc,'/ROOT/Customer/Order/OrderDetail',1)

  with (CustomerID varchar(10) '../@CustomerID',

  OrderID int,

  Quantity int );

  返回结果集如下:

  CostomerID OrderID Quantity

  ------------------------------------------

  VINET 10248 12

  VINET 10248 10

  LILAS 10283 3

  B、已有具有期望构架的表且不要求列模式,则WITH后为给定的表TableName

  drop table #Order

  create table #Order

  (CustomerID varchar(20),

  EmployeeID int,

  OrderDate smalldatetime

  )

  select * from openxml(@idoc,'ROOT/Customer/Order') with #Order

  返回结果集如下:

  CustomerID EmployeeID OrderDate

  -----------------------------------------------------------

  VINET 5 1996-07-04 00:00:00

  LILAS 3 1996-08-16 00:00:00

posted on 2011-03-24 15:46  麦爸Simon  阅读(964)  评论(0编辑  收藏  举报