版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
XML是W3C發(fā)布的一種新的標準,它同HTML一樣是SGML的一個簡化子集。由于XML將SGML的豐富功能、可擴展性與HTML的易用性結合到了Web的應用中,自推出以來迅速得到軟件開發(fā)商的支持和程序開發(fā)人員的喜愛,顯示出了強大的生命力。本章主要介紹XML的基本概念和使用方法。
XML是eXtensibleMarkupLanguage的縮寫,翻譯成中文就是可擴展標記語言。XML是由W3C(WorldWideWebConsortium,萬維網(wǎng)協(xié)會)于1998年2月發(fā)布的一種標準,它同HTML一樣是SGML(StandardGeneralizedMarkupLanguage,標準通用標記語言)的一個簡化子集。在正式的XML規(guī)范1.0中將XML描述為:“可擴展標記語言(XML)是SGML的子集,其目標是允許普通的SGML在Web上以目前HTML的方式被服務、接收和處理?!?1.1XML概述所謂可擴展性是指XML允許用戶按照XML規(guī)則自定義標記。
XML文件是由標記及其所標記的內容構成的文本文件。與HTML不同的是,XML的標記可自由定義,其目的是使得XML文件能夠很好地體現(xiàn)數(shù)據(jù)的結構和含義。因此,XML被設計成易于實現(xiàn),且可在SGML和HTML之間互相操作。Web技術的發(fā)展,其豐富的信息資源給人們的學習和生活帶來了極大的便利。由于HTML具有簡單易學、靈活通用的特性,使人們在Internet上檢索、發(fā)布、交流信息變得非常簡單。然而,隨著電子商務、遠程教育等新興的Web領域的全面興起,傳統(tǒng)的HTML由于自身特點的限制,逐漸暴露出下述問題。(1)
HTML作為一種簡單的表示性語言,只能顯示內容而無法表達數(shù)據(jù)內容的結構。例如:若用HTML標記描述“書名:面向對象程序設計——Java;作者:張白一,崔尚森;出版社:西安電子科技大學出版社,出版時間:2006年1月”之間的邏輯關系是不可能的。HTML標題標記只標記標題文本本身,例如<H2>XML文檔</H2>,因為沒有在標題標記中嵌套一個屬于文檔部分的實際文本和標記,所以這些標記不能用來組成樹型分層結構的文檔,來體現(xiàn)數(shù)據(jù)之間的邏輯關系和繼承關系。而這一點恰恰是電子商務、遠程教育等所必需的。(2)
HTML缺乏描述矢量圖形、算術公式、化學公式等特殊標記對象。
(3)最重要的是HTML只是SGML的一個實例化的子集,它的可擴展性差,用戶根本不能自定義有意義的標記供他人使用。
這一切都成為Web技術進一步發(fā)展的障礙。雖然SGML是一種通用的文檔結構描述標記語言,為語法標記提供了異常強大的工具,同時具有極好的擴展性,因此在數(shù)據(jù)分類和索引中非常有用。但SGML的復雜度太高,不適合網(wǎng)絡的日常應用,加上開發(fā)成本高、不被主流瀏覽器所支持等原因,使得SGML在Web上的推廣受到阻礙。在這種情況下,開發(fā)一種兼具SGML的強大功能、可擴展性以及HTML的簡單性的語言勢在必行,由此誕生了XML語言。XML的主要設計目標是在Web上保存并傳遞信息。HTML是描述數(shù)據(jù)顯示的語言,而XML是描述數(shù)據(jù)及其結構的語言。XML具有下述特點:
(1)
XML描述數(shù)據(jù)的結構性較強。XML文檔具有類似樹型的分層結構,XML文檔只有單個根標記,它包含了所有其它標記。一個標記可以嵌套在另一個XML標記中,因此,可以很容易地使用XML定義分層結構文檔。
(2)
XML文檔更便于閱讀。由于XML文檔是用純文本編寫的,而且具有類似樹型的邏輯結構,所以人們很容易閱讀,并且可以通過為文檔標記、屬性和實體選擇有意義的名字,并且增加有用的注釋來增強XML的可讀性。(3)
XML文檔具有開放式標準。眾多公司支持W3C,改進的XML標準支持各式系統(tǒng)和瀏覽器上的開發(fā)人員和用戶使用XML文檔。XML解釋器可以使用編程的方法來載入一個XML的文檔,當這個文檔被載入以后,用戶就可以通過XML文件對象模型來獲取和操縱整個文檔的信息。(4)XML文檔檔具有國際際化標準。。XML依依靠它的統(tǒng)統(tǒng)一代碼的的新的編碼碼標準,支支持世界上上所有主要要以語言編編寫的混合合文本。在在HTML中,就大大多數(shù)字處處理而言,,一個文檔檔一般是用用一種特殊殊語言寫成成的,如果果用戶的軟軟件不能閱閱讀特殊語語言的字符符,那么他他就不能使使用該文檔檔。但是能能閱讀XML語言的的軟件就能能順利處理理這些不同同語言文字字。XML及相關技技術規(guī)范符符號的任意意組合,使使得XML不僅能在在不同的計計算機系統(tǒng)統(tǒng)之間交換換信息,而而且能跨國國界和超越越不同文化化疆界交換換信息。(5)XML高效效且可擴充充性強。它它支持復用用文檔片斷斷,使用者者可以設計計和使用自自己的標簽簽,也可與與他人共享享。在XML中可以以定義許多多標記。XML提供供了獨立的的運用程序序的方法來來共享數(shù)據(jù)據(jù)。XML文件件的擴展名名必須為““.xml”。例如如,“a.xml””、“b1.xml”都是合合法的XML文件名名。編編寫XML文檔,,必須遵守守XML規(guī)規(guī)范中的語語法規(guī)則。。無論是從從物理結構構上講,還還是從邏輯輯結構上講講,XML都必須符符合規(guī)范才才能被正確確解釋處理理。11.2XML語法11.2.1XML文檔檔結構XML文檔檔的定義由由框架語法法組成。當當編寫一個個XML文文檔時,可可以創(chuàng)建自自己的標記記,并賦予予任意的名名稱。這就就是XML(ExtensibleMarkupLanguage,,可擴展標標記語言)中術語““Extensible”的的意義。例例如,下面面是一個描描述書籍信信息的XML文檔。?!臼纠臋n檔c11_1.xml】一個個簡單的XML文檔檔。<?xmlversion="1.0"encoding="GB2312"?><!--xml文檔名名為c11_1.xml--><目錄><書><書名名>面向對對象程序設設計——Java</書名名><作者>張白一,,崔尚森</作者><出版社>西安電子子科技大學學出版社</出版社社><價格>26.00</價價格><出版版日期>2006年年1月</出版日期期></書><書書><書名>JSP實實用案例教教程</書名><作作者>馮燕燕奎,趙德德奎等</作者><出版社>清華大學學出版社</出版社社><價格>35.00</價價格><出版版日期>2004年年5月</出版日期期></書></目錄>XML文檔檔主要由序序言和文檔檔根標記兩兩個主要部部分組成。。序言中包包含XML聲明、處處理指令和和注釋。在在文檔根標標記中可以以嵌入多個個標記。如如果直接用用IE瀏覽覽器打開XML文件件,則顯示示成如圖11.1所所示的默認認樹型結構構。圖11.1c11.xml的運行行結果11.2.2XML聲明明當開始著手手寫一個XML文件件時,最好好以一個““XML聲聲明”作為為開始。之之所以說““最好”,,是因為XML聲明明在文件中中是可選內內容,可加加可不加,,但W3C推薦加入入這一行聲聲明。因此此,作為一一個良好的的習慣,我我們通常把把XML聲聲明作為XML文件件的第一行行。它的作作用就是告告訴XML處理器::“下面這這個文件是是按照XML文件的的標準對數(shù)數(shù)據(jù)進行標標記的”。。XML聲明明是以“<?xml”開始,,以“?>”結束的的。XML聲明中可可以包含下下述三個屬屬性。1.version屬性性在一個XML的聲明明中必須包包括version屬性指明明所采用的的XML的的版本號,,而且,它它必須在屬屬性列表中中排在第一一位。由于于當前的XML最新新版本是1.0,所所以我們看看到的無一一例外的都都是version="1.0",我我們在c11_1.xml中中也設定version="1.0"。雖然然在2002年10月15日日以候選推推薦標準(CandidateRecommendation)形式發(fā)發(fā)表了XML1.1版本,但但目前仍在在征求意見見之中。2.encoding屬屬性該屬性指定定文檔中使使用的字符符編碼標準準。我們常常用的編碼碼有:(1)GB2312或GBK:簡體體中文編碼碼。(2)UTF-8:壓縮的的Unicode編編碼。(3)BIG5::繁體中文文編碼。如如果果沒有聲明明encoding屬性,那那么該屬性性默認為UTF-8編碼。保保存XML文檔時要要注意。3.standalone屬性該屬性可以以取值“yes”或或“no””,以說明明XML文文件是否和和一個外部部文檔(獨獨立的標記記聲明文件件)配套使使用?!皔es”表表示與外部部文件無關關聯(lián)。11.2.3XML元素素元素是XML文件內內容的基本本單元。從從語法上講講,一個元元素包含一一個起始標標記、一個個結束標記記以及標記記之間的數(shù)數(shù)據(jù)內容。。其使用形形式如下::<標記>數(shù)據(jù)內容容</標記記>例例如,在在c11_1.xml文件中中的一個元元素是:<書書名>面向向對象程序序設計———Java</書名名>元元素中還還可以再嵌嵌套別的元元素。例子子c11_1.xml中的元元素<目錄錄>中就嵌嵌套了元素素<書>,,而元素<書>中又又嵌套了<書名>、、<作者>等元素。。其中<目目錄>元素素包含了文文件中所有有的數(shù)據(jù)信信息,稱之之為根元素素。<書>、<書名名>、<作作者>等這這些元素稱稱為XML的標記。。11.2.4XML元素素基本語法法規(guī)則(1)標標記必不可可少。任何何一個形式式良好的XML文件件中至少要要有一個元元素。也就就是說,標標記在XML文件中中是必不可可少的。(2)區(qū)分分大小寫。。在標記中中必須注意意區(qū)分大小小寫。在HTML中中,標記<table>和<TABLE>是一一回事,但但在XML中,它們們是兩個截截然不同的的標記。(3)要要有正確的的結束標記記。結束標標記除了要要和開始標標記在拼寫寫和大小寫寫上完全相相同之外,,還必須在在前面加上上一個斜杠杠“/”。。因此,如如果開始標標記是<TABLE>,則結結束標記應應該寫作</TABLE>。。(4)標標記要嚴格格配對。例例如,HTML中的的<BR>、<HR>等單邊邊標記在XML中是是不合法的的。(5)空空元素標記記??諛擞浻浘褪菦]有有任何數(shù)據(jù)據(jù)內容的元元素??赵氐恼Z法法格式如下下:<標記名名></標標記名>或或<標記名名/><標記記名屬性性列表></標記名名>或或<標標記名屬屬性列表/>例例如:<價價格></價格>或或<價價格26.00/><姓姓名></姓名>或或<姓姓名張張三/>(6)非非空元素就就是有任何何數(shù)據(jù)內容容的元素。。非空元素素的語法格格式如下::<標記名>數(shù)據(jù)內容容</標記記名>例例如::<書名>面面向對象程程序設計———Java</書書名>(7)標記要要正確嵌套套。在一個個XML元元素中允許許包含其它它XML元元素,但這這些元素之之間必須滿滿足嵌套性性。例如,,下面這么么寫是錯誤誤的:<書><書名>JAVA編編程入門</書></書名>(8)標標記命名要要合法。標標記應該以以字母、下下劃線或冒冒號開頭,,后面跟字字母、數(shù)字字、句號、、冒號、下下劃線或連連字符,但但是中間不不能有空格格,而且任任何標記不不能以“xml”起起始。另外外,最好不不要在標記記的開頭使使用冒號,,盡管它是是合法的,,但可能會會帶來混淆淆。(9)有有效使用用屬性。標標記中可以以包含任意意多個屬性性。在標記記中,屬性性以“名稱稱=取值””的形式出出現(xiàn)。名稱稱與取值之之間用等號號“=”分分隔,且取取值要用引引號引起來來。屬性名名不能重復復。11.2.5XML的注注釋在XML中中,注釋是是以“<!--”開開頭,以““-->””結束的,,這和HTML的注注釋完全相相同。但是是,仍然有有以下幾點點需要注意意:(1)在在注釋文文本中不能能出現(xiàn)字符符“-”或或字符串““--”,,XML處處理器可能能把它們和和注釋結尾尾標志“-->”相相混淆。(2)不要要把注釋文文本放在標標記之中。。(3)注注釋不能嵌嵌套。在使使用一對注注釋符號表表示注釋文文本時,要要保證其中中不再包含含另一對注注釋符號。。(4)注注釋文本只只能出現(xiàn)在在XML聲聲明之后。。標記(markup)是用來來描述文檔檔結構的定定界文本———即元素素的起始標標記、元素素的結束標標記、空元元素標記、、注釋、文文檔類型聲聲明、處理理指令、CDATA段定界符符、實體引引用和字符符引用等。。標記指出出了文檔的的邏輯結構構,包含了了文檔的信信息內容。。11.3根根標記記與特殊字字符11.3.1XML文檔檔的根標記記在XML文文檔中有且且僅有一個個根標記,,其它標記記都必須嵌嵌套在根標標記之內。。在在c11_1.xml文件中中,根元素素是目錄,,起始根標標記是<目目錄>,結結束根標記記是</目目錄>,其其內容是兩兩個嵌套的的書元素。。書元素的的起始標記記是<書>,結束標標記是</書>。每每個書元素素中又嵌套套五個元素素,分別是是:書名、、作者、出出版社、價價格及出版版日期。11.3.2數(shù)數(shù)據(jù)內容中中的特殊字字符元素是由標標記和數(shù)據(jù)據(jù)內容組成成的,在XML中有有五種特殊殊字符:左左尖括號““<”、右右尖括號““>”、與與符號“&”、單引引號“'””、雙引號號“"”。。W3C制制定的規(guī)范范中規(guī)定::數(shù)據(jù)內容容中不能含含有特殊字字符。要想想使用這五五種字符,,可以通過過實體引用用。XML常用的實實體引用如如表11.1所示。。表11.1XML常用的的實體引用用注意:在XML中實實體引用以以“&”開開始,以““;”結束束。例例如,若若要輸出““&<大學學畢業(yè)>””這樣的內內容,就要要使用實體體引用。在在XML文文檔中應該該寫成:<張張三>1970年出生生&<大學畢畢業(yè)></張三三>解解釋器解解釋出該元元素的數(shù)據(jù)據(jù)是:1970年出生生&<大學學畢業(yè)>本節(jié)介紹XML文檔檔的三種顯顯示方式,,分別是::沒有樣式式表單的顯顯示方式;;使用CSS樣式表表單的顯示示方式;使使用XSL樣式表單單的顯示方方式。11.4顯顯示XML文檔檔內容11.4.1顯顯示沒有樣樣式表的XML文檔檔如果XML文件沒有有包含指向向一個樣式式表的鏈接接,當直接接運行XML文件時時,IE瀏瀏覽器只顯顯示如圖11.1所所示的整個個文檔的文文本,并用用不同的顏顏色來區(qū)分分文檔的不不同組成部部分,以便便幫助我們們理解文檔檔的結構。。在在每個元素素的起始標標記的左邊邊有一個““-”號或或“+”號號?!?””號表示該該元素的內內容已全部部展開;““+”號表表示該元素素的內容已已收縮。單單擊起始標標記左邊的的“-”號號可以收縮縮元素,而而單擊已收收縮元素旁旁邊的“+”號可以以展開它。。例如,如如果單擊第第一個元素素<書>旁旁邊的“-”號,就就會看到如如圖11.2所示的的內容。用用收縮和擴擴展樹的形形式顯示文文檔元素,,可以清楚楚地指出文文檔的邏輯輯結構,詳詳細地查看看各層。圖11.2c11_1.xml收收縮元素運運行結果11.4.2顯顯示有CSS樣式表表的XML文檔CSS(層層疊樣式表表)是一種種樣式表描描述規(guī)則。。樣式表是是用來定義義Web頁頁面格局的的模板,通通過樣式表表可以定義義頁面的標標頭、頁邊邊距、縮進進、字體大大小及各種種背景顏色色等,用以以完成Web頁面的的風格設計計。1.CSS樣式式的定義樣式式的的定定義義由由一一個個標標記記的的名名稱稱和和定定義義這這個個標標記記的的顯顯示示方方式式的的屬屬性性列列表表組組成成。。屬屬性性包包括括屬屬性性名名和和屬屬性性值值,,其其間間使使用用冒冒號號分分開開,,同同時時各各種種不不同同的的屬屬性性以以分分號號分分開開。。屬屬性性的的使使用用格格式式如如下下::標記記名名{屬屬性性名名1::屬屬性性值值1;;屬屬性性名名2::屬屬性性值值2;;…………屬屬性性名名k::屬屬性性值值k;;}例例如如,,在在下下邊邊的的c11_2.css程程序序中中,,““font-size””、、““font-weight””是是屬屬性性名名,,““36pt””、、““bold””是是屬屬性性值值。。3.示示例例【示示例例文文檔檔c11_2.xml】】調調用用c11_2.css的的XML文文件件。。<?xmlversion="1.0"encoding="GB2312"?><?xml-stylesheettype="text/css"href="c11_2.css"?><!--xml文文檔檔程程序序名名為為c11_2.xml--><張張三三>1970年年出出生生&<大大學學畢畢業(yè)業(yè)></張張三三>【示示例例文文檔檔c11_2.css】】對對c11_2.xml中中的的標標記記““張張三三””定定義義顯顯示示樣樣式式,,定定義義的的字字體體大大小小為為36pt和和字字體體加加粗粗。。張張三三{font-size:36pt;font-weight:bold;}雙雙擊擊c11_2.xml文文件件,,運運行行結結果果如如圖圖11.3所所示示。。圖11.3c11_2.xml的的運運行行結結果果11.4.3顯顯示示有有XSL樣樣式式表表的的XML文文檔檔CSS是是一一種種靜靜態(tài)態(tài)的的樣樣式式描描述述格格式式,,其其本本身身不不遵遵從從XML的的語語法法規(guī)規(guī)范范。。而而XSL(eXtensibleStylesheetLanguge,,可可擴擴展展樣樣式式語語言言)是是遵遵從從XML語語法法規(guī)規(guī)范范的的XML的的一一種種具具體體應應用用,,它它的的功功能能比比CSS強強大大得得多多。。1.?XML變換的基基本步驟(1)在XML文件中中加入使用XSL的聲明明。(2)在XSL文件中中建立XML文件的樣式式表。(3)在在XSL文件件中將樣式表表轉換成HTML文件。。
XML變換的基基本步驟如圖圖11.4所所示。圖11.4XML變變換的基本步步驟下面用示例來來說明?!尽臼纠奈臋nc11_3.xml】一個簡單單的XML文文檔。<?xmlversion="1.0"encoding="GB2312"?><?xml-stylesheettype="text/xsl"href="c11_3.xsl"?><!--xml文檔檔程序名為c11_3.xml--><書><書名>面面向對象程序序設計——Java</書名><作者者>張白一,,崔尚森</作者></書>
【示示例文檔c11_3.xsl】顯示示c11_3.xml文文件的XSL樣式表。<?xmlversion="1.0"encoding="GB2312"?>XML變換的的基本步驟是是:當瀏覽器器打開c11_3.xml文件時,,瀏覽器內部部的XSL處處理器,首先先進行XSL變換,將其其中的XSL標記<xsl:value-ofselect="書名"/><xsl:value-ofselect="作者"/>分分別轉換為為
面向向對象程序設設計——Java張張白一,,崔尚森得得到一個個如下的HTML文件::
<HTML><BODY>面向對象程序序設計——Java<BR></BR>張張白一,,崔尚森</BODY></HTML>然然后執(zhí)行該HTML文件件,顯示如圖圖11.5所所示的結果。。圖11.5c11_3.xml的運行結果果3.?XSL樣式表結結構XSL樣式表表結構與XML相似,主主要由序言和和根標記兩個個主要部分組組成,序言中中包含XSL聲明、處理理指令和注釋釋。在根標記記中嵌入根模模板,根模板板中可嵌入多多個子模板。。直接用IE瀏覽器打開開XSL文件件,顯示成默默認的樹型結結構。下面以以文檔c11-3.xsl為例說明明其結構。(1)序言言部分。程程序中的的序言部分為為
<?xmlversion="1.0"encoding="GB2312"?>這這里需要注注意的是,樣樣式表的編碼碼必須與關聯(lián)聯(lián)的XML有有相同的編碼碼。(3)根模模板標記。XSL處理器首先先找到根模板板,然后開始始XSL變換換。程序中的的根模板結構構為<xsl:templatematch="/">根根標標記模板的內內容</xsl:template>這這里需需要注意的是是,根模板的的匹配模式必必須是“/””。(4)程序序中用到的XSL語句。。
程序序中的XSL語句<xsl:value-ofselect="書書/書名"/>是XSL中的賦值語語句,表示取取出引號中指指定的屬性值值,即取出書書元素中書名名的值(面向向對象程序設設計——Java)。程程序中用到的的XSL語句句如表11.2所示。表11.2程程序中用用到的XSL語句前面介紹的是是編寫靜態(tài)XML頁面的的方法。靜態(tài)態(tài)的XML文文檔只能表示示比較簡單的的信息,而無無法完成比較較復雜的客戶戶端與服務器器端的交互。。本節(jié)我們主主要介紹動態(tài)態(tài)生成XML文檔的方法法。包括用Servlet動態(tài)生成成XML文檔檔和用JSP動態(tài)生成XML文檔。。11.5用用Servlet和JSP動態(tài)生生成XML文文檔11.5.1用Servlet動態(tài)生成XML文檔為了說明用Servlet動態(tài)生成成XML文檔檔的方法,我我們編寫下述述三個文件::一是填寫留留言信息的HTML文件件;二是獲得得留言信息并并生成XML文件的Servlet程序;三是是對XML文文件標記附加加不同的樣式式,生成HTML文件的的XSL文件件。1.填寫留留言信息的示示例文檔c11_4_html.html<!--c11_4_html.html--><HTML><HEAD><TITLE>messageboard</TITLE>
</HEAD>
<BODY><center>留留言板</center><FORMaction="C11_4_XSL_Servlet"method="POST"><TABLEborder=1align="center"><TR><TD>姓名名:</TD><TD><inputtype="text"name="name"size=25></TD></TR><TR><TD>留言::</TD><TD><textareaname="content"rows=7cols=25></textarea></TD></TR><TR><TDalign="center"><inputtype="submit"value="確定定"></TD><TDalign="center"><inputtype="reset"value="重新填寫"></TD></TR></TABLE></TD></TR></TABLE></FORM></BODY></HTML>運運行c11_4_html.html程序,填填寫留言信息息,結果如圖圖11.6所所示。圖11.6c11_4_html的運行結結果2.獲得留留言信息,并并生成XML文件的Servlet示例程序C11_4_XSL_Servlet.javaimportjava.io.*;importjavax.servlet.*;importjavax.servlet.http.*;publicclassC11_4_XSL_ServletextendsHttpServlet{ //重寫寫doPost方法publicvoiddoPost(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException{//設置服務務器輸出格式式為XML文文檔res.setContentType("text/xml");//獲得與與客戶端的瀏瀏覽器鏈接的的輸出流,用用于發(fā)送輸出出結果ServletOutputStreamout=res.getOutputStream();out.print("<?xmlversion=\"1.0\"encoding=\"GB2312\"");out.println("standalone=\"no\"?>");out.println("<?xml-stylesheettype=\"text/xsl\"href=\"c11_4.xsl\"?>");out.println("<message>");out.println("<NAME>");out.println(req.getParameter("name"));out.println("</NAME>");out.println("<CONTENT>");out.println(req.getParameter("content"));out.println("</CONTENT>");out.println("</message>");out.close();}//重寫doGet方法法publicvoiddoGet(HttpServletRequestreq,HttpServletResponseres) throwsServletException,IOException{doPost(req,res); }}<xsl:value-ofselect="NAME"/><BR></BR><xsl:value-ofselect="CONTENT"/></BODY></HTML></xsl:for-each></xsl:template>
</xsl:stylesheet>
C11_4_XSL_Servlet的運行結果果如圖11.7所示。圖圖11.8是是XSL文件件在Eclipse平臺臺中的存放位位置說明。圖11.7C11_4_XSL_Servlet的運運行結果圖11.8c11_4.xsl的存放位置置11.5.2用JSP動態(tài)生成成XML文檔檔直接將XML內容在JSP中輸出的的JSP示例例程序如下。。
【示示例程序c11_5.jsp】生成成XML文件件的JSP示示例程序。<%@pagecontentType="text/html;charset=GBK"%>
<?xmlversion="1.0"encoding="GB2312"?><?xml-stylesheettype="text/xsl"href="c11_5.xsl"?><目錄><%out.println("<書>"+"<書名>面向對象程程序設計———Java</書名>"+"<作者>張張白一,崔尚尚森</作者者>"+"<出版社>西安電子科科技大學出版版社</出版版社>"+"<價格>26.00</價格>"+"<出版日期>2006年年1月</出出版日期>"+"</書>");%><%out.println("<書>"+"<書名名>JSP實實用案例教程程</書名>"+"<作者>馮燕燕奎,趙德奎奎等</作作者>"+<HTML><BODY><center><p><h3>書目目錄</h3></p><TABLEalign="center"width="80%"border="1"><tr><td>書名</td><td>作者</td><td>出版社社</td><td>價價格</td><td>出版日期</td></tr><xsl:for-eachselect="書"><tr><td><xsl:value-ofselect="書名"/></td><td><xsl:value-ofselect="作者"/></td><td><xsl:value-ofselect="出出版社"/></td><td><xsl:value-ofselect="價格"/></td><td><xsl:value-ofselect="出出版日期"/></td></tr></xsl:for-each></TABLE></center></BODY></HTML></xsl:for-each>
</xsl:template></xsl:stylesheet>c11_5.jsp的運行結果果如圖11.9所示。圖11.9c11_5.jsp的的運運行行結結果果11.5.3使使用用DOM解解析析XML文文件件DOM(DocumentObjectModel,,文文檔檔對對象象模模型型)是是提提供供XML和和HTML文文檔檔編編程程接接口口的的W3C規(guī)規(guī)范范。。XML文文檔檔將將數(shù)數(shù)據(jù)據(jù)組組織織為為一一棵棵樹樹,,DOM就就是是對對這這棵棵樹樹對對象象的的描描述述。。DOM解解析析XML文文件件后后,,就就用用樹樹的的形形式式定定義義了了XML文文件件在在內內存存中中的的邏邏輯輯結結構構,,XML文文件件中中的的元元素素便便轉轉化化為為DOM樹樹中中的的節(jié)節(jié)點點對對象象。。Sun公公司司推推出出的的JDK1.4及及以以上上版版本本中中的的JavaAPI遵遵循循了了DOMLevel2Core推推薦薦接接口口的的語語義義說說明明,,提提供供了了相相應應的的Java語語言言的的實實現(xiàn)現(xiàn)。。Java應應用用程程序序可可以以通通過過DOMAPI來來訪訪問問XML數(shù)數(shù)據(jù)據(jù)。。javax.xml.parsers包包中中提提供供的的DoumentBuilder和和DocumentBuilderFactory組組合合,,可可以以對對XML文文件件進進行行解解析析,,轉轉換換成成DOM樹樹。。org.xml.dom包包中中提提供供了了Document、、Node、、NodeList、、Element、、Text等等接接口口,,可可以以創(chuàng)創(chuàng)建建、、遍遍歷歷、、修修改改DOM樹樹。。javax.xml.transform.dom和和javax.xml.transform.stream包包中中提提供供了了DOMSource類類和和StreamSource類類,,可可以以將將更更新新后后的的DOM文文檔檔生生成成XML文文件件。。為了了解解析析XML文文件件,,DOM規(guī)規(guī)定定了了各各種種類類型型節(jié)節(jié)點點之之間間形形成成的的如如圖圖11.10所所示示的的子子孫孫關關系系。。Document節(jié)節(jié)點點代代表表了了整整個個XML或或HTML文文檔檔,,提提供供了了對對文文檔檔元元素素和和數(shù)數(shù)據(jù)據(jù)的的訪訪問問。。所所有有其其它它的的節(jié)節(jié)點點都都以以一一定定的的順順序序包包含含在在Document中中,,排排成成一一個個樹樹型型結結構構。。它它提提供供許許多多方方法法來來獲獲取取該該節(jié)節(jié)點點及及節(jié)節(jié)點點的的相相關關信信息息。。圖11.10DOM樹樹中中節(jié)節(jié)點點間間的的關關系系Element元元素素表表示示一一個個XML或或HTML元元素素。。文文檔檔的的數(shù)數(shù)據(jù)據(jù)包包含含在在它它的的元元素素中中。。元元素素也也可可具具有有提提供供附附加加內內容容信信息息的的屬屬性性。。它它提提供供許許多多方方法法來來獲獲取取該該節(jié)節(jié)點點及及節(jié)節(jié)點點的的相相關關信信息息。。Text節(jié)節(jié)點點表表示示的的是是元元素素或或屬屬性性值值的的文文本本內內容容,,對對應應著著XML中中的的數(shù)數(shù)據(jù)據(jù)內內容容。。CDATASection節(jié)節(jié)點點解解決決XML文文檔檔中中的的特特殊殊字字符符的的實實體體引引用用問問題題。。DocumentType節(jié)節(jié)點點對對應應著著XML文文檔檔所所關關聯(lián)聯(lián)的的DTD文文件件。。下面面通通過過示示例例來來說說明明如如何何使使用用DOM解解析析XML文文檔檔。?!尽臼臼纠奈臋n檔c11_6.xml】】一一個個簡簡單單的的XML文文檔檔。。<?xmlversion="1.0"encoding="UTF-8"?><!--xml文文檔檔程程序序名名為為c11_6.xml--><目目錄錄><書書><書書名名>面面向向對對象象程程序序設設計計————Java</書書名名><作作者者>張張白白一一,,崔崔尚尚森森</作作者者><出出版版社社>西西安安電電子子科科技技大大學學出出版版社社</出出版版社社><價價格格>26.00</價價格格><出出版版日日期期>2006年年1月月</出出版版日日期期></書書><書書><書書名名>JSP實實用用案案例例教教程程</書書名名><作作者者>馮馮燕燕奎奎,,趙趙德德奎奎等等</作作者者><出出版版社社>清清華華大大學學出出版版社社</出出版版社社><價價格格>35.00</價價格格><出出版版日日期期>2004年年5月月</出出版版日日期期></書書></目目錄錄>如如果果用用DOM來來圖圖形形化化地地表表示示c11_6.xml文文檔檔,,則則如如圖圖11.11所所示示。。圖11.11c11_6.xml的的運運行行結結果果【示示例例程程序序c11_6.java】】用用DOM解解析析c11_6.xml文文檔檔的的Java程程序序。。importorg.w3c.dom.*;//XML的的DOM實實現(xiàn)現(xiàn)importjava.io.*;importjavax.xml.parsers.*;//XML解解析析器器接接口口publicclassC11_6{publicstaticvoidmain(Stringargs[]){try{//獲獲得得一一個個XML文文檔檔的的解解析析器器DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();//解解析析XML文文檔檔生生成成DOM文文檔檔的的接接口口類類,,以以便便訪訪問問DOMDocumentBuilderbuilder=factory.newDocumentBuilder();//Document接接口口描描述述了了對對應應于于XML文文檔檔的的文文檔檔樹樹Documentdocument=builder.parse(newFile("C11_6.xml"));//去去掉掉XML文文檔檔中中作作為為格格式式化化內內容容的的空空白白,//而而映映射射在在DOM樹樹中中的的不不必必要要的的TextNode對對象象document.normalize();Elementroot=document.getDocumentElement();//獲獲得得根根元元素素StringrootName=root.getNodeName();//得得到到根根元元素素名名System.out.print("XML文件件根節(jié)節(jié)點的的名字字:"+rootName);//獲得得根元元素的的子節(jié)節(jié)點列列表NodeListnodelist=root.getChildNodes();GetElement(nodelist);//用用遞歸歸方法法實現(xiàn)現(xiàn)DOM文文檔的的遍歷歷}catch(Exceptione){System.out.println(e);}}publicstaticvoidGetElement(NodeListnodelist){intsize=nodelist.getLength();//得得到子子節(jié)點點列表表的個個數(shù)for(inti=0;i<size;i++){Nodecnode=nodelist.item(i);//獲獲得子子節(jié)點點列表表中的的第i個節(jié)節(jié)點//判斷斷該節(jié)節(jié)點是是否是是文本本節(jié)點點if(cnode.getNodeType()==Node.TEXT_NODE){TexttextNode=(Text)cnode;Stringcontent=textNode.getWholeText();//獲得得文本本內容容System.out.print(content);}//判斷斷該節(jié)節(jié)點是是否是是元素素節(jié)點點if(cnode.getNodeType()==Node.ELEMENT_NODE){ElementelementNode=(Element)cnode;Stringname=elementNode.getNodeName();//獲得得元素素名字字System.out.print(name+":");//獲獲得根根元素素的子子節(jié)點點列表表NodeListnodelist1=elementNode.getChildNodes();GetElement(nodelist1);//用遞遞歸方方法實實現(xiàn)DOM文檔檔的遍遍歷}}}}圖圖11.12是上上面兩兩個文文件在在Eclipse平平臺中中的存存放位位置的的說明明(左左窗口口)和和運行行的結結果(右下下窗口口)。。圖11.12c11_6.java的的運行行結果果11.1XML是一一種什什么語語言??11.2XML與HTML語語言有有何不不同??11.3XML元素素的語語法格格式是是什么么?11.4XML聲聲明中中包含含哪些些屬性性?11.5XSL樣樣式表表結構構由哪哪幾部部分組組成??11.6XSL的根根模板板結構構是什什么??習題題1111.7設設計并并編寫寫一個個數(shù)據(jù)據(jù)內容容有特特殊字字符的的XML文文檔,,顯示示內容容用XSL文檔檔。11.8設設計計并編編寫一一個用用Servlet動動態(tài)生生成的的XML文文檔,,顯示示內容容用XSL文檔檔。11.9設設計計并編編寫一一個用用JSP動動態(tài)生生成的的XML文文檔,,顯示示內容容用XSL文檔檔。11.10設設計并并編寫寫一個個使用用DOM解解釋XML文檔檔的程程序。。11.11用用DOM來圖圖形化化地表表示習習題11.10的XML文檔檔。9、靜夜四無無鄰,荒居居舊業(yè)貧。。。1月-231月-23Thursday,January5,202310、雨中黃黃葉樹,,燈下白白頭人。。。02:31:4402:31:4402:311/5/20232:31:44AM11、以我獨沈久久,愧君相見見頻。。1月-2302:31:4402:31Jan-2305
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 雙方自愿離婚協(xié)議書七篇
- 二人合伙協(xié)議書2025
- 自發(fā)性多汗癥病因介紹
- 廣東省佛山市南海區(qū)、三水區(qū)2023-2024學年九年級上學期期末數(shù)學試題
- 《電機技術應用》課件 3.3.3 直流電機的制動
- (立項備案方案)壓制封頭項目立項申請報告
- (2024)歡樂世界旅游開發(fā)項目可行性研究報告申請備案編制(一)
- 2023年天津市高考語文模擬試卷
- 江蘇省鹽城市建湖縣漢開書院學校2023-2024學年七年級上學期第二次月考道德與法治試題(原卷版)-A4
- 2023年乙烯冷箱產品項目融資計劃書
- 2024滬粵版八年級上冊物理期末復習全冊知識點考點提綱
- 人教版2024-2025學年第一學期八年級物理期末綜合復習練習卷(含答案)
- 遼寧省沈陽市2023-2024學年五年級上學期語文期末考試試卷(含答案)
- 基礎模塊2 Unit8 Green Earth單元測試-2025年中職高考英語一輪復習講練測(高教版2023修訂版·全國用)
- 科學認識天氣智慧樹知到期末考試答案2024年
- (高清版)DZT 0261-2014 滑坡崩塌泥石流災害調查規(guī)范(1:50000)
- 考試瘋云(校園小品)
- 國際象棋啟蒙教育PPT課件
- 基坑工程專項施工方案
- 財務評價輔助報表和基本報表
- 廣州狀元坊歷史文化街區(qū)更新改造前期調研圖文.ppt
評論
0/150
提交評論