题注:本文译自www.jkp-ads.com,供有兴趣的朋友参考。

什么是XMLXML是可扩展标记语言(eXtended Markup Language)的缩写。对于网页来说,XML是标准的设想,目标是容易搜索网页中的信息。其原理是对信息添加描述性的“标记(tags)”,使信息容易查找和分类。例如,所有的笑话可以被标记

所包围,这样,搜索引擎只会寻找网页中的这些标记以找到所有的笑话,图1展示了一段XML“代码”。正如您所看到的,它看起来很像HTML。这意味着XML是HTML的方言吗?

图1:在IE中显示的XML文件

就像HTML一样,XML是所谓的标记语言或元语言,一种提供另一种语言的信息的语言,或者换句话说,提供关于其内容的信息的语言。标记代码长期以来都围绕着内容。在出版时,编辑开始使用标记来指明何种格式需要被应用到文本的哪部分。

在六十年代,IBM开发了“通用标记语言”(GML),能够处理相同的电子档案。在1986年,GML被进一步扩展,并且成为了ISO标准,称为“标准通用标记语言”(SGML)。

后来,在瑞士欧洲核子研究中心研究所(CERN)的研究人员更进一步地扩展了SGML,因为他们需要一种标记他们的带有格式说明的电子存储出版物的方式。他们的文档包含了大量对其它资源、数学公式以及其它复杂信息的链接,他们希望在每个人的系统中都有同样的显示,并且他们期望容易搜索。结构化的CERN设计是当前HTML的基础。

因此,HTML和XML都来源于SGML,即“标准通用标记语言”。两种标准都由万维网联盟(World Wide Web consortium,即W3C)管理。

XML和HTML都使用“标记”,但是标记的目的不同。HTML主要是一种标准,用于定义信息的格式。一个能够使用的HTML标记是在标准里已经预定义了的,原则上没有创建自已的标记的自由。此外,HTML标记不会传递关于信息的实际内容的信息,只是代表。而XML则集中于标准信息的类型,而不是指定格式。在XML中,用户决定需要什么标记,XML标准仅仅设置了XML文件的结构。

XML的特征XML有一些重要的特征(摘自Addison Wesley出版社的《Professional Excel Development》):

XML是一种结构化的格式,这意味着我们可以严密地定义在文件中如何排列、组织和表达数据。当我们获得一个文件,在导入数据之前,我们可以检验该文件是否遵循特定的结构。当我们预先知道了文件的结构,就知道其包含的内容以及如何处理每项。在XML之前,在文本文件中唯一的结构是位置,例如知道第四个逗号之后的文本应该是出生日期,然而没有办法验证是否是出生日期还是单纯的日期,也无法验证其使用的是日/月/年还是月/日/年顺序。

XML是一种描述性的格式,这意味着在文本文件里,数据的每一项都有名称,该名称对人和机器都具有可读性并且具有独立标识。我们能够打开文件,阅读其中的内容并理解包含的数据,无须参考其它文档来查找第四个逗号后的文本代表什么。同样,我们能够很自信并正确地编辑文档。

XML可以容易地描述层级数据以及数据间的相互关系。如果我们想导入和导出作家列表,包含作家的姓名、地址和著作,那么采用合理格式的CSV文件则一点也不直接。使用XML,可以定义作家项以及其姓名、地址和多个著作项。也可以定义著作项及其标题、出版商和ISBN。层级和关系按自然顺序来定义。

能够验证XML,这意味着我们可以提供第二个XML文件——XML架构定义文件——准确地描述如何构造XML数据文件。在处理XML文件之前,可以将其与架构比较来确保文件遵循我们期望接受的结构。

XML是一种可识别的格式,这意味着程序(包括Excel 2003/2007)可以解析XML数据文件,推断数据项之间的结构和关系。这也意味着我们可以读取XML文件,推断其结构并生成遵循相同结构的新的XML数据文件,显然新XML数据文件将会通过验证。

