汽車市場(chǎng)營(yíng)銷概述--XML概述_第1頁(yè)
汽車市場(chǎng)營(yíng)銷概述--XML概述_第2頁(yè)
汽車市場(chǎng)營(yíng)銷概述--XML概述_第3頁(yè)
汽車市場(chǎng)營(yíng)銷概述--XML概述_第4頁(yè)
汽車市場(chǎng)營(yíng)銷概述--XML概述_第5頁(yè)
已閱讀5頁(yè),還剩85頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、汽車市場(chǎng)營(yíng)銷概述-XML概述XML是W3C發(fā)布的一種新的標(biāo)準(zhǔn),它同HTML一樣是SGML的一個(gè)簡(jiǎn)化子集。由于XML將SGML的豐富功能、可擴(kuò)展性與HTML的易用性結(jié)合到了Web的應(yīng)用中,自推出以來(lái)迅速得到軟件開發(fā)商的支持和程序開發(fā)人員的喜愛(ài),顯示出了強(qiáng)大的生命力。本章主要介紹XML的基本概念和使用方法。XML是eXtensible Markup Language的縮寫,翻譯成中文就是可擴(kuò)展標(biāo)記語(yǔ)言。XML是由W3C(World Wide Web Consortium,萬(wàn)維網(wǎng)協(xié)會(huì))于1998年2月發(fā)布的一種標(biāo)準(zhǔn),它同HTML一樣是SGML(Standard Generalized Markup

2、Language,標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言)的一個(gè)簡(jiǎn)化子集。在正式的XML規(guī)范1.0中將XML描述為:“可擴(kuò)展標(biāo)記語(yǔ)言(XML)是SGML的子集,其目標(biāo)是允許普通的SGML在Web上以目前HTML的方式被服務(wù)、接收和處理。”11.1 XML概述概述所謂可擴(kuò)展性是指XML允許用戶按照XML規(guī)則自定義標(biāo)記。XML文件是由標(biāo)記及其所標(biāo)記的內(nèi)容構(gòu)成的文本文件。與HTML不同的是,XML的標(biāo)記可自由定義,其目的是使得XML文件能夠很好地體現(xiàn)數(shù)據(jù)的結(jié)構(gòu)和含義。因此,XML被設(shè)計(jì)成易于實(shí)現(xiàn),且可在SGML和HTML之間互相操作。Web技術(shù)的發(fā)展,其豐富的信息資源給人們的學(xué)習(xí)和生活帶來(lái)了極大的便利。由于HTML具有簡(jiǎn)

3、單易學(xué)、靈活通用的特性,使人們?cè)贗nternet上檢索、發(fā)布、交流信息變得非常簡(jiǎn)單。然而,隨著電子商務(wù)、遠(yuǎn)程教育等新興的Web領(lǐng)域的全面興起,傳統(tǒng)的HTML由于自身特點(diǎn)的限制,逐漸暴露出下述問(wèn)題。(1) HTML作為一種簡(jiǎn)單的表示性語(yǔ)言,只能顯示內(nèi)容而無(wú)法表達(dá)數(shù)據(jù)內(nèi)容的結(jié)構(gòu)。例如:若用HTML標(biāo)記描述“書名:面向?qū)ο蟪绦蛟O(shè)計(jì)Java; 張白一,崔尚森;出版社:西安電子科技大學(xué)出版社,出版時(shí)間:2006年1月”之間的邏輯關(guān)系是不可能的。HTML標(biāo)題標(biāo)記只標(biāo)記標(biāo)題文本本身,例如 XML文檔,因?yàn)闆](méi)有在標(biāo)題標(biāo)記中嵌套一個(gè)屬于文檔部分的實(shí)際文本和標(biāo)記,所以這些標(biāo)記不能用來(lái)組成樹型分層結(jié)構(gòu)的文檔,來(lái)體現(xiàn)

