国语自产精品视频在线看:您身边最放心的安全下载站! 最新软件|热门排行|软件分类|软件专题|厂商大全

国语自产精品视频在线看

技术教程
您的位置:首页网络编程Xml编程 → XML入门精解之结构与语法

XML入门精解之结构与语法

我要评论 2010/02/16 18:59:35 来源:国语自产精品视频在线看 编辑:绿色资源站 [ ] 评论:0 点击:489次

  我们暂【wǒ men zàn】且使用“记事本🗾”来创建【lái chuàng jiàn】我们的XML文件吧。先看一【xiān kàn yī】🍚个🗨XML文件:

  例1

  〈?xml version="1.0" encoding="gb2312" ?〉
  〈参考资【cān kǎo zī】料🤘〉
   〈书籍【shū jí】〉
   〈名称【míng chēng】❗〉XML入门精【rù mén jīng】解〈/名称【míng chēng】❗〉
   〈作者【zuò zhě】〉张三🛑〈/作者【zuò zhě】〉
   〈价格👺 货币单🀄位【wèi】🎃="人民币【rén mín bì】🔢"〉20.00〈/价格👺〉
   〈/书籍【shū jí】〉
   〈书籍【shū jí】〉
   〈名称【míng chēng】❗〉XML语法【yǔ fǎ】〈/名称【míng chēng】❗〉
   〈!--此书即【cǐ shū jí】🤐将出版--〉
   〈作者【zuò zhě】〉李四〈/作者【zuò zhě】〉
   〈价格👺 货币单🀄位【wèi】🎃="人民币【rén mín bì】🔢"〉18.00〈/价格👺〉
   〈/书籍【shū jí】〉
  〈/参考资【cān kǎo zī】料🤘〉

  这是一个🍯典型的【de】XML文件,编辑好后保存【hòu bǎo cún】为一个【wéi yī gè】🍯以【yǐ】.xml为后缀的【de】文件。我们可以【yǐ】将此【cǐ】⚽文件分【wén jiàn fèn】⏺为文件序言【xù yán】📺(Prolog)和文件主体两个大的【de】部分🔷。在此【cǐ】🦒文件中【wén jiàn zhōng】的【de】🐿第一行【dì yī háng】即是文件序言【xù yán】📺。该行是一个🍯XML文件必🗾须要声【xū yào shēng】明的东【míng de dōng】西,而且也必须位【bì xū wèi】于🎍XML文件的【de】第一行【dì yī háng】,它主要是告诉【shì gào sù】XML解析器【jiě xī qì】🃏如何工➗作【zuò】。其中👩,version是标明【shì biāo míng】🎉此【cǐ】🦒XML文件所🍽用的标【yòng de biāo】准的【de】版本号🙅,必须要😯有🐝;encoding指明了此【cǐ】🦒XML文件中【wén jiàn zhōng】所使用的【de】字符类型,可以【yǐ】省🐱略,在你省🚇略此【cǐ】声🏒明的时【míng de shí】候,后面的【de】❌字符码【zì fú mǎ】必须是【bì xū shì】Unicode字符码【zì fú mǎ】(建议不要省略【yào shěng luè】)。因为我们在【wǒ men zài】这个例子中使用的【de】是GB2312字符码【zì fú mǎ】,所以【yǐ】encoding这个声明也不能省略🔄。在文件【zài wén jiàn】序言【xù yán】📺部分🔷还有🐝一些声🐼明语句,我们在【wǒ men zài】后面给【hòu miàn gěi】♋予介绍【yǔ jiè shào】🤦。

  文件的💽其余部🏘分都是属于文件主【wén jiàn zhǔ】体👤,XML文件的💽内容信【nèi róng xìn】🥦息存放【xī cún fàng】在此📳。我们可【wǒ men kě】💕以看到,文件主【wén jiàn zhǔ】体👤是由开始的💽〈参考资🗞料【liào】〉和结束的💽〈/参考资🗞料【liào】〉控制标🎯记组成,这个称【zhè gè chēng】为XML文件的💽“根元素”;〈书籍【shū jí】😷〉是作为🥎直属于根元素下的💽“子元素【zǐ yuán sù】”;在〈书籍【shū jí】😷〉下又有【xià yòu yǒu】〈名称〉、〈作者【zuò zhě】〉、〈价格【jià gé】🚗〉这些子元素【zǐ yuán sù】。货币单位是〈价格【jià gé】🚗〉元素中🈶的一个【de yī gè】⏸“属性【shǔ xìng】🚏”,“人民币【rén mín bì】”则是“属性【shǔ xìng】值😌”。

  〈!--此书即将出版--〉这一句🉑同【tóng】🐂HTML一样🔤,是注释【shì zhù shì】,在【zài】XML文件里,注释部分是放🥟在【zài】“〈!--”与“--〉”标记之⭐间的部【jiān de bù】分。

  大家可💙以看到💸,XML文件是【wén jiàn shì】相当简🐀单的【dān de】。同HTML一样🕷,XML文件也【wén jiàn yě】是由一系列的【xì liè de】标记组成👭,不过,XML文件中【wén jiàn zhōng】的标记【de biāo jì】是我们【shì wǒ men】🎎自定义🛋的标记【de biāo jì】,具有明确的含🧙义,我们可【wǒ men kě】以对标【yǐ duì biāo】记中的内容的🕓含义作【hán yì zuò】🐎出说明。对XML文件有了初步的印象😯之后,我们就来详细地谈一【dì tán yī】🌼谈XML文件的【wén jiàn de】语法【yǔ fǎ】。在讲语法【yǔ fǎ】之前,我们必须要了🏁解一个【jiě yī gè】📛重要的概念【gài niàn】,就是🍥XML解析器(XML Parse)。

  1.XML解析器

  解析器【jiě xī qì】🍈的【de】🤮主要功能就是【néng jiù shì】检查【jiǎn chá】XML文件是否有结构上的【de】🤮错误🎋,剥离【bāo lí】XML文件中【wén jiàn zhōng】的【de】标记🚋,读出正👳确的【de】🤮内容,以交给下一步🧛的应用【de yīng yòng】🤕程序处理🚞。XML是一种用来结【yòng lái jié】构化文件信息【jiàn xìn xī】的【de】标记🚋语言【yǔ yán】📁,XML规范中对于如何标记【hé biāo jì】文件的【de】🤮结构性【jié gòu xìng】有一个详细的【xiáng xì de】🤦法则【fǎ zé】,解析器【jiě xī qì】🍈就是根据这些法则写【fǎ zé xiě】出来的【de】🤮软件(多用【duō yòng】Java写成)。同HTML一样🙋,在浏览👃器中🔜,必须有【bì xū yǒu】HTML的【de】解析😙器📙,这样浏【zhè yàng liú】览器📙才能够💵“读懂【dú dǒng】”各种用HTML标记所🐸组成的【de】🤮网页,将它们显示在我们面前【qián】🏈。如果有【rú guǒ yǒu】✖浏览器📙的【de】🤮HTML解析器【jiě xī qì】🍈读不懂🦈的【de】标记🚋,将会返回给我【huí gěi wǒ】♒们错误🎋信息。

  由于现在的🎉HTML标记实【biāo jì shí】际上相㊙当混乱,存在大【cún zài dà】量不规范的标记(有的网🔼页用IE能正常显示【xiǎn shì】,而用🥠Netscape Navigator则不行🏖),所以从一开始,XML的设计⛑者就严【zhě jiù yán】格规定【gé guī dìng】🥍了【le】XML的语法🍳和结构,我们编➿写的XML文件必须遵循【xū zūn xún】这些规【zhè xiē guī】定,否则XML解析器将毫不📊留情地【liú qíng dì】给你显【gěi nǐ xiǎn】🥋示错误【shì cuò wù】信息。

  有两种XML文件【wén jiàn】😽,一种是【yī zhǒng shì】🚈Well-Formed XML文件【wén jiàn】😽,一种是【yī zhǒng shì】🚈Validating XML文件【wén jiàn】😽。

  如果一【rú guǒ yī】🐊个🤲XML文件🔽满足【mǎn zú】XML规范中的某些相关法则【zé】,且没有【qiě méi yǒu】使用【shǐ yòng】DTD(文件🔽格式定【gé shì dìng】义——后详述)时,可称这【kě chēng zhè】份文件【fèn wén jiàn】🔽是【shì】🕉Well-Formed。而如果一【rú guǒ yī】🐊个🤲XML文件🔽是【shì】🕉Well-Formed,且正确🈯地使用【shǐ yòng】了DTD,DTD中的语法又是【shì】🦊正确的,那么这♊个🤲文件🔽就是【shì】🕉Validating。对应两【duì yīng liǎng】✴种【zhǒng】🖊XML文件🔽,有两种【zhǒng】🖊XML解析器【jiě xī qì】🌆,一种【zhǒng】是【shì】📸Well-Formed 解析器【jiě xī qì】🌆,一种【zhǒng】是【shì】📸Validating解析器【jiě xī qì】🌆。IE 5中就内【zhōng jiù nèi】🧘含【hán】🚿Validating解析器【jiě xī qì】🌆,Validating解析器【jiě xī qì】🌆也可用来解析Well-Formed XML文件🔽。

  检查它⛵是否满【shì fǒu mǎn】足了Well-Formed的条件🚩。我们可以将刚【yǐ jiāng gāng】才编辑【cái biān jí】的第一🦃个【gè】🕰XML 文件用【wén jiàn yòng】IE 5以上版⤵本的浏览器打开。

  大家可【dà jiā kě】能要问【néng yào wèn】为什么【wéi shí me】❇在浏览器中的🚡显示🏎和我的【hé wǒ de】源【yuán】🛐文件一样?没错,因为对【yīn wéi duì】🍣于XML文件,我们鼋龉匦乃【yǔ guǐ nǎi】 的内容【de nèi róng】,而它的🌀显示🏎形式是交给CSS或【huò】XSL来完成的。这里👳,我们并没有给这个🗝XML文件定义它的【yì tā de】CSS或【huò】XSL文件,所以它按照原⬇来的形【lái de xíng】📈式来显示🏎。实际上,对于电🕗子数据【zǐ shù jù】交换【jiāo huàn】,仅仅需【jǐn jǐn xū】要一个💽XML文件即【wén jiàn jí】🙄可【kě】,如果要将它以【jiāng tā yǐ】某种形🐚式显示🏎出来,我们就必须编🎲辑【jí】🍣CSS或【huò】XSL文件(这个🗝问题会在以后讨🕧论🕑)。

  2.Well-Formed的【de】XML文件🚶

 我们知【wǒ men zhī】道,XML必须是🛂Well-Formed的🌕,才能够被解析器正确地解析【dì jiě xī】🎎出来,显示在浏览器【liú lǎn qì】中。那么什么是🐤Well-Formed的🌕XML文件呢【wén jiàn ne】?主要有【zhǔ yào yǒu】下面几🔞个准则,我们在👲创建【chuàng jiàn】XML文件的【wén jiàn de】😱时候,必须满【bì xū mǎn】🔉足它们。

 首先【shǒu xiān】🎻,XML文件的第一行👮必须是【bì xū shì】🌗声明该【shēng míng gāi】文件是XML文件以【wén jiàn yǐ】及它所使用的XML规范版【guī fàn bǎn】本。在文件的前面🛄不能够🍔有其它【yǒu qí tā】元素或者注释🗣。

 第二【dì èr】😇,在【zài】XML文件中有且只能够有【néng gòu yǒu】一个根🌃元素。我们的【wǒ men de】🚩第一个🎏例子中【lì zǐ zhōng】,〈参考资🔇料〉... 〈/参考资🔇料〉就是此【jiù shì cǐ】XML文件的🌳根元素。

 第三【dì sān】,在XML文件中【wén jiàn zhōng】❄的标记【biāo jì】🏑必须正确地关【què dì guān】💴闭【bì】,也就是说,在XML文件中【wén jiàn zhōng】❄,控制标记【biāo jì】🏑必 须有与之对应的🌄结束标【jié shù biāo】⌚记【jì】。如【rú】🔣:〈名称【míng chēng】👲〉标记【biāo jì】🏑必须有对🤙应的🌄〈/名称【míng chēng】👲〉结束标【jié shù biāo】⌚记【jì】,不像HTML,某些标记【biāo jì】🏑的结束【de jié shù】标⌚记可有【jì kě yǒu】可⚫无。如【rú】🔣果在XML文件中【wén jiàn zhōng】❄遇到自【yù dào zì】成一个单元的🐊标记【biāo jì】🏑,就是类😹似于HTML 中的🔴〈img src=.....〉的这些没有结束标【jié shù biāo】⌚记【jì】的时候🃏,XML把它称为“空元素【kōng yuán sù】💉”,必须用这样的【zhè yàng de】写法【xiě fǎ】:〈空元素【kōng yuán sù】💉名🈴/〉,如【rú】果元🏺素中含🍸有属性【yǒu shǔ xìng】时写法【xiě fǎ】则为✂:〈空元素【kōng yuán sù】💉名🈴 属性名【shǔ xìng míng】🎠=“属性值”/〉。

 第四,标记之间不得交叉🍎。在以前【zài yǐ qián】的🥏HTML文件中,可以这【kě yǐ zhè】样写【yàng xiě】🛢:

 〈B〉〈H〉XXXXXXX〈/B〉〈/H〉,〈B〉和【hé】😓〈H〉

  标记之间有相互重叠【hù chóng dié】的区域,而在【ér zài】📫XML中,是严格🏑禁止这💍样标记【yàng biāo jì】交错的写法,标记必须以规【xū yǐ guī】则性的【zé xìng de】🚋次序来出现🛵。

  第五,属性值必须要【bì xū yào】💓用“ ”号括起🏤来【lái】。如第一个例子中的【zhōng de】🎧“1.0”、“gb2312”、“人民币【rén mín bì】”。都是用🤣“ ”号括起🏤来了的【lái le de】,不能漏掉🔤。

  第六【dì liù】,控制标记、指令和【hé】🏒属性名🛶称等英【chēng děng yīng】文要区🔰分大小写。与HTML不同的是🏐,在HTML中【zhōng】🥎, 类似【lèi sì】🔼〈B〉和【hé】🏒〈b〉的标记含义是🏐一样的【yī yàng de】,而在【ér zài】XML中【zhōng】🥎,类似【lèi sì】🔼〈name〉、〈NAME〉或🚵〈Name〉这样的🚾标记是【biāo jì shì】🏐不同的。

  第七💁,我们知道【dào】🌯,在HTML文件中【zhōng】🌃,如果我们要浏【men yào liú】💧览器原【lǎn qì yuán】封不动地将我们所输🛶入的东西显示🍋出来,可以将【kě yǐ jiāng】💩这些东【zhè xiē dōng】🖼西放到〈pre〉〈/pre〉或者〈xmp〉〈/xmp〉标记【biāo jì】⏸中【zhōng】间👱。这对于🌓我们创建HTML教学的【jiāo xué de】网页是必不可【bì bú kě】🐢少的,因为网页中【zhōng】要显示🍋HTML的源代【de yuán dài】码【mǎ】🚰。而在XML中【zhōng】,要实现这样的功能🍧,就必须【jiù bì xū】♎使用CDATA标记【biāo jì】⏸。在CDATA标记【biāo jì】⏸中【zhōng】的信息被解析🤸器原封【qì yuán fēng】不动地传给应用程序【chéng xù】,并且不【bìng qiě bú】解析该段信息中【zhōng】的任何控制标记【biāo jì】⏸。CDATA区域是由:“〈![CDATA[”为开始🍾标记【biāo jì】⏸,以【yǐ】“>〉”为结束【wéi jié shù】标记【biāo jì】⏸。例【lì】如🐾:例【lì】2中的源【zhōng de yuán】👸码【mǎ】🚰,除了【chú le】“〈![CDATA[”和【hé】🤤“>〉”符号【fú hào】🦕,其余的👑内容解析器将原封不动地交给下游【gěi xià yóu】的应用【de yīng yòng】程序【chéng xù】,即使【jí shǐ】📇CDATA区域中【zhōng】💚的开始和【hé】🤤结尾的空白以【yǐ】及换行【jí huàn háng】字符等【zì fú děng】,都同样🚐会被转🦆交(注意🛎CDATA是大写的字符)。

  例2

  〈![CDATA[飞翔的【fēi xiáng de】🙂xml〉〉〉〉〉,:-)
  oooo〈〈〈〈〈〈〈
  >〉

  第八,XML处理空【chù lǐ kōng】🍍白字符【bái zì fú】和HTML不一样。HTML标准规定,不管有【bú guǎn yǒu】👋多少个【duō shǎo gè】🙄空白【kōng bái】,都当作一个空白【kōng bái】来处理【lǐ】;而在【ér zài】XML中规定【zhōng guī dìng】👿,所有标【suǒ yǒu biāo】记以外【jì yǐ wài】👩的空白【kōng bái】,解析器都要忠实地交给下游🏡的应用🗑程序处理【lǐ】。这样,我们有🥖时必须摒弃编🤲写🎃HTML文件时🍋的缩排【de suō pái】习惯,因为缩😑排的空【pái de kōng】格,解析器也要处理【lǐ】。如🥥:

   〈作者【zuò zhě】🍭〉张三【zhāng sān】🚼〈/作者【zuò zhě】🍭〉
  和
   〈作者【zuò zhě】🍭〉
   张三【zhāng sān】🚼
   〈/作者【zuò zhě】🍭〉

  上述内【shàng shù nèi】❗容对于🍭解析器来说是【lái shuō shì】不同的(后者在🙂〈作者〉〈/作者〉标记之【biāo jì zhī】内除了张三【zhāng sān】🔕这个字符【fú】🖌以外【yǐ wài】,还包括【hái bāo kuò】🈷两个换🗺行记号以及“张三【zhāng sān】🔕”前的文🥀字缩排【zì suō pái】符【fú】号)。所以解析器在去掉标记后将信息传🔘给应用程序将有不同【yǒu bú tóng】的处理【de chù lǐ】💿结果。

  如果我们想明【men xiǎng míng】确地告诉XML程序【chéng xù】🌅,标记中【biāo jì zhōng】的空白【de kōng bái】有明确的含义,不要随🔤便去掉【biàn qù diào】🔟(如在一🆗些诗中,空格有它具体【tā jù tǐ】的意义🉐),则可在标记中【biāo jì zhōng】加入一【jiā rù yī】🚁个【gè】XML内置的⛄属性——xml:space 。如(注意属【zhù yì shǔ】性名称🎧和值的大小写🍚):   

  〈诗歌【shī gē】😤 xml:space="preserver"〉
   祖国啊【zǔ guó ā】! 祖国!
   我的祖🕧国!
   〈/诗歌【shī gē】😤〉

 另外,在【zài】XML文件中🎪,如果要🎣用到表【yòng dào biǎo】1的特殊😡字符,必须用相应符号代替【hào dài tì】。

 表1

  特殊字符 替代符【tì dài fú】➕号【hào】😑
  && &
  < &it;
  > >
  " "
  ' &apos;

  在此做个小结【gè xiǎo jié】📢:符合上述规定的XML文件就【wén jiàn jiù】是Well-Formed的XML文件。这是编【zhè shì biān】❤写【xiě】🏓XML文件的🏀最基本要求💯。可以看到XML文件的🏀语法【fǎ】规🤬定比【dìng bǐ】HTML要严格多了。由于有这样的严格规定,软件工程师编【chéng shī biān】🎙写【xiě】🏓XML的解析【de jiě xī】👨器就容易多了,不像编【bú xiàng biān】写【xiě】🏓HTML语言的🏬解析器,必须费【bì xū fèi】尽心思【jìn xīn sī】去适应不同的【bú tóng de】网页写【wǎng yè xiě】🛒法【fǎ】,提高自🌅己浏览【jǐ liú lǎn】器的适🏑应能力。实际上⏪,这对于【zhè duì yú】我们初学者来【xué zhě lái】说👉,也是一件好事【jiàn hǎo shì】😆。该怎样🕔就怎样,不必像原来那🔘样去疑惑各种👧HTML的写【xiě】🏓法【fǎ】。

  我们看✈到【dào】🏿,在XML文件中【wén jiàn zhōng】🏋,用的大【yòng de dà】💕多都是自定义的标记🐤。但是大家考虑【jiā kǎo lǜ】🎰一下,如果两🎒个【gè】☝同行业的公司【gōng sī】🔋A和【hé】B要用【yòng】XML文件相互交换数据,A公司【gōng sī】🔋用【yòng】〈价格【jià gé】💸〉标记来表示他🙃们产品的价格【jià gé】🧔信【xìn】息,而B公司【gōng sī】🔋可能用【yòng】〈售价〉来表示价格信【jià gé xìn】🤔息。如果一个【gè】☝XML应用程【yīng yòng chéng】序来读【xù lái dú】🎬取他们👢各自的XML文件中【wén jiàn zhōng】🏋的信【xìn】息时,如果它只知道〈价格【jià gé】💸〉标记里【biāo jì lǐ】表示的【biǎo shì de】是价格【shì jià gé】信【xìn】🤔息,那么B

关键词【guān jiàn cí】:XML

阅读本文后您有什么感想? 已有 人给出评价!

  • 1 欢迎喜欢
  • 1 白痴
  • 1 拜托
  • 1 哇
  • 1 加油
  • 1 鄙视