XML是一种强类型格式,这意味着架构定义文件指定每个元素的数据类型。当导入数据时,应用程序能够检查架构定义从而识别导入的数据类型。我们不再担心将产品代码01-03作为日期导入。

XML是一种全球统一的格式。在XML文件中仅有一种表示数字的方式(US数字格式),并且仅有一种表示日期的方式。我们不再需要检查是使用美语设置还是法语设置创建CSV文件,并相应地调整对其的处理。

XML是一种标准的格式。万维网联盟(W3C)指定XML文件内容的定义方式,允许应用程序(包括Excel 2003/2007)读取、理解和验证XML文件的结构,并且遵循特定的结构创建文件。同时,允许不同的应用程序读取、写入、理解和验证相同的XML文件,允许我们以一种相当健壮的方式在应用程序间分享数据。

XML文件的结构

图1显示的XML代码是相当容易读取并理解的(即下载的示例文件中的test_en.xml文件)。

第1行(蓝色的)表示我们正在处理XML文件。该行应该出现在每个XML文件中。该文件包含信息和在信息周围成对的打开的和关闭的标记。一组打开的和关闭的标记及其中的信息称作元素。下面的文本显示了完整的元素:

Joe Jackson

上面显示的XML示例包含下列已命名的元素:

companies,company,companyname,employee,code,name,street,houseno,areacode,place,phone。

标记名是区分大小写的,“name”与“Name”不是相同的名称。标记的特征是将文本放置在尖括号内:

每个标记必须对应着一个关闭的标记:

在打开的和关闭的标志之间的所有文本都属于该标记。

如果在标记之间没有内容,那么可以将打开的和关闭的标记组合成一个自关闭的标记:

当没有内容或者当标记的内容带有该标记的属性时,这样处理:

等价于:

Jan Jansen

属性的使用实际上不会改善可读性,建议使用成对的打开和关闭标记。

XML文件的第2行包含根元素的开始标记:

元素“companies”就是所谓的XML文件的根元素。每个XML文件必须包含一个根元素。将XML文件与根相比较:树有一个树干,如果有多个树干,我们称为灌木,而不是树。

第3行表明元素“companies”的开始。在“companies”元素里,可以嵌套多个“company”元素。第4行显示全部的“companyname”元素,之后的第5至27行包含了“Stanford and Son”公司三个雇员的数据。

XML的强大在于方便理解数据的结构以及XML文件的意图,所需做的只是看一看该文件。同时,可以设想在该文件中添加新公司,并且能够很简单地添加雇员信息。

XML架构一个XML文件有一个依附于它的架构定义(XSD),架构定义确定XML文件的结构。此外,XSD文件还可以定义:

元素里面的数据格式(字符串、数字,等等)

元素是否是强制的

元素是否能重复

要依附一个XML文件到架构,对架构文件的引用必须包含于XML文件里。能够添加架构引用作为根元素的属性,例如:

粗体文本创建对架构文件schema.xsd的引用,本例中该文件必须放置在与xml文件相同的文件夹中。无须理解架构定义准确语法的细节,下面是与文件test1_en.xml相联系的架构定义:

Listing 1: Schema.xsd

很明显,这样一个架构与相关联的XML文件相比,很难阅读。点此获取关于架构的更多信息。

扩展的样式表扩展样式表(xsl文件)xml文件能够被转换成其它的格式,例如SpreadsheetML,即支持电子表格的XML格式。关于这些样式表如何工作的介绍已超出了本文的范围。在w3c的网站上可以获得更多关于扩展样式表的信息。

Excel中的XML现在,让我们使用Excel来处理XML文件。使用Excel 2003/2007导入XML数据是非常简单的。不巧的是,XML功能仅仅可用于Microsoft Office专业版或旗舰版,或者从单独购买的Excel程序包安装的Excel。当从Excel中打开文件时,可以看到可用的Excel文件中的XML文件类型,如下图2所示。

图2:Excel 2007的文件——打开窗口

选择文件test_en.xml,出现如下图3所示的窗口。

图3:Excel询问怎么处理XML文件