4、數(shù)據(jù)之間的邏輯關(guān)系和繼承關(guān)系。而這一點(diǎn)恰恰是電子商務(wù)、遠(yuǎn)程教育等所必需的。(2) HTML缺乏描述矢量圖形、算術(shù)公式、化學(xué)公式等特殊標(biāo)記對(duì)象。(3) 最重要的是HTML只是SGML的一個(gè)實(shí)例化的子集,它的可擴(kuò)展性差,用戶根本不能自定義有意義的標(biāo)記供他人使用。這一切都成為Web技術(shù)進(jìn)一步發(fā)展的障礙。雖然SGML是一種通用的文檔結(jié)構(gòu)描述標(biāo)記語(yǔ)言,為語(yǔ)法標(biāo)記提供了異常強(qiáng)大的工具,同時(shí)具有極好的擴(kuò)展性,因此在數(shù)據(jù)分類和索引中非常有用。但SGML的復(fù)雜度太高,不適合網(wǎng)絡(luò)的日常應(yīng)用,加上開發(fā)成本高、不被主流瀏覽器所支持等原因,使得SGML在Web上的推廣受到阻礙。在這種情況下,開發(fā)一種兼具SGML的強(qiáng)大功

5、能、可擴(kuò)展性以及HTML的簡(jiǎn)單性的語(yǔ)言勢(shì)在必行,由此誕生了XML語(yǔ)言。XML的主要設(shè)計(jì)目標(biāo)是在Web上保存并傳遞信息。HTML是描述數(shù)據(jù)顯示的語(yǔ)言,而XML是描述數(shù)據(jù)及其結(jié)構(gòu)的語(yǔ)言。XML具有下述特點(diǎn):(1) XML描述數(shù)據(jù)的結(jié)構(gòu)性較強(qiáng)。XML文檔具有類似樹型的分層結(jié)構(gòu),XML文檔只有單個(gè)根標(biāo)記,它包含了所有其它標(biāo)記。一個(gè)標(biāo)記可以嵌套在另一個(gè)XML標(biāo)記中,因此,可以很容易地使用XML定義分層結(jié)構(gòu)文檔。(2) XML文檔更便于閱讀。由于XML文檔是用純文本編寫的,而且具有類似樹型的邏輯結(jié)構(gòu),所以人們很容易閱讀,并且可以通過(guò)為文檔標(biāo)記、屬性和實(shí)體選擇有意義的名字,并且增加有用的注釋來(lái)增強(qiáng)XML的可

6、讀性。(3) XML文檔具有開放式標(biāo)準(zhǔn)。眾多公司支持W3C,改進(jìn)的XML標(biāo)準(zhǔn)支持各式系統(tǒng)和瀏覽器上的開發(fā)人員和用戶使用XML文檔。XML解釋器可以使用編程的方法來(lái)載入一個(gè)XML的文檔,當(dāng)這個(gè)文檔被載入以后,用戶就可以通過(guò)XML文件對(duì)象模型來(lái)獲取和操縱整個(gè)文檔的信息。(4) XML文檔具有國(guó)際化標(biāo)準(zhǔn)。XML依靠它的統(tǒng)一代碼的新的編碼標(biāo)準(zhǔn),支持世界上所有主要以語(yǔ)言編寫的混合文本。在HTML中,就大多數(shù)字處理而言,一個(gè)文檔一般是用一種特殊語(yǔ)言寫成的,如果用戶的軟件不能閱讀特殊語(yǔ)言的字符,那么他就不能使用該文檔。但是能閱讀XML語(yǔ)言的軟件就能順利處理這些不同語(yǔ)言文字。XML及相關(guān)技術(shù)規(guī)范符號(hào)的任意組合

