XML入门

XML基础

XML作为一种优秀的数据存储形式、数据交换方式被广泛接受与应用。

了解XML

XML: 可扩展标记语言 (Extensible Markup Language),它提供了一套跨平台、跨网络、跨程序的数据描述方式,它是w3c组织发布的技术。

  1. xml有两个版本1.0 1.1,我们使用1.0版本(1.1不能向下兼容)。
  2. 可扩展标记语言
    • 标记性语言:html是标记型语言,使用标签操作。
    • 可扩展:html里的标签都是固定的,每个标签都有特定的含义, XML 不是固定的,标签可以自己定义, 比如可以写中文的标签<人></人> 。
    • 例如:一个XML文档实例
<?xml version="1.0" encoding="UTF-8"?>
<个人信息>
	<姓名>田诗琪</姓名>
	<生日>2011-04-11</生日>
	<性别>女</性别>
	<身高>83cm</身高>
</个人信息>
  1. SGML、HTML和XML之间的关系
  • SGML是一种在Web发明之前就早已存在的,它是一种定义标记语言的元语言。
  • HTML和XML都是从SGML发展而来的标记语言,因此,他们有一些共同点,如相似的语法和标记的使用。
  • 不过HTML是在SGML定义下的一个描述性的语言,只是SGML的一个应用,其DTD作为标准被固定下来
  • 而XML是SGML的一个简化版本,是SGML的一个子集。严格意义上来说,XML仍然是SGML。
  1. XML实现如下功能: 不同系统之间传输数据,数据结构清晰,利于维护,用于表示生活中关系的数据,经常用在配置文件。
  2. XML历史
  • 1998年2月,W3C发布了XML1.0标准-1998年2月,W3C发布了XML1.0标准
  • 2007年11月发布了XML1.0第5版。经过了4次修订。
    其目的是为了在Web上能以现有的超文本标记语言(HTML)的使用方式提供,接受和处理通用的SGML。XML是SGML的一个简化子集,它以一种开放的、自我描述的方式定义了数据结构。在描述数据内容的同时能突出对结构的描述,从而体现出数据与数据之间的关系。
  • W3C组织于2004年2月4日发布了XML1.1的推荐标准,后来又于2006年8月发布了第2版,这是最新的XML版本。
    xml发展历史
  1. HTML与XML主要区别
HTMLXML
功能用于数据显示用于描述数据和保存数据
标记标记是固定不变的没有固定标记,根据实际需要定义。XML本身是一门元语言
语法语法要求宽松有固定的语法要求

XML的语法基础

XML的文档分类

  1. 格式不良好的XML文档
  2. 格式良好的XML
  3. 有效的XML文档
    XML文档分类

XML的文档组成

XML文档在逻辑上主要由以下五个部分组成:

  • XML声明
  • 文档类型声明
  • 元素
  • 注释
  • 处理指令
  1. XML声明
    文档声明的具体语法格式如下所示:
<?xml version="1.0|1.1"[ encoding="编码方式"] [standalone=”yes|no”]?>

属性说明:
version: 必需包含该属性,指明以下文档遵循哪个版本的XML规范。该属性必须放在其它属性之前,属性的合法值为1.0或1.1。
encoding:该属性可以被省略,指明文档中要采用的字符编码方式。当省略该属性时,属性的默认值为utf-8。
standalone:该属性可以被省略,指定该XML文档是否和一个外部文档配套使用。该属性为yes是说明当前XML文档是一个独立的XML文档,与外部文件无关联。否则相反。当省略该属性时,属性的默认值为yes。

  1. 文档类型声明
    <!DOCTYPE china SYSTEM "mydtd.dtd">
  2. 处理指令
    处理指令(Processing Instructions,简称PI)允许文档中包含由应用程序来处理的指令。在XML文档中,有可能会包含一些非XML格式的数据,XML处理器无法处理这些数据,我们就可以通过处理指令来通知其它应用程序来处理这些数据。
    处理指令(PI)的语法和XML声明类似,以“<?”开始并以“?>”结束。常见的使用样式表单的处理指令如下所示。
