什么是XML?
要了解XML,首先了解一下标记的概念。标记(Mark up、Markup和tag)即使用某种称为标签(tag)的代码来定义任何数据的结构、外观以及含义的过程。例如,学校老师总是要对学生的作业进行标记,告诉学生改变段落顺序、对语句进行润色、纠正拼写错误等。对文档进行标记是定义文档中的信息的结构、含义和外观的一种方式。 再者,现今的Web时代,很多人可能对HTML标记很熟悉,如果您没见过HTML代码,不要紧,在您的Web页中选择“查看——源文件”命令,会打开带有HTML代码的记事本,其中就是HTML标记。XML类似于HTML。 XML中,标记定义数据的结构和含义(即什么是数据),而在HTML中,标记定义数据的外观(如标题位置、段落起始位置等)。HTML和XML文档中的标记很容易识别,这些标记都是用尖括号括起。 在描述数据的结构和含义时,可通过各种方式重复使用数据。例如,如果有一个销售数据块,并且数据块中的每个项目都明确地区分开来,您可以只将需要的项目加载到销售报表中,而将其他项目加载到财务数据库中。换言之,您可以使用一个系统生成数据并使用XML标记来标记该数据,然后可以在任意数量的其他系统中处理该数据,而不用考虑硬件平台或操作系统。因此,可移植性使得XML成为一种用来交换数据的最受欢迎的技术。 下面通过XML和HTML的比较,来熟悉XML及其规则: 1、无法使用HTML代替XML,但是可以在HTML标记中使XML数据换行从而将其显示在网页上。 2、HTML仅限于一组预定义的由所有用户共享的标记。 3、XML允许您创建任何所需标记,以描述数据及数据结构。例如,假设需要存储并共享关于宠物的信息,可以创建以下XML代码: <?xml version="1.0"?> <CAT> <NAME>Izzy</NAME> <BREED>Siamese</BREED> <AGE>6</AGE> <ALTERED>yes</ALTERED> <DECLAWED>no</DECLAWED> <LICENSE>Izz138bod</LICENSE> <OWNER>Colin Wilcox</OWNER> </CAT> 可以看到,使用XML标记可以明确地标明所查看的数据属于何种类型。例如,您可以了解到以上数据是关于一只猫的,并且很容易地找到这只猫的名字、年龄等信息。XML能够创建定义几乎所有数据结构的标记,因此是“可扩展”的。 但是,不要将该代码示例中的标记与HTML文件中的标记混淆。例如,如果将该XML结构粘贴到一个HTML文件中,然后在浏览器中查看该文件,结果会如下所示: Izzy Siamese 6 yes no Izz138bod Colin Wilcox 浏览器将饭忽略XML标记,而只显示数据。 4、XML遵循一组严格的标准规则,如果文件不遵循这些规则,XML就会停止运行。例如,在上面的代码示例中,每一个开始标记都有对应的结束标记,因此该示例遵循一种标准格式的规则。如果您删除一个标记,然后尝试在一个Office程序中打开该文件,将会看到一条错误消息,并且该程序会阻止您使用该文件。 只有在XML数据采用了标准格式的情况下,才可以在程序和系统之间共享数据。如果某个XML文件无法打开,则该文件很可能不是标准格式的。 (1)每个数据元素都要以同样的标记表示开始和结束。标记名称区分大小写,如<TagName>Date/</Tagname>是非法的,<TagName>Date/</TagName>是有效的。 (2)XML文件必须使用根标记来开始和结束。文件中只有一个根标记。 (3)可以使用空标记,但要在结尾的标记处放置一个斜杠。 (4)如果使用嵌套标记,在关闭外部标记之前必须关闭内部标记,这与HTML不同。在HTML中,<b>XML is very<i>cool</b></i>是有效的,但在XML中是无效的。 5、XML不受平台的限制。这意味着,无论硬件或操作系统是什么,为使用XML而构建的任何程序都可以读取和处理XML数据。例如,利用正确的XML标记,就可以使用桌面程序打开和处理大型机中的数据。另外,无论是谁创建了XML数据体,您都可以通过若干Microsoft Office 2003和Microsoft Office Professional 2007程序(包括Microsoft Office Access 2007、Microsoft Office Word 2007、Microsoft Office InfoPath 2007和Microsoft Office Excel 2007)处理相同的数据。由于XML具有可移植性,它已成为用于在数据库和用户桌面之间交换数据的最受欢迎的技术之一。  图1 除了使用标准格式的标记数据之外,XML系统通常还使用其他两种组件:架构和转换。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -架构简介
架构是一种包含某些规则的XML文件,这些规则用来定义XML数据文件中能包含哪些内容,不能包含哪些内容。架构文件通常使用.xsd文件扩展名,而XML数据文件使用.xml 扩展名。 程序可以使用架构来验证数据。架构为数据提供了结构框架,可以帮助创建者和任何其他用户理解数据。例如,如果用户输入无效数据(例如,在日期字段中输入文本),程序就会提示用户输入正确的数据。只要XML文件中的数据遵循给定架构中的规则,任何支持XML的程序都可以使用该架构读取、解释和处理这些数据。例如,如下图所示,Excel 和 Word 都可以根据CAT架构来验证<CAT>数据。  图2 了解架构的外观还是有用的,下面的架构定义了<CAT> ... </CAT>标记集的规则。 <xsd:element name="CAT"> <xsd:complexType> <xsd:sequence> <xsd:element name="NAME" type="xsd:string"/> <xsd:element name="BREED" type="xsd:string"/> <xsd:element name="AGE" type="xsd:positiveInteger"/> <xsd:element name="ALTERED" type="xsd:boolean"/> <xsd:element name="DECLAWED" type="xsd:boolean"/> <xsd:element name="LICENSE" type="xsd:string"/> <xsd:element name="OWNER" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> 如果不理解上面示例中的内容,不必担心。只需要记住以下事项: 1、示例架构中的行项目被称为“声明”。如果需要有关宠物的其他信息(例如其颜色或斑纹),IT 部门可能需要向架构中添加声明。您可以根据业务需求的变化来更改XML 系统。 2、声明对数据结构具有较强的控制能力。例如,<xsd:sequence>声明表示<NAME>和 <BREED>等标记必须按照上面列出的顺序显示。声明也可以控制用户输入的数据类型。例如,上面的架构要求猫的年龄必须为正数,而对于ALTERED和DECLAWED标记则必须为布尔值(TRUE或FALSE)。 3、当XML文件中的数据遵循架构所提供的规则时,数据就是有效数据。根据架构检查 XML数据文件的过程称为“验证”(逻辑意义上)。架构的突出优点是可以帮助防止数据损坏。使用架构也可以很容易地发现损坏的数据,因为XML遇到问题 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
转换简介如前所述,XML还可以提供使用或重复使用数据的强大功能。重复利用数据的机制称为可扩展样式表语言转换(XSLT),或简称为转换。转换是XML的真正优点所在。例如,在根据架构验证数据文件之后,您可以应用一种转换使数据在Microsoft Office Word 2003中以市场宣传册的形式出现,然后应用另一种转换在Office Excel 2007中创建销售报表。 还可以使用转换在数据库等后端系统之间交换数据。例如,假设数据A在适用于销售部门的表结构中存储销售数据,数据库B在适用于财务部门的表结构中存储收入和支出数据,数据库B可以通过转换接受A中的数据,并将该数据写至正确的表中。 数据文件、架构和转换组成基本的XML系统。下图显示了这种系统通常是如何工作的。数据文件先根据架构进行验证,然后通过转换以任意可用方式呈现。在本例中,转换向网页中的表部署数据。  图3 下面的代码示例显示编写转换的一种方法,它将<CAT> 数据加载到网页上的表中,再次声明一下,这里的示例并不是教您如何编写转换,而是向您展示一种转换形式。 <?xml version="1.0"?> <xsl:stylesheet version="1.0"> <TABLE> <TR> <TH>Name</TH> <TH>Breed</TH> <TH>Age</TH> <TH>Altered</TH> <TH>Declawed</TH> <TH>License</TH> <TH>Owner</TH> </TR> <xsl:for-each select="CAT"> <TR ALIGN="LEFT" VALIGN="TOP"> <TD> <xsl:value-of select="NAME"/> </TD> <TD> <xsl:value-of select="BREED"/> </TD> <TD> <xsl:value-of select="AGE"/> </TD> <TD> <xsl:value-of select="ALTERED"/> </TD> <TD> <xsl:value-of select="DECLAWED"/> </TD> <TD> <xsl:value-of select="LICENSE"/> </TD> <TD> <xsl:value-of select="OWNER"/> </TD> </TR> </xsl:for-each> </TABLE> 此示例显示一种转换类型的编码形式,但是请记住,您只能用简单的英文描述您想要从数据中获得什么。例如,您可以对IT部门说您需要打印特定区域过去两年的销售数据,并指出“我希望数据的外观是这样的”。这样,IT部门就可以编写(或更改)一个可执行该任务的转换。 使所有此类工作更为方便的是:Microsoft 和日益增多的其他供应商正创建应用于各种任务的转换。不久的将来,您可以下载符合需要的转换,也可以调整转换以满足需要。这意味着,XML的使用成本将随时间的推移而逐渐降低。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Microsoft Office System中的XML简介 Microsoft Office 2003和2007 Office发布版的专业版都提供强大的XML支持。 1、Office Excel 2007、Office Word 2007 和 Office PowerPoint 2007 都使用 XML 作为默认文件格式,此更改具有多种优点。 (1)较小的文件大小。与 Office 早期版本中使用的二进制格式相比,新格式使用 ZIP 和其他压缩技术使文件大小减少 75%。 (2)简化了信息恢复过程并具有更强的安全性。XML是用户可读的,因此如果文件已损坏,您可以在Microsoft记事本或其他文本阅读器中打开该文件,然后至少可以恢复一些信息。另外,新文件会更安全,因为它们不能包含Visual Basic for Applications (VBA)代码。如果您使用新格式创建模板,则所有ActiveX控件和VBA宏都驻留在文件中的单独且更安全的部分中。另外,您还可以使用文档检查器等工具删除所有个人数据。 (3)更强的可移植性和灵活性。由于XML以文本格式而不是专用的二进制格式存储数据,因此客户可以定义他们自己的架构并以多种方式使用您的数据而无须支付版税。 2、每个Office程序都附带不同的工具集。您在Word中使用的用户界面和过程与您在Excel 或PowerPoint中使用的用户界面和过程不同。这是为什么?因为适用于Word的功能不一定适用于Excel,等等。 3、只要XML是标准格式的,Office程序就可以使用其他供应商的架构、转换和数据。 4、某些Office程序在后台使用XML,而某些程序(如Microsoft Office OneNote?)根本不支持XML。了解 Office 程序如何支持 XML 的最好方法是启动相应程序的联机帮助,并搜索XML。 目前为止没什么问题,但是,如果XML数据没有架构会怎么样呢?支持XML的Office程序有办法帮助您处理数据。例如,如果您在Word中打开没有附加架构的XML文件,Word 将同时显示标记和数据,并允许您在文件创建者或IT部门提供转换的情况下应用转换。至少,您可以查看文件中的标记和数据。 相反,如果您打开没有架构的XML文件,Excel 将自行推断架构,随后会允许您选择将此数据加载到只读文件中,或将数据映射到XML列表(在Microsoft Office Excel 2003中)或 XML表(在Office Excel 2007中)中。您可以使用XML列表和表对数据进行排序、筛选或计算。 Office Professional 2007和Microsoft Office 2003都提供相同的XML工具集。在Office Professional 2007中,必须先启用XML支持,然后从不同的位置启动这些工具。不过,在启动这些工具后,它们在Microsoft Office 2003和Office Professional 2007中的工作方式相同。以下步骤介绍如何启动Office Excel 2007和Office Word 2007的XML工具。 提示 Microsoft Office Access 2007在默认情况下会启用其XML工具,因此如果您使用的是Access,则可以跳过前面的步骤。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -启用Office Excel 2007和Office Word 2007中的XML工具
1、在Excel或Word中,单击“Microsoft Office 按钮”  ,然后单击“Excel 选项”或“Word 选项”,具体取决于所打开的程序。 2、选择“常用”。 3、在“使用Excel时采用的首选项”下,选取“在功能区显示‘开发工具’选项卡”,然后单击“确定”。 4、启动Office Excel 2007和Office Word 2007中的XML工具: 无论在哪个程序中,在“开发工具”选项卡上单击“XML”组中的任何可用命令。 启动 Office Access 2007 中的XML工具: (1)单击“外部数据”选项卡。 (2)执行下列操作之一: 在“导入”组中,单击“XML 文件”。 在“导出”组中,单击“更多”,然后单击“XML 文件”。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
示例1、创建XML文件 可以在“记事本”中输入XML代码。本例中,在“记事本”中输入下面的代码: <TodaysOrders> <SalesOrder> <Customer>ABC Co</Customer> <Address>123 North</Address> <City>Stow</City> <State>OH</State> <Zip>44224</Zip> <ItemSKU>23456</ItemSKU> <Quantity>500</Quantity> <UnitPrice>21.75</UnitPrice> </SalesOrder> <SalesOrder> <Customer>DEF Co</Customer> <Address>234 Carapace Lane</Address> <City>South Bend</City> <State>IN</State> <Zip>44685</Zip> <ItemSKU>34567</ItemSKU> <Quantity>20</Quantity> <UnitPrice>50.00</UnitPrice> </SalesOrder> </TodaysOrders> 说明:可以看到,在上面的代码中,标记成对出现,其中<TodaysOrders>即为根标记。 2、在Excel中导入XML数据 有多种方法将XML文件导入到Excel中,可以通过“打开”命令,也可以通过“列表”工具栏上的相应按钮,还可以通过“数据”菜单下的“XML”子菜单命令。将上面的XML文件导入Excel中后的结果如图4所示:  图4 此时,如果在Excel的XML列表中插入新的记录,可通过“文件”——“另存为”命令,并从“另存为”对话框中选择“XML数据”,从而将数据保存为XML数据。所以,Excel能读取和写入XML文件,允许用户在应用程序之间共享数据。 3、接着上面的步骤,在VBE编辑器中的“立即窗口”中查询XSD文件,输入语句: Print ActiveWorkbook.XmlMaps(1).Schemas(1).XML 按下回车键后,如图5所示。  图5 将出现的代码复制到“记事本”中,并进行排版后的XSD文件如下: 图6 4、最后一步,创建XSL转移文件(略)。 说明:如果已获取了一份XML数据,相关的XSD和XSL文件可能已同时提供。如果正阅读自已的XML数据,Excel将会推断出一个架构。 我们可以将Excel文件保存为XML文件,然后在Excel中再次打开XML文件。您可试试,使用XML文件,在原Excel文件中除图表以外的任何格式都会被完整的保存(详见参考文档2中相关内容)。
注:本文整理归纳自以下参考文档,其中部分图片截取自Excel帮助文档。 1、Excel帮助文档 2、巧学巧用Excel 2003 VBA与宏(中文版)
By fanjy in 2007-1-5
|