文章教程

15.1XML概述

8/31/2020 9:52:39 PM 人评论 次浏览

15.1 XML概述

XML的英文全称是eXtensible Markup Language,中文的意思是“可扩展标记语言”。它同HTML一样,是一种标记语言,但是XML的数据描述的能力要比HTML强很多,XML具有描述所有已知和未知数据的能力。XML扩展性比较好,可以为新的数据类型制定新的数据描述规则,作为对标记集的扩展。

XML目前已经成为不同系统之间数据交换的基础。它的商用前景之所以非常广阔,也是因为它满足了当前商务数据交换的需求,XML具有以下特点:

● XML数据可以跨平台使用并可以被人阅读理解;

● XML数据的内容和结构有明确的定义;

● XML数据之间的关系得以强化;

● XML数据的内容和数据的表现形式分离;

● XML使用的结构是开放的,可扩展的。

15.1.1 XML语法

XML语言对格式有着严格的要求,主要包括格式良好和有效性两种要求。格式良好有利于XML文档被正确地分析和处理,这一要求是相对于HTML语法混乱而提出的,它大大提高了XML的处理程序、处理XML数据的正确性和效率。XML文档满足格式良好的要求后,会对文档进行有效性确认,有效性是通过对DTD或Schema的分析判断的。

一个XML文档有以下几个部分组成:

(1)XML的声明

XML声明具有如下形式:

alt

XML标准规定声明必须放在文档的第一行。声明其实也是处理指令的一种,一般都具有以上代码的形式。表15-1列举了声明的常用属性和其赋值。

表15-1 XML声明的属性列表

alt

(2)处理指令PI

处理指令PI为处理XML的应用程序提供信息。处理指令PI的格式为:

alt

(3)XML元素

元素是组成XML文档的核心,格式如下:

alt

XML语法规则为每个XML文档都要包括至少一个根元素。根标记必须是非空标记,包括整个文档的数据内容,数据内容则是位于标记之间的内容。

下面示例代码是一个标准的XML文档:

alt

代码说明:第1行为XML声明,表明该XML采用的版本是1.0,字符编码为gb2312。第2行为处理指令,表明该文档使用xsl进行转换,处理的文档是style.xsl。第3行~第25行为XML元素。其中,第4行~第14行是定义第一个新闻的具体信息,包括了新闻的编号、标题、作者、类别、内容和发布时间6个节点。以下第15行~第24行又定义了另一个新闻的信息。

【实例15-1】XML文件的创建

本实例演示如何在Visual Studio 2012开发环境中创建一个XML文件,具体实现步骤如下:

01 启动Visual Studio 2012,创建一个ASP.NET Web空应用程序,命名为“实例15-1”

02 用右键单击网站名称“实例12-1”,在弹出的快捷菜单选择“添加”|“添加新项”命令,弹出如图15-1的“添加新项”对话框。

alt

图15-1 “添加新项”对话框

03 选择“已安装”模板下的“Visual C#”模板,并在模板文件列表中选中“XML文件”,然后在“名称”文本框输入该文件的名称XMLFile.xml,最后单击“添加”按钮。

04 在网站根目录自动生成一个如图15-2所示的XMLFile.xml文件。

alt

图15-2 生成的XML文件

05 单击XMLFile.xml文件,编写上面XML示例代码。

06 按快捷键Ctrl+F5运行程序,如图15-3所示。

alt

图15-3 运行效果

15.1.2 文档类型定义

文档类型定义(Document Type Definition,DTD)是一种规范,在DTD中可以向别人或XML的语法分析器解释XML文档标记集中每一个标记的含义。这就要求DTD必须包含所有将要使用的词汇列表,否则XML解析器无法根据DTD验证文档的有效性。

DTD根据其出现的位置可以分为内部DTD和外部DTD两种。内部DTD是指DTD和相应的XML文档处在同一个文档中,外部DTD就是DTD与XML文档处在不同的文档之中。

下面示例代码是包含内部DTD的XML文档:

alt

上面的代码中第2行~第11行是该XML的文档类型定义,在这里定义了XML文档中包含的每一个标记元素,分别有xinwen、news_id、news_title、news_author、news_ly、news_content和news_adddate。第12行~第23行的XML文档的标记元素组成的内容,也就XML文档的具体内容。

从以上代码可以看出描述DTD文档也需要一套语法结构,关键字是组成语法结构的基础,表15-2列举了构建DTD时常用的关键字。

表15-2 DTD中常用的关键字

alt

此外DTD还提供了一些运算表达式来描述XML文档中的元素,常用的DTD运算表达式如表15-3所示,其中A、B、C代表XML文档中的元素。

表15-3 DTD中定义的表达式

alt

DTD能够对XML文档结构进行描述,但DTD也有如下缺点:

● DTD不支持数据类型,而在实际应用中往往会有多种复杂的数据类型,例如布尔型、时间等。

● DTD的标记是固定的,用户不能扩充标记。

● DTD使用不同于XML的独立的语法规则。

15.1.3 可扩展样式语言

