ITPub博客

首页 > 应用开发 > IT综合 > XML初学进阶学习笔记(1)(转)

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

原创 IT综合 作者:amyz 时间:2007-08-12 15:17:52 0 删除 编辑
XML初学进阶学习笔记(1)(转)[@more@]

  简体中文码:GB2312

  繁体中文码:BIG5

  西欧字符: UTF-8

  1、一般实体

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

  

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

  

  "张三

  某网络公司销售部门

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

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

  

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

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

  2、参数实体 

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

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

  

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

  4、实体声明 

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

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

  

  

  实体声明部分

  ]>

  <文件根元素名>

  具体数据内容

  

  

  5、实体引用 

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

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

  &实体名; 

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

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

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

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

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

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

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

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

  %实体名;

  

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

  <联系人 公司=“B公司” 地址=“&B公司地址;”> 

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

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

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

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

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

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

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

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

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

  

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

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

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

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

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

  

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

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

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

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

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

    

  

  

  和

  

  

    

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

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

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

  

  

  

  

  

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

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

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

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

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


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10752019/viewspace-950301/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    3982
  • 访问量
    7894342