7、,使得XML不僅能在不同的計(jì)算機(jī)系統(tǒng)之間交換信息,而且能跨國(guó)界和超越不同文化疆界交換信息。(5) XML高效且可擴(kuò)充性強(qiáng)。它支持復(fù)用文檔片斷,使用者可以設(shè)計(jì)和使用自己的標(biāo)簽,也可與他人共享。在XML中可以定義許多標(biāo)記。XML提供了獨(dú)立的運(yùn)用程序的方法來(lái)共享數(shù)據(jù)。XML文件的擴(kuò)展名必須為“.xml”。例如,“a.xml”、“b1.xml”都是合法的XML文件名。編寫XML文檔,必須遵守XML規(guī)范中的語(yǔ)法規(guī)則。無(wú)論是從物理結(jié)構(gòu)上講,還是從邏輯結(jié)構(gòu)上講,XML都必須符合規(guī)范才能被正確解釋處理。11.2 XML語(yǔ)法語(yǔ)法11.2.1 XML文檔結(jié)構(gòu)文檔結(jié)構(gòu)XML文檔的定義由框架語(yǔ)法組成。當(dāng)編寫一個(gè)XML

8、文檔時(shí),可以創(chuàng)建自己的標(biāo)記,并賦予任意的名稱。這就是XML(Extensible Markup Language,可擴(kuò)展標(biāo)記語(yǔ)言)中術(shù)語(yǔ)“Extensible”的意義。例如,下面是一個(gè)描述書籍信息的XML文檔?!臼纠臋nc11_1.xml】一個(gè)簡(jiǎn)單的XML文檔。面向?qū)ο蟪绦蛟O(shè)計(jì)Java 張白一,崔尚森西安電子科技大學(xué)出版社26.002006年1月JSP實(shí)用案例教程 馮燕奎,趙德奎 等清華大學(xué)出版社35.002004年5月XML文檔主要由序言和文檔根標(biāo)記兩個(gè)主要部分組成。序言中包含XML聲明、處理指令和注釋。在文檔根標(biāo)記中可以嵌入多個(gè)標(biāo)記。如果直接用IE瀏覽器打開XML文件,則顯示成如圖11.1

9、所示的默認(rèn)樹型結(jié)構(gòu)。圖11.1 c11.xml的運(yùn)行結(jié)果11.2.2 XML聲明聲明當(dāng)開始著手寫一個(gè)XML文件時(shí),最好以一個(gè)“XML聲明”作為開始。之所以說(shuō)“最好”,是因?yàn)閄ML聲明在文件中是可選內(nèi)容,可加可不加,但W3C推薦加入這一行聲明。因此,作為一個(gè)良好的習(xí)慣,我們通常把XML聲明作為XML文件的第一行。它的作用就是告訴XML處理器:“下面這個(gè)文件是按照XML文件的標(biāo)準(zhǔn)對(duì)數(shù)據(jù)進(jìn)行標(biāo)記的”。XML聲明是以“”結(jié)束的。XML聲明中可以包含下述三個(gè)屬性。1. version屬性屬性在一個(gè)XML的聲明中必須包括version屬性指明所采用的XML的版本號(hào),而且,它必須在屬性列表中排在第一位。由于

10、當(dāng)前的XML最新版本是1.0,所以我們看到的無(wú)一例外的都是version=1.0,我們?cè)赾11_1.xml中也設(shè)定 version=1.0。雖然在2002年10月15日以候選推薦標(biāo)準(zhǔn)(Candidate Recommendation)形式發(fā)表了XML1.1版本,但目前仍在征求意見(jiàn)之中。2. encoding屬性屬性該屬性指定文檔中使用的字符編碼標(biāo)準(zhǔn)。我們常用的編碼有:(1) GB2312或GBK:簡(jiǎn)體中文編碼。(2) UTF-8:壓縮的Unicode編碼。(3) BIG5:繁體中文編碼。如果沒(méi)有聲明encoding屬性,那么該屬性默認(rèn)為UTF-8編碼。保存XML文檔時(shí)要注意。3. standa

