您当时的方位:主页 > 言语编程 > XML

XML入门精解之结构与语法

2014-11-02  

   现在咱们暂时运用“记事本”来创立咱们的XML文件吧。先看一个XML文件:

  例1

  〈?xml version="1.0" encoding="gb2312" ?〉
  〈参考资料〉
   〈书本〉
   〈称号〉XML入门精解〈/称号〉
   〈作者〉张三〈/作者〉
   〈价格 钱银单位="人民币"〉20.00〈/价格〉
   〈/书本〉
   〈书本〉
   〈称号〉XML语法〈/称号〉
   〈!--此书行将出书--〉
   〈作者〉李四〈/作者〉
   〈价格 钱银单位="人民币"〉18.00〈/价格〉
   〈/书本〉
  〈/参考资料〉

  这是一个典型的XML文件,修改好后保存为一个以.xml为后缀的文件。咱们能够将此文件分为文件序文(Prolog)和文件主体两个大的部分。在此文件中的榜首行便是文件序文。该行是一个XML文件必需求声明的东西,而且也有必要坐落XML文件的榜首行,它主要是告知XML解析器怎么作业。其间,version是标明此XML文件所用的规范的版别号,必需求有;encoding指明晰此XML文件中所运用的字符类型,能够省掉,在你省掉此声明的时分,后边的字符码有必要是Unicode字符码(主张不要省掉)。因为咱们在这个比如中运用的是GB2312字符码,所以encoding这个声明也不能省掉。在文件序文部分还有一些声明句子,咱们在后边给予介绍。

  文件的其他部分都是归于文件主体,XML文件的内容信息寄存在此。咱们能够看到,文件主体是由开端的〈参考资料〉和完毕的〈/参考资料〉操控符号组成,这个称为XML文件的“根元素”;〈书本〉是作为直归于根元素下的“子元素”;在〈书本〉下又有〈称号〉、〈作者〉、〈价格〉这些子元素。钱银单位是〈价格〉元素中的一个“特点”,“人民币”则是“特点值”。

  〈!--此书行将出书--〉这一句同HTML相同,是注释,在XML文件里,注释部分是放在“〈!--”与“--〉”符号之间的部分。

  咱们能够看到,XML文件是适当简略的。同HTML相同,XML文件也是由一系列的符号组成,不过,XML文件中的符号是咱们自界说的符号,具有清晰的含义,咱们能够对符号中的内容的含义作出阐明。

  对XML文件有了开端的形象之后,咱们就来详细地谈一谈XML文件的语法。在讲语法之前,咱们必需求了解一个重要的概念,便是XML解析器(XML Parse)。

  1.XML解析器

  解析器的主要功用便是查看XML文件是否有结构上的过错,剥离XML文件中的符号,读出正确的内容,以交给下一步的应用程序处理。XML是一种用来结构化文件信息的符号言语,XML规范中关于怎么符号文件的结构性有一个详细的规律,解析器便是根据这些规律写出来的软件(多用Java写成)。同HTML相同,在浏览器中,有必要有HTML的解析器,这样浏览器才能够“读懂”各种用HTML符号所组成的网页,将它们显现在咱们面前。假如有浏览器的HTML解析器读不明白的符号,将会回来给咱们过错信息。

  因为现在的HTML符号实际上适当紊乱,存在许多不规范的符号(有的网页用IE能正常显现,而用Netscape Navigator则不可),所以从一开端,XML的规划者就严厉规则了XML的语法和结构,咱们编写的XML文件有必要遵从这些规则,不然XML解析器将毫不留情地给你显现过错信息。

  有两种XML文件,一种是Well-Formed XML文件,一种是Validating XML文件。

  假如一个XML文件满意XML规范中的某些相关规律,且没有运用DTD(文件格局界说——后胪陈)时,可称这份文件是Well-Formed。而假如一个XML文件是Well-Formed,且正确地运用了DTD,DTD中的语法又是正确的,那么这个文件便是Validating。对应两种XML文件,有两种XML解析器,一种是Well-Formed 解析器,一种是Validating解析器。IE 5中就内含Validating解析器,Validating解析器也可用来解析Well-Formed XML文件。

  查看它是否满意了Well-Formed的条件。咱们能够将方才修改的榜首个XML 文件用IE 5以上版别的浏览器翻开。

  咱们或许要问为什么在浏览器中的显现和我的源文件相同?没错,因为关于XML文件,咱们鼋龉匦乃 的内容,而它的显现方式是交给CSS或XSL来完结的。这儿,咱们并没有给这个XML文件界说它的CSS或XSL文件,所以它依照本来的方式来显现。实际上,关于电子数据交流,只是需求一个XML文件即可,假如要将它以某种方式显现出来,咱们就有必要修改CSS或XSL文件(这个问题会在今后评论)。

  2.Well-Formed的XML文件

  咱们知道,XML有必要是Well-Formed的,才能够被解析器正确地解析出来,显现在浏览器中。那么什么是Well-Formed的XML文件呢?主要有下面几个原则,咱们在创立XML文件的时分,有必要满意它们。

  首要,XML文件的榜首行有必要是声明该文件是XML文件以及它所运用的XML规范版别。在文件的前面不能够有其它元素或许注释。

  第二,在XML文件中有且只能够有一个根元素。咱们的榜首个比如中,〈参考资料〉... 〈/参考资料〉便是此XML文件的根元素。

  第三,在XML文件中的符号有必要正确地封闭,也便是说,在XML文件中,操控符号必 须有与之对应的完毕符号。如:〈称号〉符号有必要有对应的〈/称号〉完毕符号,不像HTML,某些符号的完毕符号可有可无。假如在XML文件中遇到自成一个单元的符号,便是相似于HTML 中的〈img src=.....〉的这些没有完毕符号的时分,XML把它称为“空元素”,有必要用这样的写法:〈空元素名/〉,假如元素中含有特点时写规律为:〈空元素名 特点名=“特点值”/〉。

  第四,符号之间不得穿插。在曾经的HTML文件中,能够这样写:

  〈B〉〈H〉XXXXXXX〈/B〉〈/H〉,〈B〉和〈H〉

  符号之间有彼此堆叠的区域,而在XML中,是严厉制止这样符号交织的写法,符号有必要以规则性的次第来呈现。

  第五,特点值必需求用“ ”号括起来。如榜首个比如中的“1.0”、“gb2312”、“人民币”。都是用“ ”号括起来了的,不能漏掉。

  第六,操控符号、指令和特点称号等英文要区别大小写。与HTML不同的是,在HTML中, 相似〈B〉和〈b〉的符号含义是相同的,而在XML中,相似〈name〉、〈NAME〉或〈Name〉这样的符号是不同的。

  第七,咱们知道,在HTML文件中,假如咱们要浏览器原封不动地将咱们所输入的东西显现出来,能够将这些东西放到〈pre〉〈/pre〉或许〈xmp〉〈/xmp〉符号中心。这关于咱们创立HTML教育的网页是必不可少的,因为网页中要显现HTML的源代码。而在XML中,要完成这样的功用,就有必要运用CDATA符号。在CDATA符号中的信息被解析器原封不动地传给应用程序,而且不解析该段信息中的任何操控符号。CDATA区域是由:“〈![CDATA[”为开端符号,以“>〉”为完毕符号。例如:例2中的源码,除了“〈![CDATA[”和“>〉”符号,其他的内容解析器将原封不动地交给下流的应用程序,即便CDATA区域中的开端和完毕的空白以及换行字符等,都相同会被转交(留意CDATA是大写的字符)。

  例2

  〈![CDATA[翱翔的xml〉〉〉〉〉,:-)
  oooo〈〈〈〈〈〈〈
  >〉

  第八,XML处理空白字符和HTML不相同。HTML规范规则,不论有多少个空白,都当作一个空白来处理;而在XML中规则,一切符号以外的空白,解析器都要忠实地交给下流的应用程序处理。这样,咱们有时有必要摒弃编写HTML文件时的缩排习气,因为缩排的空格,解析器也要处理。如:

   〈作者〉张三〈/作者〉
  和
   〈作者〉
   张三
   〈/作者〉

  上述内容关于解析器来说是不同的(后者在〈作者〉〈/作者〉符号之内除了张三这个字符以外,还包含两个换行记号以及“张三”前的文字缩排符号)。所以解析器在去掉符号后将信息传给应用程序将有不同的处理结果。

  假如咱们想清晰地告知XML程序,符号中的空白有清晰的含义,不要随意去掉(如在一些诗中,空格有它详细的含义),则可在符号中参加一个XML内置的特点——xml:space 。如(留意特点称号和值的大小写):   

  〈诗篇 xml:space="preserver"〉
   祖国啊! 祖国!
   我的祖国!
   〈/诗篇〉

  别的,在XML文件中,假如要用到表1的特别字符,有必要用相应符号代替。

  表1

  特别字符 代替符号
  && &
  < &it;
  > >
  " "
  ' &apos;

  在此做个小结:契合上述规则的XML文件便是Well-Formed的XML文件。这是编写XML文件的最基本要求。能够看到XML文件的语法规则比HTML要严厉多了。因为有这样的严厉规则,软件工程师编写XML的解析器就简单多了,不像编写HTML言语的解析器,有必要费尽心思去习惯不同的网页写法,进步自己浏览器的习惯能力。实际上,这关于咱们初学者来说,也是一件功德。该怎样就怎样,不用像本来那样去疑问各种HTML的写法。

  咱们看到,在XML文件中,用的大多都是自界说的符号。可是咱们考虑一下,假如两个同行业的公司A和B要用XML文件彼此交流数据,A公司用〈价格〉符号来表明他们产品的价格信息,而B公司或许用〈价格〉来表明价格信息。假如一个XML应用程序来读取他们各自的XML文件中的信息时,假如它只知道〈价格〉符号里表明的是价格信息,那么B公司的价格信息就读不出来,必将发生过错。明显,关于想使用XML文件来交流信息的实体来说,他们之间有必要有一个约好——即编写XML文件能够用哪些符号,母元素中能够包含哪些子元素,各个元素呈现的次序,元素中的特点怎样界说等。这样他们在用XML交流数据时才能够四通八达。这种约好称为DTD(Document Type Definition,文档格局界说)。能够把DTD看作编写XML文件的模板。关于同行业之间的XML数据交流,有一个固定的DTD将会便利许多。比如说,假如网上的各大电子商场的XML网页都遵从同一个DTD时,那么咱们就能够轻松地根据这个DTD 编写一个应用程序,去网上将咱们感兴趣的东西主动抓回来。事实上已经有了好几个界说好的DTD,如前面所说的MathML、SMIL等。

  假如一个XML文件是Well-Formed的,而且它是正确的根据某个DTD树立的,那么,这个XML文件就被称为:Validating XML文件。相应的解析器就称为:Validating Parser。