选择第3个选项,Excel将分析XML文件的结构,并在任务窗格中呈现结构(如图4)。此时Excel不会打开该XML文件。

图4:XML文件的结构在任务窗格中显示

能够将XML文件的元素绑定到工作表单元格中,只需简单地从任务窗格将它们拖动到Excel单元格中即可。如图5所示。

图5:拖动元素到Excel单元格后的结果

拖动包含多个其它元素的元素(或者使用Ctrl+单击或Shift+单击选择任务窗格中的多个元素)到Excel单元格,所有元素作为列表依次放置,如图6所示。

图6:拖动“employee”元素到工作表中后产生的列表

现在,我们已经定义了能够从XML文件中导入数据的模板。我们能够从test_en.xml中导入数据,只需按“表工具 设计”选项卡中“外部表数据”的“刷新”按钮,或者单击Excel 2003列表工具条中的“刷新XML数据”按钮,将从test_en.xml中读取数据到我们新创建的模板,如图7和图8所示。

图7:使用功能区刷新数据

图8:导入数据后的结果

要将不同的文件导入到相同的结构,使用连接属性对话框。如图9所示,单击“刷新”按钮下拉箭头,可以找到连接属性命令。

图9:改变连接属性以导入另一个XML文件到Excel

单击连接属性后,出现“连接属性”对话框,单击其中的“定义”选项卡,然后单击“浏览”按钮访问不同的XML文件。

XML验证非常奇怪,缺省情况下根据其依附的架构定义的ML文件的验证是关闭的。打开该选项将迫使Excel在导入和导出时根据架构检查每个XML文件。

首先,包含对架构引用的XML文件必须被映射到Excel单元格。关闭Excel中所有不需要的文件,然后打开test2-en.xml文件。我已经忽略了该文件中第一个雇员的名字。并且,选择“使用XML源任务窗格”选项。将“employee”拖动到任一单元格中。接着,单击功能区表工具选项卡中的属性按钮,如图10所示。

图10:功能区中的XML属性按钮

此时,出现“XML映射属性”对话框:

图11:XML映射属性对话框

单击“根据架构验证进行导入和导出”旁的复选框。

现在,单击“刷新”按钮从test2_en.xml中导入数据,将出现下面的对话框:

图12:导入违反架构的XML文件导致错误消息

单击“详细信息”按钮,Excel将显示更多关于使用该XML文件发生的错误的信息(如图13)。此时,Excel指出不接受出现的元素“Street”,应该是“name”。之所以导致这个错误消息,是因为忽略了name标记,因而该标记不在XML文件中应该出现的位置。虽然出现了错误消息,但Excel仍然会导入数据。

图13:违规的XML文件导致验证错误的详细信息

在导出数据时,验证也会工作。打开文件ExcelXML_en.xlsx,完全移除名称列。此时,试着导出XML列表(如图14)。

图14:单元格右键菜单,XML选项,导出

图15:导出违反架构的XML数据之后的错误消息

小结本文仅仅介绍了XML的一些非常基础的知识:XML是什么以及它可能是什么。例如,这里没有介绍XML提供的共享选项的信息:非常容易跨平台重复使用数据。下面是一些关于XML更多信息的资源。

参考资源XML:http://www.w3.org/XML/

MSDN和XML:http://msdn.microsoft.com/xml/

架构(Schemas):http://www.w3.org/TR/xmlschema-0/

扩展样式表(Extensible Stylesheets):http://www.w3.org/Style/XSL/

关于Excel和XML:

http://office.microsoft.com/nl-nl/assistance/HP030737771043.aspx

关于Word和XML:

http://office.microsoft.com/nl-nl/assistance/CH060832811043.aspx

本文示例下载:

