声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4290887.html

XML概述

XML是eXtensible Markup Language(可扩展标记语言)的缩写。

XML和HTML一样,都衍生于SGML (Standard Generalized Markup Language,标准通用化标记语言)。

SGML有非常强大的适应性,同时也非常复杂,其复杂程度无法适应网络上的日常应用,以致在小型的应用中难以普及。XML的产生就是为了简化SGML,以便用于更加通用的目的。

W3C于1998年2月批准了XML的1.0版本,XML既具有SGML的强大功能和可扩展性,同时又具有HTML.的简单性。它是一个非常简单的SGML语言,方便普通人的使用。可以认为,XML是SGML的一个子集,而HTML则是SGML的一个应用。

XML只是用来传递数据,它是一种纯文本格式,与平台没有关系。

XML与HTML比较

1、    HTML.将数据和其显示效果混在一起,它是一种表现技术,定义了如何显示信息的标签;而XML文档只是存储了数据和描述了数据之间的关系,没有规定该如何显示数据,即将数据和其显示进行了分离。

2、    HTML.的格式要求比较松散,HTML解释器通常采用尽量解释的机制.这祥容易造成同一个页面在不同的浏览器中可能显示出大不相同的结果;而XML是非常严格的标记语言,例如严格区分大小写等问题。

3、    HTML的标记集合是固定的,你不能在自己的应用中扩展HTML标记;而XML没有提供一组事先已经定义好的标签,只是提供一个标准,人们可以按照这个标准来定义自己专用的标记,所以XML的标记是可无限扩展的,它可以用于描述各种应用领城的数据。

4、    XML允许粒度更新,不必在XML文档每次有局部改变时都发送整个文档内容,只有改变的元索才必须从服务器发送到客户机;HTML不支持类似功能。

HTML规范的最终版本HTML 4.01,HTML目前己经不再是Web标记的标准,它已经被XHTML所取代。XHTML是HTML和XML的混合物,它完全采用XML的语法和规则来编写Web页面。

XML基本语法

文档声明

<?xml version="1.0" encoding="GB2312" standalone="yes" ?>

l  XML声明语句从 <?xml 开始,到 ?> 结束;

l  声明语句里必须有version属性,但是encoding和standalone属性是可选的;

l  version、encoding、standalone三个属性必须按上述顺序排列;

l  version属性值必须是1.0或1.1;

l  XML声明必须放在文件的开头,即文件的第一个字符必须是 < ,前面不能有空行或空格,关于这一点,有些解析器不那么严格。

1)        version属性

解析器遇到它不能识别的版本时,会拒绝解析。目前只有两个版本1.0或1.1。

这两个版本的标准几乎一样,只是在给元素命名时,对某些Unicode字符采取不同的处理方法,以及在某些主机系统里如何处理行结束符问题上也有不同的规定。

除非你遇到一些Unicode字符在1.0版本里不能使用,否则最好使用1.0版本,因为1.1版本的解析器还支持的不够。

2)        encoding属性

Unicode个字母(包括非拉丁字符)或下划线(_),不可是其他字符或其他标志符(注,不能以“$”符开头,这与Java语言命名不一样);

l  其他字符可以是数字、下划线和句点;

l  名字里不能有空格;

l  名字里不能含有冒号(:),严格说,这个字符是允许的,但是根据XML规范,它是“保留”的。我们尽量不要在文档中使用这个字符,除非我们在文档中使用了名称空间;

l  名字的开始字符不可以是xml,不管它是小写的,大写的,或者大小写混合的;

l  开始符 < 之后紧跟着元素名字,期间不能有空格,但是在元素名与结束符 > 之间可以有空格。

注,元素的这些命名规则同样可以应用到XML中其他对象的命名。

l  在HTML里,单词之间凡是被认为不重要的空白字符都会被从文档中删除。多于一个空格都被认为是没有意义的,因此只保留一个。但我们可以使用一个<pre>标签将这些内容括起来,这样就会原样显示了,注,不能使用 <p> 标签;但如果是在XML里,则会原样显示,注,如果使用IE打开,空白字符还是被删除了,这是因为IE并不是直接显示XML文档,它利用一种称之为XSL的技术,先把XML转换为HTML,然后再显示HTML文档。

l  删除行结束空白符:由于在Windows与Unix上的换行不一样,Windows上是使用回车加换行来表示一行的结束,但Unix却只使用一个换行,所以为了统一,标准是要删除除了一个换行符之外其他空白字符。

l  标记里的空白字符:

比如上面 <name> 标签后面有一个回车换行符,这些空白符是为了使文档更具有可读性,实际上不是数据的一部分。这些增强可读性的空白符又称为”,所以有如下两种替代方案:

;

">

">

种类型。

1、    CDATA

它表示属性值为普通文本字符串(注,与ELEMENT声明中的PCDATA关键字稍有不同,解析器在解析CDATA时,忽略某些保留字),当然,在属性设置值中出现的特殊字特,也需要使用字符的转义实体来表示,例如,用 &lt;表示字符 <,它是属性的默认值。

2、   ENUMERATED(枚举类型)

属性的类型可以是一组取值的列表,在XML文件中设置的属性值只能是这个列表中的某个值。注意,在DTD定义中并不会出现关键字ENUMERATED,如:

个内置的实体,如果需要,我们只能使用字符实体,如:

<!ENTITY % DefaultPhoneKind ""Home"">

