XML初学进阶学习笔记(1)

2016-02-19 17:19 3 1 收藏

有一种朋友不在生活里,却在生命力;有一种陪伴不在身边,却在心间。图老师即在大家的生活中又在身边。这么贴心的服务你感受到了吗?话不多说下面就和大家分享XML初学进阶学习笔记(1)吧。

【 tulaoshi.com - Web开发 】

  简体中文码:GB2312

  繁体中文码:BIG5

  西欧字符: UTF-8

  1、一般实体

  我们前面说到的那个信件署名就是一般实体。定义一般实体的格式如下: 

  !ENTITY 实体名 "文本内容"〉 

  关于刚才的信件署名的实体定义如下:

  !ENTITY lettersign

  "张三

  某网络公司销售部门

  北京市海淀区中关村88号,100000"〉 

  另外,你也可以指定一个实体代替一个外部文件的内容,此时要使用SYSTEM这个关键字。例如:

  !ENTITY lettersign

  SYSTEM "http://www.mydomain.com/lettersign.xml"〉 

  在这个例子中,XML处理器将用指定文件的内容来替换实体指示。

  2、参数实体 

  与一般实体相同,参数实体既可以是内部的也可以是外部的。不过,参数实体只用在DTD中。

  参数实体的格式与一般实体很类似,只不过中间要加上%符。

  !ENTITY % 实体名 "文本内容"〉 

  3、实体的使用包括两部分:实体声明和实体引用。 

  4、实体声明 

  对于实体的声明应该放在文件类型DOCTYPE中。DOCTYPE一般放在文件头(即XML声明和DTD)之后,

  XML元素之前。这样一来,XML文件就变为下面的形式:

  ?xml version="1.0"?

  !DOCTYPE 文件根元素名 [ 

  实体声明部分

  ]

  文件根元素名

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

  具体数据内容

  /文件根元素名

  

  5、实体引用 

  说到实体引用,大家可能想起前面我们曾用代表字符〈。不错,这就是一个实体引用。

  简而言之,实体引用指的是引用一个在实体声明中已经声明过的一个实体。实体引用的形式很简单:

  &实体名; 

  6、实体引用有以下几点规则一定要注意: 

  在引用XML实体之前,必须已经在XML文件中对此实体进行过声明; 

  在实体引用中不能出现空格。也就是说,& lettersign;和&letterhead ;的用法都会引起错误。 

  尽管在一个实体中可以再引用其它实体,但是不能出现循环引用。也就是说,一个实体不能引用它自己;

  同样,也不能出现实体A引用实体B,然后实体B再反过来引用实体A的情况。 

  实体引用不能在DOCTYPE声明中出现。 

  实体引用的文本必须是形式良好的XML。 

  同样,参数实体的引用与一般实体的引用大同小异,只是要把实体前的符号&换为%就可以了,形式是:

  %实体名;

  

  7、实体引用不仅可以出现在字符数据中,还可以出现在标记的属性中。例如下面这个例子:

  联系人 公司=B公司 地址=&B公司地址; 

  如果在属性中出现实体引用,不但要遵守前面所述的实体引用的种种规则,还要注意以下两点: 

  在标记属性中不能引用一个外部实体。 

  引用的文本中不能出现字符,否则替换后就不再是一个形式良好的XML文件了。 

  通过这一节的讲述,想必大家已然了解:实体主要是用来代替字符数据的,它可以节省大量的录入工作。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

  8、使用外部DTD时,要在DOCTYPE中使用关键字SYSTEM。实际上,SYSTEM不是引用外部DTD的唯一方法,

  这个关键字主要用于引用一个作者或组织所编写的众多XML文件中通用的DTD。还存在一种外部DTD,

  它是一个由权威机构制订的,提供给特定行业或公众使用的DTD。因此,另一个引用外部DTD的办法是使用关键字PUBLIC,

  引用这一类公开给公众使用的DTD。

  当使用关键字PUBLIC进行引用时,这个外部DTD还需要得到一个标识名。引用公共DTD的形式为:

  !DOCTYPE 根元素 PUBLIC "DTD名称" "外部DTD的URL"

  9、这个DTD标识的命名规则和XML文件的命名规则稍有不同。具体地说,DTD名称只能包含字母、

  数字、空格和下面的符号:_%$#@()+:=/!*;?。同时,DTD名称还必须符合一些标准的规定。

  例如,ISO标准的DTD以ISO三个字母开头;被改进的非ISO标准的DTD以加号+开头;未被改进的非ISO标准的DTD以减号-开头。

  无论是哪一种情况,开始部分后面都跟着两个斜杠//及DTD所有者的名称。在这个名称之后又是两个斜杠//,

  再然后是DTD所描述的文件的类型。最后,在又一对斜杠之后是语言的种类(参见ISO 639)。例如下面这个公用DTD的引用:

  !DOCTYPE 联系人列表 PUBLIC "-//Luna Dong//Contact Data//CN"

  "http://www.mydomain.com/dtds/fclml.dtd" 

  10、除了根元素外,在定义其它元素时使用关键字ANY都是不好的习惯。一般来说,在写一个XML文件时需要严格遵循DTD的规则,

  这时,一个定义明确的DTD,虽然表面上似乎充满了条条框框,但实际上会使你在书写XML文件时有规可循,

  反而方便了你的工作和语法分析器的工作。相反,一个在元素定义中充满了ANY的DTD,反而可能会搞得你不知所措,一头雾水。

  11、在定义元素时,ETD的顺序是无关紧要的。因此

  !ELEMENT 姓名(#PCDATA)  

  !ELEMENT 联系人列表 ANY

  !ELEMENT 联系人(姓名)

  和

  !ELEMENT 联系人列表 ANY

  !ELEMENT 联系人(姓名)

  !ELEMENT 姓名(#PCDATA)  

  所定义的文件结构是完全相同的。 

  12、还有一点要注意,不能对不同的元素使用相同的元素名,即便这些元素的内容、包含的子元素不同也不行,

  因为它只会引起文件各个元素的混淆,使文件的可读性大打折扣。例如:

  !ELEMENT 联系人列表 ANY

  !ELEMENT 联系人(姓名)

  !ELEMENT 联系人(EMAIL)

  !ELEMENT 姓名(#PCDATA)

  !ELEMENT EMAIL(#PCDATA)

  在这个例子中,对联系人的重复定义,会引起错误。

13、最后再次强调一下元素的命名。元素名的第一个字母必须是字母、或下划线(_)、或冒号(:),

  后跟字母、数字、句号(.)、冒号、下划线、连结号(-)的组合,并且不能包含空白符,不能以xml开头。

  另外,尽管元素的第一个字母使用冒号是合法的,但最好避免这样做,因为它会引起混淆。再有需要注意的是,

  尽管XML1.0标准允许使用任何长度的文件名,但是实际的XML处理器常常会限制标记名的长度。

来源:http://www.tulaoshi.com/n/20160219/1614935.html

延伸阅读
标签: Web开发
先看最入门的例子,在记事本输入如下内容,再存为 001.html。 这是第一个JavaScript例子 html head Script Language ="JavaScript" // JavaScript Appears here. alert("这是第一个JavaScript例子!"); /Script /Head /Html 有如下几点要说明: ① 在本例中,JavaScript代码出现在 head /head中,并由标识 Script Language="JavaScript".../S...
标签: Web开发
1.1    写出一个 servelet 程序 1.2    写出一个 Jsp程序 1.3    编译一个 Servlet 程序 1.4    打包一个Servlets 和 Jsps程序 1.5    构建一个部署描述器     1.1    写出一个 servelet 程序   ...
环境:windows 2000 server + Oracle8.1.7 + sql*plus 目的:以oracle自带的scott模式为测试环境,主要通过试验体会分析函数的用法。 1.row_number() 的使用 原表信息: SQL break on deptno skip 1  -- 为效果更明显,把不同部门的数据隔段显示。 SQL select deptno,ename,sal   2  from emp   3  order by dep...
标签: Web开发
Preface:本文是W3CSchools上《Schema指南》的学习笔记。其中大部分内容是对指南的翻译总结。由于原文的例子更详尽生动,如果各位想阅读原文可以到这个网址http://www.w3schools.com/schema/default.asp。 同时,W3CSchools提供了测试,大家可以测试一下自己的理解程度。 首先简单的说一下,Schema中的简单类型(SimpleType)有三种:SimpleE...
关于 xml ,难以理解的不是 SQLServer 提供的函数,而是对 xml 本身的理解,看似很简单的文件格式,处理起来却是非常困难的。本文只是初探一下而已。 详见 SQLServer 联机帮助: 主题 说明 query() 方法( xml 数据类型) 此方法用于对 XML 实例进行查询。 value() 方法( xml 数据类型) 此方法用于从 XML 实例检索 SQL 类型的值。 exi...

经验教程

496

收藏

6
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部