11、lone屬性屬性該屬性可以取值“yes”或“no”,以說(shuō)明XML文件是否和一個(gè)外部文檔(獨(dú)立的標(biāo)記聲明文件)配套使用。“yes”表示與外部文件無(wú)關(guān)聯(lián)。11.2.3 XML元素元素元素是XML文件內(nèi)容的基本單元。從語(yǔ)法上講,一個(gè)元素包含一個(gè)起始標(biāo)記、一個(gè)結(jié)束標(biāo)記以及標(biāo)記之間的數(shù)據(jù)內(nèi)容。其使用形式如下: 數(shù)據(jù)內(nèi)容例如,在c11_1.xml文件中的一個(gè)元素是:面向?qū)ο蟪绦蛟O(shè)計(jì)Java元素中還可以再嵌套別的元素。例子c11_1.xml中的元素中就嵌套了元素,而元素中又嵌套了、等元素。其中元素包含了文件中所有的數(shù)據(jù)信息,稱之為根元素。、等這些元素稱為XML的標(biāo)記。11.2.4 XML元素基本語(yǔ)法規(guī)則元素

12、基本語(yǔ)法規(guī)則(1) 標(biāo)記必不可少。任何一個(gè)形式良好的XML文件中至少要有一個(gè)元素。也就是說(shuō),標(biāo)記在XML文件中是必不可少的。(2) 區(qū)分大小寫。在標(biāo)記中必須注意區(qū)分大小寫。在HTML中,標(biāo)記和是一回事,但在XML中,它們是兩個(gè)截然不同的標(biāo)記。(3) 要有正確的結(jié)束標(biāo)記。結(jié)束標(biāo)記除了要和開始標(biāo)記在拼寫和大小寫上完全相同之外,還必須在前面加上一個(gè)斜杠“/”。因此,如果開始標(biāo)記是,則結(jié)束標(biāo)記應(yīng)該寫作。(4) 標(biāo)記要嚴(yán)格配對(duì)。例如,HTML中的、等單邊標(biāo)記在XML中是不合法的。(5) 空元素標(biāo)記??諛?biāo)記就是沒(méi)有任何數(shù)據(jù)內(nèi)容的元素??赵氐恼Z(yǔ)法格式如下: 或 或 例如: 或 或 (6) 非空元素就是有任

13、何數(shù)據(jù)內(nèi)容的元素。非空元素的語(yǔ)法格式如下:數(shù)據(jù)內(nèi)容例如:面向?qū)ο蟪绦蛟O(shè)計(jì)Java(7) 標(biāo)記要正確嵌套。在一個(gè)XML元素中允許包含其它XML元素,但這些元素之間必須滿足嵌套性。例如,下面這么寫是錯(cuò)誤的:JAVA編程入門(8) 標(biāo)記命名要合法。標(biāo)記應(yīng)該以字母、下劃線或冒號(hào)開頭,后面跟字母、數(shù)字、句號(hào)、冒號(hào)、下劃線或連字符,但是中間不能有空格,而且任何標(biāo)記不能以“xml”起始。另外,最好不要在標(biāo)記的開頭使用冒號(hào),盡管它是合法的,但可能會(huì)帶來(lái)混淆。(9) 有效使用屬性。標(biāo)記中可以包含任意多個(gè)屬性。在標(biāo)記中,屬性以“名稱=取值”的形式出現(xiàn)。名稱與取值之間用等號(hào)“=”分隔,且取值要用引號(hào)引起來(lái)。屬性名不

14、能重復(fù)。11.2.5 XML的注釋的注釋在XML中,注釋是以“”結(jié)束的,這和HTML的注釋完全相同。但是,仍然有以下幾點(diǎn)需要注意:(1) 在注釋文本中不能出現(xiàn)字符“-”或字符串“-”,XML處理器可能把它們和注釋結(jié)尾標(biāo)志“-”相混淆。(2) 不要把注釋文本放在標(biāo)記之中。(3) 注釋不能嵌套。在使用一對(duì)注釋符號(hào)表示注釋文本時(shí),要保證其中不再包含另一對(duì)注釋符號(hào)。(4) 注釋文本只能出現(xiàn)在XML聲明之后。標(biāo)記(markup)是用來(lái)描述文檔結(jié)構(gòu)的定界文本即元素的起始標(biāo)記、元素的結(jié)束標(biāo)記、空元素標(biāo)記、注釋、文檔類型聲明、處理指令、CDATA段定界符、實(shí)體引用和字符引用等。標(biāo)記指出了文檔的邏輯結(jié)構(gòu),包含了