<!ATTLIST phone kind (Home | Work | Cell | Fax) %DefaultPhoneKind;>

或者这样:

、#REQUIRED:说明必须设置该属性。

、#IMPUED:说明可以设置,也可以不设置该属性。

<!ATTLIST knows contacts IDREFS  #IMPLIED>

3、#FIXED:说明该属性的取值固定为一个默认值,在XML文件中不能将该属性设置为其他值。使用#FIXED时,还需要为该属性提供一个默认值。

<!ATTLIST contacts version CDATA #FIXED "1.0">

4、直接使用默认值:如果在属性的设置说明部分没有使用上面任何一种关键字,而是直接指定一个默认值的话,那么在XML文件中可以设,也可以不设置该属性。如果XML文件中没有设置该属性,该属性将被自动设置为DTD中定义的默认值;如果XMI.文件中设置了该属性,可以使用新的属性值来覆盖DTD中定义的默认值。

<!ATTLIST phone kind (Home|Work|Cell|Fax) "Home">

XML详解:第一部分的更多相关文章

  1. Web.xml详解(转)

    这篇文章主要是综合网上关于web.xml的一些介绍,希望对大家有所帮助,也欢迎大家一起讨论. ---题记 一.            Web.xml详解: (一)  web.xml加载过程(步骤) 首 ...

  2. Maven-pom.xml详解

    (看的比较累,可以直接看最后面有针对整个pom.xml的注解) pom的作用 pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需要遵 ...

  3. 【转】maven核心,pom.xml详解

    感谢如下博主: http://www.cnblogs.com/qq78292959/p/3711501.html maven核心,pom.xml详解 什么是pom?    pom作为项目对象模型.通过 ...

  4. C#中的Linq to Xml详解

    这篇文章主要介绍了C#中的Linq to Xml详解,本文给出转换步骤以及大量实例,讲解了生成xml.查询并修改xml.监听xml事件.处理xml流等内容,需要的朋友可以参考下 一.生成Xml 为了能 ...

  5. Tomcat配置(二):tomcat配置文件server.xml详解和部署简介

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  6. 前端技术之_CSS详解第一天

    前端技术之_CSS详解第一天 一html部分 略.... 二.列表 列表有3种 2.1 无序列表 无序列表,用来表示一个列表的语义,并且每个项目和每个项目之间,是不分先后的. ul就是英语unorde ...

  7. Tomcat(二):tomcat配置文件server.xml详解和部署简介

    Tomcat系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html 1. 入门示例:虚拟主机提供web服务 该示例通过设置虚拟主机来提供web服务 ...

  8. Maven配置文件setting.xml详解

    注:本文来源于:大话JAVA的那些事 <Maven配置文件setting.xml详解> <?xml version="1.0" encoding="UT ...

  9. Logback简介及配置文件logback.xml详解

    logback简介及配置文件说明 @author:wangyq @date:2021年3月31日 logback简介 ​ Logback是由log4j创始人设计的另一个开源日志组件,官方网站: htt ...

  10. 【maven】 pom.xml详解

    pom.xml详解 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www ...

随机推荐

  1. JavaScript 闭包整合

    初遇闭包感觉很困惑,上网查看了些许介绍,有很多没看懂,就想先对能懂的东西整整 首先觉得要了解闭包,要先对一.JavaScript的变量作用域和作用域链有基本了解 1.变量的作用域分为:全局变量和局部变 ...

  2. ES6,ES2105核心功能一览,js新特性详解

    ES6,ES2105核心功能一览,js新特性详解 过去几年 JavaScript 发生了很大的变化.ES6(ECMAScript 6.ES2105)是 JavaScript 语言的新标准,2015 年 ...

  3. zabbix agent 类型自带的key

    zabbix服务器端通过与zabbix agent通信来获取客户端服务器的数据,agent分为两个版本,在配置主机我们可以看到一个是agent,另一个是agent(active). agent:zab ...

  4. java中使用反射做一个工具类,来为指定类中的成员变量进行赋值操作,使用与多个类对象的成员变量的赋值。

    //------------------------------------------------我是代码的分割线 // 首选是一个工具类,在该工具类里面,定义了一个方法,public void s ...

  5. array DEMO

    [xiluhua@vm-xiluhua][~]$ declare -a array #申明数组 [xiluhua@vm-xiluhua][~]$ array=("a" " ...

  6. Asp.net Vnext api CORS( 跨域)

    概述 跨域资源共享(CORS )是一种网络浏览器的技术规范,它为Web服务器定义了一种方式,允许网页从不同的域访问其资源.而这种访问是被同源策略所禁止的.CORS系统定义了一种浏览器和服务器交互的方式 ...

  7. java 打印出99乘法口诀表

    public class Mutiplay { /** *实现99乘法表 * @param args */ public static void main(String[] args) { Syste ...

  8. asp.net 关闭子窗体 刷新主窗体

    主窗体************************************************************************************ //原窗口保留,以对话框 ...

  9. UML类图几种关系的总结(转)

    原文:http://gjhappyyy.iteye.com/blog/1422515 在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization), ...

  10. JAVA基础知识之IO——IO流(Stream)的概念

    Java IO 流 Java将不同的设备或载体(键盘.文件.网络.管道等)的输入输出数据统称为"流"(Stream),即JAVA的IO都是基于流的. JAVA传统的所有流类型类都包 ...