在xml中定义excel的sheet_XML和Excel相关推荐

  1. Android自定义View研究(四) -- 在XML中定义View

    如果在一直使用SetContentView(new HellwView(this)感觉总是少了一点东西,少了什么了,失去了Android中使用XML定义组件的方便性性,这种感觉让人很不爽,呵呵,在这节 ...

  2. 【mybatis】xml中定义变量

    前言 mybatis 3.4.6 xml中定义变量 <select id="selectListByKeyword" parameterType="map" ...

  3. Android在string.xml中定义html文档并加载显示,以及拦截WebView链接事件

    一.如何在string.xml中定义html文档 首先最好自己在外部新建一个html文件,然后开始写自己的内容.并且在浏览器中预览效果. 首先预先编写一个简单的html文档: <html> ...

  4. 在xml中定义excel的sheet_excel中的“工作簿(扩展名xls)”和“表格(扩展名xml)”有什么区别?:excel表格里的数据加扩展名...

    excel中的"工作簿(扩展名xls)"和"表格(扩展名xml)"有什么区别? xml为可扩展标记语言,可以用IE或者记事本格式打开.xsl属于excel200 ...

  5. Android strings.xml中定义字符串显示空格

    <string name="str">字 符 串</string> 其中   就表示空格.如果直接在里面键入空格,无论多少空格都只会显示一个. 用的XML转 ...

  6. Android在xml中定义Shape

    2019独角兽企业重金招聘Python工程师标准>>> gradient的android:angle参数只有90,180两个参数,它设置了start_color,center_col ...

  7. html中的标签在xml中被识别为什么,在strings.xml中定义html标签

    搜索热词 在项目的开发过程中,需要用到把html内容放到strings.xml文件中,然后再读取到TextView中.原本以为像普通文本一样直接SetText就行了,结果行不通,大大超出我的预料.经过 ...

  8. iBATIS:xml中定义返回值

    如果设置了主键id自增长,则id在map中可以不传,若不传不会报错,ibatas会自动填充null,最后会由数据库生成并返回,若传入主键值,则返回0. <insert id="addD ...

  9. 在xml中定义EditText出现“EditText No label views point to this text field with an android:labelFor”

    这个是因为在新版本的androidSDK中,对于EditText需要新增inputType和labelFor两个属性值,其设定如下 <EditText         android:id=&q ...

最新文章

  1. zabbix监控添加psql数据库和sql_server数据库模板
  2. SpringBoot: xxxx for method parameter type String is not present]
  3. 马云:我不懂技术但欣赏技术 达摩院必须超越微软 - 20171011
  4. Java 实现 Trie (前缀树)
  5. OpenGL着色器GLSL
  6. No 'Access-Control-Allow-Origin' header is present on the requested resource', 跨域访问异常
  7. PostgreSQL在Update时使用Substring函数截取字符串并且加上CASE WHEN THEN条件判断
  8. linux下日志文件的查找(tail和grep)
  9. 齿轮箱常见故障数据_齿轮箱故障分析和维护使用
  10. 【Java练习题】Java 程序的输出 | 第十一套(含解析)
  11. 移动端H5控制台调试(手机web页面控制台调试)
  12. 程序员在大城市奋斗的理由,仅为追求那些不曾见过的五光十色
  13. 30个免费的CSS3动画片段代码
  14. 计算机网络——tcpdump/Wireshark抓包实战
  15. 套利[题目][j2]
  16. 在vue中把数据导出Excel文件
  17. Twitter账号老被封?一文教会你怎么养号
  18. 宿舍管理系统之登录功能
  19. JS中如何阻止事件的传播
  20. 【英文科技论文翻译】- Detection and localization of multiple spoofing attackers in wireless networks

热门文章

  1. Sass系统技术选型笔记(2)JBPM
  2. 版本管理工具-Git
  3. Linux 常用小工具
  4. openlayers 地图上加图标_openlayers地图添加标志物
  5. ipa反编译修改icon,简洁教程
  6. dreamweaver后缀名_在Dreamweaver中,模板文档的扩展名为()。_学小易找答案
  7. plsr matlab,matlab中的偏最小二乘回归(PLSR)和主成分回归(PCR)
  8. Windows7系统服务详解
  9. 悲痛!长安福特AE工程师之死:985高校吉大毕业,入职8年,年仅30岁抑郁跳楼身亡...
  10. php 图片印章_PHP制作中文圆形印章示例