15、文檔的信息內(nèi)容。11.3 根標(biāo)記與特殊字符根標(biāo)記與特殊字符11.3.1 XML文檔的根標(biāo)記文檔的根標(biāo)記在XML文檔中有且僅有一個(gè)根標(biāo)記,其它標(biāo)記都必須嵌套在根標(biāo)記之內(nèi)。在c11_1.xml文件中,根元素是目錄,起始根標(biāo)記是,結(jié)束根標(biāo)記是,其內(nèi)容是兩個(gè)嵌套的書元素。書元素的起始標(biāo)記是,結(jié)束標(biāo)記是。每個(gè)書元素中又嵌套五個(gè)元素,分別是:書名、作者、出版社、價(jià)格及出版日期。11.3.2 數(shù)據(jù)內(nèi)容中的特殊字符數(shù)據(jù)內(nèi)容中的特殊字符元素是由標(biāo)記和數(shù)據(jù)內(nèi)容組成的,在XML中有五種特殊字符:左尖括號(hào)“”、與符號(hào)“&”、單引號(hào)“”、雙引號(hào)“”。W3C制定的規(guī)范中規(guī)定:數(shù)據(jù)內(nèi)容中不能含有特殊字符。要想使用這

16、五種字符,可以通過(guò)實(shí)體引用。XML常用的實(shí)體引用如表11.1所示。表表11.1 XML常用的實(shí)體引用常用的實(shí)體引用注意:在XML中實(shí)體引用以“&”開始,以“;”結(jié)束。例如,若要輸出“&”這樣的內(nèi)容,就要使用實(shí)體引用。在XML文檔中應(yīng)該寫成:1970年出生&<大學(xué)畢業(yè)>解釋器解釋出該元素的數(shù)據(jù)是:1970年出生&本節(jié)介紹XML文檔的三種顯示方式,分別是:沒(méi)有樣式表單的顯示方式;使用CSS樣式表單的顯示方式;使用XSL樣式表單的顯示方式。11.4 顯示顯示XML文檔內(nèi)容文檔內(nèi)容11.4.1 顯示沒(méi)有樣式表的顯示沒(méi)有樣式表的XML文

17、檔文檔如果XML文件沒(méi)有包含指向一個(gè)樣式表的鏈接,當(dāng)直接運(yùn)行XML文件時(shí),IE瀏覽器只顯示如圖11.1所示的整個(gè)文檔的文本,并用不同的顏色來(lái)區(qū)分文檔的不同組成部分,以便幫助我們理解文檔的結(jié)構(gòu)。在每個(gè)元素的起始標(biāo)記的左邊有一個(gè)“-”號(hào)或“+”號(hào)?!?”號(hào)表示該元素的內(nèi)容已全部展開;“+”號(hào)表示該元素的內(nèi)容已收縮。單擊起始標(biāo)記左邊的“-”號(hào)可以收縮元素,而單擊已收縮元素旁邊的“+”號(hào)可以展開它。例如,如果單擊第一個(gè)元素旁邊的“-”號(hào),就會(huì)看到如圖11.2所示的內(nèi)容。用收縮和擴(kuò)展樹的形式顯示文檔元素,可以清楚地指出文檔的邏輯結(jié)構(gòu),詳細(xì)地查看各層。圖11.2 c11_1.xml收縮元素運(yùn)行結(jié)果11.4