<?xml-stylesheet href="hello.css" type="text/css"?>
<?xml-stylesheet href="hello.xsl" type="text/xsl"?>
  1. 注释
    XML文档中,注释可以出现在文档中其它标记之外的任何位置。另外,它们还可以在文档类型声明中语法(grammar)允许的地方出现。
    以“<!–”开始,以“- ->”结束
  • 注释不能出现在XML声明之前,XML声明必须是文档最前面的部分。下面的情况是不允许的:
 <!--Author :tanglin -->
  <?xml version="1.0"?>
  • 注释不能出现在标记中,下面的例子是非法的。
    <greeting<!--Begin greet-->>Hello,world!</greeting>
  • 注释可以包围和隐藏标记,但要注意的是,在增加注释之后,要保证剩余的文本仍然是一个结构完整的XML文档。下面的例子是错误的:
 <?xml version="1.0"?>
  <greeting>
  	<!--
  	<title>This is a greeting example--></title>
  	<content>Hello,world!</content>
  </greeting>
  • 当我们将注释部分去掉的时候,文档结构仍然是完整的。
	<?xml version="1.0"?>
  <greeting>
  	<content>Hello,world!</content>
  </greeting>
  • 字符串“–”(双连字符)不能在注释中出现
  1. 元素
  • XML元素构成:

    • 区分标记、元素和属性
      • 标记是由<>包含的对象,例如:就是一个标记。标记通常包括两种:开始标记和结束标记。
      • 元素通常包括开始标记、结束标记以及标记的内容构成,是文件的基本对象,是通过标记进行定义的。
      • 属性是为元素附加信息,总是以“属性名=”属性值””的形式给出。
  • 元素的形式

    • XML中元素有两种形式分别是:空元素和非空元素。
    • 空元素:空元素即内容为空的元素,编写时空元素中不能包括内容也不能包括子元素。空元素的写法有两种,分别是:
    • 单标记的形式,这种方式比较常见也是建议使用的方式
      <student/>
    • 双标记的形式,这种方式不建议使用
      <student></student>
    • 非空元素:所有的非空元素都是双标记的,开始标记和结束标记约定了元素的范围。非空元素包括如下三类:
      1)带有文本内容的元素,该内容位于开始标记和结束标记中间。
      2)带有子元素的元素,元素中可以嵌套子元素,而且嵌套的层数没有限制。
      3)同时带有子元素及文本内容的元素,这种类型的元素不建议使用
  • 元素的内容

    • 字符数据:如<tag>abc</tag>,元素内容是abc。
    • 字符引用和实体引用:如字符引用:
      <?xml version="1.0" encoding="UTF-8"?>
      <tag>abc&#60;</tag>
      实体引用:
      <?xml version="1.0" encoding="UTF-8"?>
      <tag>abc&lt;</tag>
      字符引用和实体引用
    • CDATA段
      CDATA段以字符串“<![CDATA[”开始,以字符串“]]>”结束。中间包含的都是纯字符数据,但字符数据可以是不包含CDATA段的结束定界符的任意字符串。在字符数据可以出现的任何地方都可以使用CDATA段。CDATA段主要用于需要将整个文本解释为字符数据而不是标记的情况下。例如:
      <?xml version = "1.0" ?>
      <java>
      <![CDATA[
      	if (a > b && c < b)
      		max = a;
      ]]>
      </java>
      
    • 空白处理
      可以在元素中使用一个特殊的属性xml:space,来通知应用程序保留此元素中的空白,xml:space 属性接受两个值:default 和 preserve。
      default :此值允许应用程序根据需要处理空白。 如果不包含 xml:space 属性,结果与使用 default 值相同。
      preserve :此值表示应用程序按原样保留空白,空白可能有含义。

XML相关技术

  1. 检查XML语义相关技术:DTD 和 Schema
  • DTD是Document Type Definitions的缩写,即文档类型定义。是W3C推荐验证XML文档的正式规范。一个XML文档同时遵守语法和DTD的语法规定,才能保证XML文档的易读性,更好的更准确的描绘数据。
  • DTD可以指定XML文件中哪些元素、那些属性是必需的,元素与元素之间的先后关系、嵌套关系以及出现次数等
  • XML Schema,即XML模式,也被称为XML模式定义(XML Schema Definition,XSD)。它与DTD一样用于验证XML文档有效性的方法。XML Schema本身也是一个XML文档。与DTD比较而言,DTD对对XML命名空间支持不好,而XML Schema对XML命名空间支持较好
  1. 生成和解析XML文档的相关技术
  • DOM:文档对象模型(DOM) 是基于树结构的用于程序访问和维护HTML和XML文档的应用程序接口(API)
  • JDOM: JDOM(Java Document Object Model,Java文档对象模型。为了给Java程序员提供一套简单易用的操作XML的API。
  • DOM4J:DOM4J是一个Java的XML API,类似于JDOM,用来读写XML文件的。DOM4J是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。无论性能、功能和易用性哪一方面都是非常出色的。如今你可以看到越来越多的Java软件都在使用DOM4J来读写XML。
  • SAX: SAX(Simple APIs for XML),由XML-DEV邮件列表的成员开发,是事实上的工业标准。使用SAX,解析器通过向应用程序报告解析事件流来告知应用程序文档的内容。SAX是基于事件的API,一旦事情开始发生,你不需要调用解析器,而是解析器调用程序。与DOM相比较,SAX不要求将整个XML文件一起装入内存。
  • Digester: Digester本来仅仅是Jakarta Struts中的一个工具,用于处理struts-config.xml配置文件。显然,将XML文件转换成相应的Java对象是一项很通用的功能,这个工具理应具有更广泛的用途,所以很快它就在Jakarta Commons项目(用于提供可重用的Java组件库)中有了一席之地。如今Digester随着Struts的发展以及其的公用性而被提到commons中独自立项,是apache的一个组件 apache commons-digester.jar,通过它可以很方便的从xml文件生成java对象。
  • XQuery: XQuery 即XML Query,是W3C所制定的一套标准,用来从类XML文档中提取信息,类XML文档可以理解成一切符合XML数据模型和接口的实体,他们可能是文件或RDBMS。XQuery相对于XML文件等同于SQL相对于数据库
  1. 显示XML文档的相关技术
  • CSS: CSS是Cascading Style Sheets(层叠样式表单)的缩写,它是一种用来表现HTML或 XML 等文件样式的计算机语言,能够真正做到网页表现与内容分离的一种样式设计语言。
  • XSLT: XSLT是扩展样式表转换语言(Extensible Style sheet Language Transformations)的简称,这是一种对XML文档进行转化的语言,XSLT中的T代表英语中的“转换”(transformation)。它是XSL(Extensible style sheet language)规范的一部分。XSLT用于将一种XML文档转换为另外一种XML文档,或者可被浏览器识别的其他类型的文档,比如HTML和XHTML。
  1. XML的命名空间
    在复杂的大型XML文档中,不可避免的会遇到标识名称相同,但代表的意义不同的现象。命名空间就是解决这类问的方法,它是通过在元素名前增加独特的标识符,制定元素的有效空间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值