XSL的英文是eXtensible Stylesheet Language,翻译成中文就是“可扩展样式语言”。它是W3C制定的另一种表现XML文档的样式语言。XSL是XML的应用,符合XML的语法规范,可以被XML的分析器处理。

XSL是一种语言,通过对XML文档进行转换,然后将转换的结果表现出来。转换的过程是根据XML文档特性运行XSLT(XSL Transformation)将XML文档转换成带信息的树型结果。然后按照FO(Formatted Object)分析树,从而将XML文档表现出来。

XSL转换XML文档分为了几个步骤:建树和表现树。建树可以在服务器端执行,也可以在客户端执行。在服务器端执行时,把XML文档转换成HTML文档,然后发送到客户端。而在客户端执行建树的话,客户端必须支持XML和XSL。

XSL实际上就是通过模板将源文件文档按照模板的格式转换成结果文档的。模板定义了一系列的元素来描述源文档中的数据和属性等内容,在经过转换之后,建立树型结构。表15-4列举了XSL中常用的模板。

表15-4 XSL中常用的模板

alt

(续表)

alt

【实例15-2】XSL转换XML文档

本实例实现自定义的XSL可扩展样式对指定的XML文档进行格式转换,转换为浏览器可读的信息,具体实现步骤如下:

01 启动Visual Studio 2012,创建一个ASP.NET Web空应用程序,命名为“实例15-2”。

02 根据上例的步骤创建好XMLFile.xml文件。

03 用右键单击网站名称“实例15-2”,在弹出的快捷菜单选择“添加”|“添加新项”命令,弹出如图15-4的“添加新项”对话框

alt

图15-4 “添加新项”对话框

04 选择“已安装”模板下的“Visual C#”模板,并在模板文件列表中选中“XSLT文件”选项,然后在“名称”文本框输入该文件的名称Trans.xslt,最后单击“添加”按钮。

05 在网站根目录自动生成一个如图15-5所示的Trans.xslt文件。

alt

图15-5 生成xsl文件

06 单击Trans.xslt文件,编写如下代码:

alt

上面的代码中第1行为XML声明,表明该XML采用的版本是1.0,字符编码为gb2312。第2行为XSL声明,表明该XSL采用的版本是1.0。

第3行~第40行定义转换XML的模板(template),这里定义的模板是一个HTML标记,该HTML标记中包含一个table标记的定义,按照该模板,XSL将把XML数据放到HTML标记中进行显示。其中,第3行绑定XML文档的根节点xinwen;第7行~第14行定义表格的6个列标题;第14行~第36行循环news节点,并读取其中的数据,根据表格的列标题,依次将数据值绑定到每个单元格中。

07 在“实例15-2”中创建一个名为Default.aspx的窗体文件。

08 单击击网站的目录下的Default.aspx文件,进入的“视图编辑”界面,从工具箱中拖动一个Xml控件和一个Button控件。切换到“源视图”,在<form>和</form>标记之间编写代码如下:

alt

上述代码中第1行添加一个服务器Xml控件用于显示Xml1和Xsl文本的内容。第2行添加一个服务器按钮控件Button1并设置显示的文本和大小、单击事件Click。

09 单击网站目录下的Default.aspx.cs文件,在该文件中编写如下逻辑代码:

alt

代码说明:第1行定义处理页面Page加载事件Load的方法。第2行创建一个XmlDocument对象。第3行载入存储信息的XML文件。第4行设置在Xml1控件中显示的的Document。

第6行定义处理转换按钮Button1单击事件Click的方法。第7行创建一个XmlDocument对象。第8行载入存储信息的XML文件。第9行创建一个XslTransform对象。第10行导入xslt文件。第11行设置在Xml1控件中显示的Document。第12行执行文档的转换操作。

10 按快捷键Ctrl+F5运行程序,运行效果如图15-6所示。

alt

图15-6 运行效果

15.1.4 XPath

XPath是XSLT的重要组成部分。XPath的作用在于为XML文档的内容定位,并通过XPath来访问指定的XML元素。在利用XSL进行转换的过程中,匹配的概念非常重要。在模板声明语句xsl:template match = ""和模板应用语句xsl:apply-templates select = ""中,用引号括起来的部分必须能够精确地定位节点。具体的定位方法则在XPath中给出。

之所以要在XSL中引入XPath的概念,目的就是为了在匹配XML文档结构树时能够准确地找到某一个节点元素。可以把XPath比作文件管理路径:通过文件管理路径,可以按照一定的规则查找到所需要的文件;同样,依据XPath所制定的规则,也可以很方便地找到XML结构文档树中的任何一个节点,显然这对XSLT来说是一个最基本的功能。

XPath提供了一系列的节点匹配的方法。

● 路径匹配:路径匹配和文件路径的表示比较相似,通过一系列的符号来指定路径。

● 位置匹配:根据每个元素的子元素都是有序的原则来匹配。

● 亲属关系匹配:XML是一个树型结构,因此在匹配时可以利用树型结构的“父子”关系。

● 条件匹配:利用一些函数的运算结果的布尔值来匹配符合条件的节点。

以上简要概述了一下有关XML的知识,有关XML的主要知识包括以上这些内容,有兴趣的读者可以按照以上的知识框架来深入学习。

教程类别