18、.2 顯示有顯示有CSS樣式表的樣式表的XML文檔文檔CSS(層疊樣式表)是一種樣式表描述規(guī)則。樣式表是用來(lái)定義Web頁(yè)面格局的模板,通過(guò)樣式表可以定義頁(yè)面的標(biāo)頭、頁(yè)邊距、縮進(jìn)、字體大小及各種背景顏色等,用以完成Web頁(yè)面的風(fēng)格設(shè)計(jì)。1. CSS樣式的定義樣式的定義樣式的定義由一個(gè)標(biāo)記的名稱和定義這個(gè)標(biāo)記的顯示方式的屬性列表組成。屬性包括屬性名和屬性值,其間使用冒號(hào)分開,同時(shí)各種不同的屬性以分號(hào)分開。屬性的使用格式如下:標(biāo)記名 屬性名1:屬性值1; 屬性名2:屬性值2; 屬性名k:屬性值k;例如,在下邊的c11_2.css程序中,“font-size”、“font-weight”是屬性名,“3

19、6pt”、“bold”是屬性值。3. 示例示例【示例文檔c11_2.xml】調(diào)用c11_2.css的XML文件。1970年出生&<大學(xué)畢業(yè)>【示例文檔c11_2.css】對(duì)c11_2.xml中的標(biāo)記“張三”定義顯示樣式,定義的字體大小為36pt和字體加粗。張三 font-size: 36pt; font-weight: bold;雙擊c11_2.xml文件,運(yùn)行結(jié)果如圖11.3所示。圖11.3 c11_2.xml的運(yùn)行結(jié)果11.4.3 顯示有顯示有XSL樣式表的樣式表的XML文檔文檔CSS是一種靜態(tài)的樣式描述格式,其本身不遵從XML的語(yǔ)法規(guī)范。而XS

20、L(eXtensible Stylesheet Languge,可擴(kuò)展樣式語(yǔ)言)是遵從XML語(yǔ)法規(guī)范的XML的一種具體應(yīng)用,它的功能比CSS強(qiáng)大得多。1. XML變換的基本步驟變換的基本步驟(1) 在XML文件中加入使用XSL的聲明。(2) 在XSL文件中建立XML文件的樣式表。(3) 在XSL文件中將樣式表轉(zhuǎn)換成HTML文件。XML變換的基本步驟如圖11.4所示。圖11.4 XML變換的基本步驟下面用示例來(lái)說(shuō)明?!臼纠臋nc11_3.xml】一個(gè)簡(jiǎn)單的XML文檔。面向?qū)ο蟪绦蛟O(shè)計(jì)Java 張白一,崔尚森【示例文檔c11_3.xsl】顯示c11_3.xml文件的XSL樣式表。XML變換的基本步

21、驟是:當(dāng)瀏覽器打開c11_3.xml文件時(shí),瀏覽器內(nèi)部的XSL處理器,首先進(jìn)行XSL變換,將其中的XSL標(biāo)記分別轉(zhuǎn)換為面向?qū)ο蟪绦蛟O(shè)計(jì)Java 張白一,崔尚森得到一個(gè)如下的HTML文件: 面向?qū)ο蟪绦蛟O(shè)計(jì)Java 張白一,崔尚森 然后執(zhí)行該HTML文件,顯示如圖11.5所示的結(jié)果。圖11.5 c11_3.xml的運(yùn)行結(jié)果3. XSL樣式表結(jié)構(gòu)樣式表結(jié)構(gòu)XSL樣式表結(jié)構(gòu)與XML相似,主要由序言和根標(biāo)記兩個(gè)主要部分組成,序言中包含XSL聲明、處理指令和注釋。在根標(biāo)記中嵌入根模板,根模板中可嵌入多個(gè)子模板。直接用IE瀏覽器打開XSL文件,顯示成默認(rèn)的樹型結(jié)構(gòu)。下面以文檔c11-3.xsl為例說(shuō)明其結(jié)

