例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文件的时刻,必需满足它们。
1.XML文件的第一行必需是声明该文件是XML文件以及它所运用的XML范例版本。在文件的前面不可以有别的元素或许解释。
2.在XML文件中有且只可以有一个根元素。我们的第一个例子中,〈参考资料〉... 〈/参考资料〉就是此XML文件的根元素。
3.在XML文件中的标记必需准确地封闭,也就是说,在XML文件中,掌握标记必 须有与之对应的完毕标记。如:〈称号〉标记必需有对应的〈/称号〉完毕标记,不像HTML,某些标记的完毕标记无足轻重。假如在XML文件中碰到自成一个单位的标记,就是相似于HTML 中的〈img src=.....〉的这些没有完毕标记的时刻,XML把它称为“空元素”,必需用如许的写法:〈空元素名/〉,假如元素中含有属性时写轨则为:〈空元素名 属性名=“属性值”/〉。
4.标记之间不得交织。在之前的HTML文件中,可以如许写:
〈B〉〈H〉XXXXXXX〈/B〉〈/H〉,〈B〉和〈H〉
标记之间有互相堆叠的地区,而在XML中,是严厉制止如许标记交织的写法,标记必需以规则性的序次来涌现。
5.属性值必须要用“ ”号括起来。如第一个例子中的“1.0”、“gb2312”、“人民币”。都是用“ ”号括起来了的,不能遗漏。
6.掌握标记、指令和属性称号等英文要辨别大小写。与HTML差别的是,在HTML中, 相似〈B〉和〈b〉的标记寄义是一样的,而在XML中,相似〈name〉、〈NAME〉或〈Name〉如许的标记是差别的。
7.我们晓得,在HTML文件中,假如我们要浏览器一成不变地将我们所输入的东西显现出来,可以将这些东西放到〈pre〉〈/pre〉或许〈xmp〉〈/xmp〉标记中心。这关于我们竖立HTML教授教养的网页是必不可少的,因为网页中要显现HTML的源代码。而在XML中,要完成如许的功用,就必需运用CDATA标记。在CDATA标记中的信息被剖析器一成不变地传给应用递次,而且不剖析该段信息中的任何掌握标记。CDATA地区是由:“〈![CDATA[”为最先标记,以“>〉”为完毕标记。比方:例2中的源码,除了“〈![CDATA[”和“>〉”标记,其他的内容剖析器将一成不变地交给下流的应用递次,纵然CDATA地区中的最先和末端的空缺以及换行字符等,都一样会被转交(注重CDATA是大写的字符)。
例2:
〈![CDATA[飞行的xml〉〉〉〉〉,:-) oooo〈〈〈〈〈〈〈 >〉
8.XML处置惩罚空缺字符和HTML不一样。HTML范例划定,不论有多少个空缺,都看成一个空缺来处置惩罚;而在XML中划定,一切标记之外的空缺,剖析器都要忠实地交给下流的应用递次处置惩罚。如许,我们偶然必需摒弃编写HTML文件时的缩排习气,因为缩排的空格,剖析器也要处置惩罚。如:
〈作者〉张三〈/作者〉 和 〈作者〉 张三 〈/作者〉
上述内容关于剖析器来讲是差别的(后者在〈作者〉〈/作者〉标记以内除了张三这个字符之外,还包含两个换行暗号以及“张三”前的笔墨缩排标记)。所以剖析器在去掉标记后将信息传给应用递次将有差别的处置惩罚结果。
假如我们想明白地通知XML递次,标记中的空缺有明白的寄义,不要随意去掉(如在一些诗中,空格有它详细的意义),则可在标记中到场一个XML内置的属性——xml:space 。如(注重属性称号和值的大小写):
〈诗歌 xml:space="preserver"〉 故国啊! 故国! 我的故国! 〈/诗歌〉
别的,在XML文件中,假如要用到表1的特别字符,必需用响应标记替换。
表1:
特别字符 替换标记 && & < ⁢ > > " " ' '
小结:
相符上述划定的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。
以上就是XML构造与语法入门的详细分享的细致内容,更多请关注ki4网别的相干文章!