22、構(gòu)。(1) 序言部分。程序中的序言部分為這里需要注意的是,樣式表的編碼必須與關(guān)聯(lián)的XML有相同的編碼。(3) 根模板標(biāo)記。XSL處理器首先找到根模板,然后開始XSL變換。程序中的根模板結(jié)構(gòu)為 根標(biāo)記模板的內(nèi)容這里需要注意的是,根模板的匹配模式必須是“/”。(4) 程序中用到的XSL語(yǔ)句。程序中的XSL語(yǔ)句是XSL中的賦值語(yǔ)句,表示取出引號(hào)中指定的屬性值,即取出書元素中書名的值(面向?qū)ο蟪绦蛟O(shè)計(jì)Java)。程序中用到的XSL語(yǔ)句如表11.2所示。表表11.2 程序中用到的程序中用到的XSL語(yǔ)句語(yǔ)句前面介紹的是編寫靜態(tài)XML頁(yè)面的方法。靜態(tài)的XML文檔只能表示比較簡(jiǎn)單的信息,而無(wú)法完成比較復(fù)雜的客

23、戶端與服務(wù)器端的交互。本節(jié)我們主要介紹動(dòng)態(tài)生成XML文檔的方法。包括用Servlet動(dòng)態(tài)生成XML文檔和用JSP動(dòng)態(tài)生成XML文檔。11.5 用用Servlet和和JSP動(dòng)態(tài)生成動(dòng)態(tài)生成XML文檔文檔11.5.1 用用Servlet動(dòng)態(tài)生成動(dòng)態(tài)生成XML文檔文檔為了說(shuō)明用Servlet動(dòng)態(tài)生成XML文檔的方法,我們編寫下述三個(gè)文件:一是填寫留言信息的HTML文件;二是獲得留言信息并生成XML文件的Servlet程序;三是對(duì)XML文件標(biāo)記附加不同的樣式,生成HTML文件的XSL文件。1. 填寫留言信息的示例文檔填寫留言信息的示例文檔c11_4_html.html message board 留言

24、板 姓名: 留言: 運(yùn)行c11_4_html.html程序,填寫留言信息,結(jié)果如圖11.6所示。圖11.6 c11_4_html的運(yùn)行結(jié)果2. 獲得留言信息,并生成XML文件的Servlet示例程序C11_4_XSL_Servlet.javaimport java.io.*;import javax.servlet.*;import javax.servlet. .*;public class C11_4_XSL_Servlet extends HttpServlet /重寫doPost方法public void doPost(HttpServletRequest req, HttpServl

25、etResponse res)throws ServletException, IOException/設(shè)置服務(wù)器輸出格式為XML文檔res.setContentType(text/xml); /獲得與客戶端的瀏覽器鏈接的輸出流,用于發(fā)送輸出結(jié)果ServletOutputStream out=res.getOutputStream(); out.print();out.println();out.println(); out.println();out.println(req.getParameter(name); out.println();out.println();out.println

26、(req.getParameter(content);out.println();out.println();out.close();/重寫doGet方法public void doGet(HttpServletRequest req, HttpServletResponse res)throws ServletException,IOExceptiondoPost(req,res); C11_4_XSL_Servlet的運(yùn)行結(jié)果如圖11.7所示。圖11.8是XSL文件在Eclipse平臺(tái)中的存放位置說(shuō)明。圖11.7 C11_4_XSL_Servlet的運(yùn)行結(jié)果 圖11.8 c11_4.xsl

27、的存放位置11.5.2 用用JSP動(dòng)態(tài)生成動(dòng)態(tài)生成XML文檔文檔直接將XML內(nèi)容在JSP中輸出的JSP示例程序如下?!臼纠绦騝11_5.jsp】生成XML文件的JSP示例程序。 % out.println(+ 面向?qū)ο蟪绦蛟O(shè)計(jì)Java + 張白一,崔尚森+ 西安電子科技大學(xué)出版社+ 26.00+ 2006年1月+ ); % % out.println(+ JSP實(shí)用案例教程+ 馮燕奎,趙德奎 等+ 書目錄 書名作者出版社價(jià)格出版日期 c11_5.jsp的運(yùn)行結(jié)果如圖11.9所示。圖11.9 c11_5.jsp的運(yùn)行結(jié)果11.5.3 使用使用DOM解析解析XML文件文件DOM(Document

28、 Object Model,文檔對(duì)象模型)是提供XML和HTML文檔編程接口的W3C規(guī)范。XML文檔將數(shù)據(jù)組織為一棵樹,DOM就是對(duì)這棵樹對(duì)象的描述。DOM解析XML文件后,就用樹的形式定義了XML文件在內(nèi)存中的邏輯結(jié)構(gòu),XML文件中的元素便轉(zhuǎn)化為DOM樹中的節(jié)點(diǎn)對(duì)象。Sun公司推出的JDK1.4及以上版本中的Java API遵循了 DOM Level 2 Core推薦接口的語(yǔ)義說(shuō)明,提供了相應(yīng)的Java語(yǔ)言的實(shí)現(xiàn)。Java應(yīng)用程序可以通過(guò)DOM API來(lái)訪問(wèn)XML數(shù)據(jù)。javax.xml.parsers包中提供的DoumentBuilder和DocumentBuilderFactory組合,

29、可以對(duì)XML文件進(jìn)行解析,轉(zhuǎn)換成DOM樹。org.xml.dom包中提供了Document、Node、NodeList、Element、Text等接口,可以創(chuàng)建、遍歷、修改DOM樹。javax.xml.transform.dom和javax.xml.transform.stream包中提供了DOMSource類和StreamSource類,可以將更新后的DOM文檔生成XML文件。為了解析XML文件,DOM規(guī)定了各種類型節(jié)點(diǎn)之間形成的如圖11.10所示的子孫關(guān)系。Document節(jié)點(diǎn)代表了整個(gè)XML或HTML文檔,提供了對(duì)文檔元素和數(shù)據(jù)的訪問(wèn)。所有其它的節(jié)點(diǎn)都以一定的順序包含在Document中

30、,排成一個(gè)樹型結(jié)構(gòu)。它提供許多方法來(lái)獲取該節(jié)點(diǎn)及節(jié)點(diǎn)的相關(guān)信息。圖11.10 DOM樹中節(jié)點(diǎn)間的關(guān)系Element元素表示一個(gè)XML或HTML元素。文檔的數(shù)據(jù)包含在它的元素中。元素也可具有提供附加內(nèi)容信息的屬性。它提供許多方法來(lái)獲取該節(jié)點(diǎn)及節(jié)點(diǎn)的相關(guān)信息。Text節(jié)點(diǎn)表示的是元素或?qū)傩灾档奈谋緝?nèi)容,對(duì)應(yīng)著XML中的數(shù)據(jù)內(nèi)容。CDATASection節(jié)點(diǎn)解決XML文檔中的特殊字符的實(shí)體引用問(wèn)題。DocumentType節(jié)點(diǎn)對(duì)應(yīng)著XML文檔所關(guān)聯(lián)的DTD文件。下面通過(guò)示例來(lái)說(shuō)明如何使用DOM解析XML文檔。【示例文檔c11_6.xml】一個(gè)簡(jiǎn)單的XML文檔。 面向?qū)ο蟪绦蛟O(shè)計(jì)Java 張白一,崔尚

31、森 西安電子科技大學(xué)出版社 26.00 2006年1月 JSP實(shí)用案例教程 馮燕奎,趙德奎 等 清華大學(xué)出版社 35.00 2004年5月 如果用DOM來(lái)圖形化地表示c11_6.xml文檔,則如圖11.11所示。圖11.11 c11_6.xml的運(yùn)行結(jié)果【示例程序c11_6.java】用DOM解析c11_6.xml文檔的Java程序。import org.w3c.dom.*; /XML的DOM實(shí)現(xiàn) import java.io.*;import javax.xml.parsers.*; /XML解析器接口 public class C11_6 public static void main(S

32、tring args) try /獲得一個(gè)XML文檔的解析器 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); /解析XML文檔生成DOM文檔的接口類,以便訪問(wèn)DOM DocumentBuilder builder = factory.newDocumentBuilder(); /Document接口描述了對(duì)應(yīng)于XML文檔的文檔樹 Document document = builder.parse(new File(C11_6.xml); /去掉XML文檔中作為格式化內(nèi)容的空白,/而映射在DOM樹中的不必要的Text Node對(duì)象

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論