[程序設計]XML基礎入門和實例分析

3年前 (2021-08-28)閱讀364回復0
敖映之
敖映之
  • 管理員
  • 發消息
  • 注冊排名1873
  • 經驗值80
  • 級別管理員
  • 主題16
  • 回復0
樓主
印刷廠直印加工●彩頁1000張只需要69元●名片5元每盒-更多產品印刷報價?聯系電話:138-1621-1622(微信同號)

XML的強大和廣泛運用,一定會讓你對它愛不釋手ID嵌套樣式問題。我這里只是講一些入門基礎并做了進一步簡化和整理。本帖未涉及的一些概念以及它的作用和運用范圍請用百度搜索,ok?

  為了便于理解和引起大家興趣ID嵌套樣式問題,先看一些例子

  1)

021yin.com /jalihh/xml/myfile.html

021yin.com /jalihh/xml/myfile.xml

021yin.com /jalihh/xml/myfile.dtd

  2)

021yin.com /jalihh/xml/cd.html

021yin.com /jalihh/xml/cd.xml

021yin.com /jalihh/xml/cd.dtd

  3)

021yin.com /jalihh/xml/ond.htm

021yin.com /jalihh/xml/ond.xml

021yin.com /jalihh/xml/ond.dtd

  這是我修改的一些基礎,如果你打算學這個請耐心讀完,好象沒有比這個更精簡的了ID嵌套樣式問題。

  一. 什么是XMLID嵌套樣式問題?

  XML是Extensible Markup Language的簡寫,一種擴展性標識言ID嵌套樣式問題。?

  這里有幾個容易混淆的概念要提醒大家:

  1.XML并不是標記語言ID嵌套樣式問題。它只是用來創造標記語言(比如HTML)的元語言。

  2.XML并不是HTML的替代產品ID嵌套樣式問題。XML不是HTML的升級,它只是HTML的補充,為HTML擴展更多功能。(但值得注意的是HTML的升級版本XHTML的確正在向適應XML靠攏。)

  3.不能用XML來直接寫網頁ID嵌套樣式問題。即便是包含了XML數據,依然要轉換成HTML格式才能在瀏覽器上顯示。

  二、使用XML有什么好處ID嵌套樣式問題?來看w3c組織(XML標準制定者)的說明:

  1.XML可以廣泛的運用于web的任何地方;

  2.XML可以滿足網絡應用的需求;

  3.使用XML將使編程更加簡單;

  4.XML便于學習和創建;

  5.XML代碼將清晰和便于閱讀理解ID嵌套樣式問題。

  三. XML的嚴格格式

  吸取HTML松散格式帶來的經驗教訓,XML一開始就堅持實行“良好的格式“ID嵌套樣式問題。

  我們先看HTML的一些語句ID嵌套樣式問題,這些語句在HTML中隨處可見:

  1. sample

  2. b isample /b /i

  3. tdsample /TD

  4. font color=redsamplar /font

  在XML文檔中,上述幾種語句的語法都是錯誤的ID嵌套樣式問題。因為:

  1.所有的標記都必須要有一個相應的結束標記;

  2.所有的XML標記都必須合理嵌套;

  3.所有XML標記都區分大小寫;

  4.所有標記的屬性必須用““括起來;

  所以上列語句在XML中正確的寫法是

  1. sample/sample

  2. b isample /i /b

  3. tdsample /td

  4. font color=“red“samplar /font

  另外ID嵌套樣式問題,XML標記必須遵循下面的命名規則:

  1.名字中可以包含字母、數字以及其它字母;

  2.名字不能以數字或“_“ (下劃線) 開頭;

  3.名字不能以字母 xml (或 XML 或 Xml ..) 開頭;

  4.名字中不能包含空格ID嵌套樣式問題。

  四ID嵌套樣式問題,XML概念

  1. 擴展性

  2. 標識

  3. 語言

  4. 結構化

  5. Meta數據

  6. 顯示

  7. DOM

  1,擴展性---使用XML,你可以為你的文檔建立自己的標記(tags)ID嵌套樣式問題。

  XML的第一個詞是“擴展性“,這正是XML強大的功能和彈性的原因ID嵌套樣式問題。

  在HTML里,有許多固定的標記,我們必須記住然后使用它們,你不能使用HTML規范里沒有的標記ID嵌套樣式問題。而在XML中,你能建立任何你需要的標記。你可以充分發揮你的想象力,給你的文檔起一些好記的標記名稱。比如,你的文檔里包含一些游戲的攻略,你可以建立一個名為game的標記,然后在game下再根據游戲類別建立RPG,SLG等標記。只要清晰,易于理解你可以建立任何數量的標記。

  2,標識---使用XML你可以識別文檔中的元素ID嵌套樣式問題。

  XML的第二個詞是“標識“,這表明了XML的目的是標識文檔中的元素ID嵌套樣式問題。

  有一點要提醒大家注意:標識僅僅是用來識別信息,它本身并不傳達信息ID嵌套樣式問題。例如這樣的HTML代碼:

  bfrist stepb

  這里b表示粗體,只用來說明是用粗體來顯示“frist step“字符,b本身并不包含任何實際的信息,在頁面上你看不到b,真正傳達信息的是“frist step “ID嵌套樣式問題。

  3.語言---使用XML你要遵循特定的語法來標識你的文檔ID嵌套樣式問題。

  XML第三個詞是“語言“ID嵌套樣式問題。這表明了作為一種語言XML必須遵循一定的規則。雖然XML的擴展性允許你創建新標識,但它仍然必須遵循特定的結構,語法和明確的定義。

  在計算機領域,語言常常表示一?quot;程序語言“,用來編程實現一些功能和應用,但不是所有的“語言“都是用來編程的,XML就只是一種用來定義標識和描述信息的語言ID嵌套樣式問題。

  4.結構化---XML促使文檔結構化,所有的信息按某種關系排列ID嵌套樣式問題。

  “結構化“聽起來太抽象了,我們這樣理解,結構化就是為你的文檔建立一個框架,就象寫文章先寫一個提綱ID嵌套樣式問題。結構化使你的文檔看起來不會雜亂無章,每一部分都緊密聯系,形成一個整體。

  結構化有兩個原則:

  1.每一部分(每一個元素)都和其他元素有關聯ID嵌套樣式問題。關聯的級數就形成了結構。

  2.標識本身的含義與它描述的信息相分離ID嵌套樣式問題。

  我們來看一個簡單的例子幫助理解:

  ?xml version=“1.0“ encoding=“GB2312“?

  myfile

  titleXML輕松學習手冊/title

  chapterXML快速入門

  para什么是XML/para

  para使用XML的好處/para

  /chapter

  chapterXML的概念

  para擴展性/para

  para標識/para

  /chapter

  /myfile

  這是本文的XML描述文檔ID嵌套樣式問題,可以看到標識分三級關聯,非常清晰:

  myfile

  chapter

  para

  /para

  /chapter

  /myfile

  上面這樣的文檔結構,我們又稱之為“文檔樹“,主干是父元素,如myfile,分支和頁是子元素,如chapter和paraID嵌套樣式問題。

  5.Meta數據(Metadata)---專業的XML使用者會使用meta數據來工作ID嵌套樣式問題。

  在HTML中我們知道可以使用meta標識來定義網頁的關鍵字,簡介等,這些標識不會顯示在網頁中,但可以被搜索引擎搜索到,并影響搜索結果的排列順序ID嵌套樣式問題。

  XML對這一原理進行了深化和擴展,用XML,你可以描述你的信息在哪里,你可以通過meta來驗證信息,執行搜索,強制顯示,或者處理其他的數據ID嵌套樣式問題。

  六.顯示

  單獨用XMl不能顯示頁面,我們使用格式化技術,比如CSS或者XSL,才能顯示XML標記創建的文檔ID嵌套樣式問題。

  我們在前面第一章講到XML是將數據和格式分離的ID嵌套樣式問題。XML文檔本身不知道如何來顯示,必須有輔助文件來幫助實現。(XML取消了所有標識,包括font,color,p等風格樣式定義標識,因此XML全部是采用類似DHTML中CSS的方法來定義文檔風格樣式。),XML中用來設定顯示風格樣式的文件類型有:

  1.XSL

  XSL全稱是Extensible Stylesheet Language(可擴展樣式語言), 是將來設計XML文檔顯示樣式的主要文件類型ID嵌套樣式問題。它本身也是基于XML語言的。使用XSL,你可以靈活的設置文檔顯示樣式,文檔將自動適應任何瀏覽器和PDA(掌上電腦)。

  XSL也可以將XML轉化為HTML,那樣,老的瀏覽器也可以瀏覽XML文檔了ID嵌套樣式問題。

  2.CSS

  CSS大家很熟悉了,全稱是Cascading Style Sheets(層疊樣式表),是目前用來在瀏覽器上顯示XML文檔的主要方法ID嵌套樣式問題。

  3.Behaviors

  Behaviors現在還沒有成為標準ID嵌套樣式問題。它是微軟的IE瀏覽器特有的功能,用它可以對XML標識設定一些有趣動作。

  七.DOM

  DOM全稱是document object model(文檔對象模型),DOM是用來干什么的呢?假設把你的文檔看成一個單獨的對象,DOM就是如何用HTML或者XML對這個對象進行操作和控制的標準ID嵌套樣式問題。

  面向對象的思想方法已經非常流行了,在編程語言(例如java,js)中,都運用面向對象的編程思想ID嵌套樣式問題。在XML中,就是要將網頁也作為一個對象來操作和控制,我們可以建立自己的對象和模板。與對象進行交流,如何命令對象,就要用到API。API全稱Application Programming Interface,它是訪問和操作對象的規則。而DOM就是一種詳細描述HTML/XML文檔對象規則的API。它規定了HTML/XML文檔對象的命名協定,程序模型,溝通規則等。在XML文檔中,我們可以將每一個標識元素看作一個對象---它有自己的名稱和屬性。

  XML創建了標識ID嵌套樣式問題,而DOM的作用就是告訴script如何在瀏覽器窗口中操作和顯示這些標識

  上面我們已經簡要的講述了一些XML的基本原理ID嵌套樣式問題,我們來看看它們之間的關聯以及它們是如何工作的,

  1.XML描述數據類型ID嵌套樣式問題。例如:“King lear“是一個標題元素;

  2.CSS儲存并控制元素的顯示樣式ID嵌套樣式問題。例如:標題將被以18pt字體顯示

  3.script腳本控制元素如何動作ID嵌套樣式問題。例如:當一個title元素“out of stock“,將被用紅色顯示。

  4.DOM則為腳本和對象的交流提供一個公共平臺,并將結果顯示在瀏覽器窗口ID嵌套樣式問題。

  如果任何一個部分發生錯誤,都不會得到正確結果ID嵌套樣式問題。

  五.XML文檔的有關術語

  什么是XML文檔ID嵌套樣式問題?

  知道HTML原代碼文件吧,XML文檔就是用XML標識寫的XML原代碼文件ID嵌套樣式問題。XML文檔也是ASCII的純文本文件,你可以用Notepad創建和修改。XML文檔的后綴名為.XML,例如myfile.xml。用IE5.0以上瀏覽器也可以直接打開.xml文件,但你看到的就是“XML原代碼“,而不會顯示頁面內容。你可以將下面代碼存為myfile.xml試試:

  ?xml version=“1.0“ encoding=“GB2312“?

  myfile

  titleXML快速入門/title

  authorjalihh/author

021yin.com /email

  date20040608/date

  /myfile

  XML文檔包含三個部分:

  1. 一個XML文檔聲明;

  2. 一個關于文檔類型的定義;

  3. 用XML標識創建的內容ID嵌套樣式問題。

  舉例說明:

  ?xml version=“1.0“ encoding=“GB2312“?

  !--聲明這是一個XML文檔ID嵌套樣式問題,它遵循的是XML1.0版本的規范,說明文檔所使用的語言編碼,默認的是UTF-8,如果使用中文,你需要設置為GB2312--

  !DOCTYPE myfile SYSTEM “myfile.dtd“

  !--說明這個文檔是用myfile.dtd來定義文檔類型的--

  myfile

  titleXML快速入門/title

  authorjalihh/author

021yin.com /email

  date20040605/date

  /myfile

  !--第三行以下就是內容主體部分--

  我們來了解XML文檔中有關的術語:

  1.Element(元素):

  元素在HTML我們已經有所了解,它是組成HTML文檔的最小單位,在XML中也一樣ID嵌套樣式問題。一個元素由一個標識來定義,包括開始和結束標識以及其中的內容,就象這樣:authorjalihh/author

  唯一不同的就是:在HTML中,標識是固定的,而在XML中,標識需要你自己創建ID嵌套樣式問題。

  2.Tag(標識)

  標識是用來定義元素的ID嵌套樣式問題。在XML中,標識必須成對出現,將數據包圍在中間。標識的名稱和元素的名稱是一樣的。例如這樣一個元素:

  authorjalihh/author

  其中author就是標識ID嵌套樣式問題。

  3.Attribute(屬性):

  什么是屬性?看這段HTML代碼:font color=“red“word/fontID嵌套樣式問題。其中color就是font的屬性之一。

  屬性是對標識進一步的描述和說明,一個標識可以有多個屬性,例如font的屬性還有sizeID嵌套樣式問題。XML中的屬性與HTML中的屬性是一樣的,每個屬性都有它自己的名字和數值,屬性是標識的一部分。舉例:

  author sex=“man“jalihh/author

  XML中屬性也是自己定義的ID嵌套樣式問題,我們建議你盡量不使用屬性,而將屬性改成子元素,例如上面的代碼可以改成這樣:

  authorjalihh

  sexman/sex

  /author

  原因是屬性不易擴充和被程序操作ID嵌套樣式問題。

  4.Declaration(聲明)

  在所有XML文檔的第一行都有一個XML聲明ID嵌套樣式問題。這個聲明表示這個文檔是一個XML文檔,它遵循的是哪個XML版本的規范。一個XML的聲明語句就象這樣:

  ?xml version=“1.0“?

  5.DTD(文件類型定義)

  DTD是用來定義XML文檔中元素,屬性以及元素之間關系的ID嵌套樣式問題。

  通過DTD文件可以檢測XML文檔的結構是否正確ID嵌套樣式問題。但建立XML文檔并不一定需要DTD文件。關于DTD文件的詳細說明我們將在下面單獨列項。

  6.Well-formed XML(良好格式的XML)

  一個遵守XML語法規則,并遵守XML規范的文檔稱之為“良好格式“ID嵌套樣式問題。如果你所有的標識都嚴格遵守XML規范,那么你的XML文檔就不一定需要DTD文件來定義它。

  良好格式的文檔必須以一個XML聲明開始ID嵌套樣式問題,例如:

  ?xml version=“1.0“ standalone=“yes“ encoding=“UTF-8“?

  其中你必須說明文檔遵守的XML版本,目前是1.0;其次說明文檔是“獨立的“,它不需要DTD文件來驗證其中的標識是否有效;第三,要說明文檔所使用的語言編碼ID嵌套樣式問題。默認的是UTF-8,如果使用中文,你需要設置為GB2312。

  良好格式的XML文檔必須有一個根元素,就是緊接著聲明后面建立的第一個元素,其它元素都是這個根元素的子元素,屬于根元素一組ID嵌套樣式問題。

  良好格式的XML文檔的內容書寫時必須遵守XML語法ID嵌套樣式問題。(有關XML語法我們將在下一章仔細講解)

  7.Valid XML(有效的XML)

  一個遵守XML語法規則,并遵守相應DTD文件規范的XML文檔稱為有效的XML文檔ID嵌套樣式問題。注意我們比較“Well-formed XML“和“Valid XML“,它們最大的差別在于一個完全遵守XML規范,一個則有自己的“文件類型定義(DTD)“。

  將XML文檔和它的DTD文件進行比較分析,看是否符合DTD規則的過程叫validation(確認)ID嵌套樣式問題。這樣的過程通常我們是通過一個名為parser的軟件來處理的。

  有效的XML文檔也必須以一個XML聲明開始ID嵌套樣式問題,例如:

  ?xml version=“1.0“ standalone=“no“ encode=“UTF-8“?

  和上面例子不同的ID嵌套樣式問題,在standalone(獨立)屬性中,這里設置的是“no“,因為它必須和相應的DTD一起使用,DTD文件的定義方法如下:

  !DOCTYPE type-of-doc SYSTEM/PUBLIC “dtd-name“

  其中:

  “!DOCTYPE“是指你要定義一個DOCTYPE;

  “type-of-doc“是文檔類型的名稱ID嵌套樣式問題,由你自己定義,通常于DTD文件名相同;

  “SYSTEM/PUBLIC“這兩個參數只用其一ID嵌套樣式問題。SYSTEM是指文檔使用的私有DTD文件的網址,而PUBLIC則指文檔調用一個公用的DTD文件的網址。

  “dtd-name“ 就是DTD文件的網址和名稱ID嵌套樣式問題。所有DTD文件的后綴名為“.dtd“。

  我們還是用上面的例子ID嵌套樣式問題,應該寫成這樣:

  ?xml version=“1.0“ standalone=“no“ encode=“UTF-8“?

  !DOCTYPE filelist SYSTEM “filelist.dtd“

  六.DTD的有關術語

  什么是DTD,我們上面已經簡略提到ID嵌套樣式問題。DTD是一種保證XML文檔格式正確的有效方法,可以比較XML文檔和DTD文件來看文檔是否符合規范,元素和標簽使用是否正確。一個DTD文檔包含:元素的定義規則,元素間關系的定義規則,元素可使用的屬性,可使用的實體或符號規則。

  DTD文件也是一個ASCII的文本文件,后綴名為.dtdID嵌套樣式問題。例如:myfile.dtd。

  為什么要用DTD文件呢?我的理解是它滿足了網絡共享和數據交互,使用DTD最大的好處在于DTD文件的共享ID嵌套樣式問題。(就是上文DTD說明語句中的PUBLIC屬性)。比如,兩個相同行業不同地區的人使用同一個DTD文件來作為文檔創建規范,那么他們的數據就很容易交換和共享。網上有其他人想補充數據,也只需要根據公用的DTD規范來建立文檔,就立刻可以加入。

  目前,已經有數量眾多的寫好的DTD文件可以利用ID嵌套樣式問題。針對不同的行業和應用,這些DTD文件已經建立了通用的元素和標簽規則。你不需要自己重新創建,只要在他們的基礎上加入你需要的新標識。

  當然,如果愿意,你可以創建自己的DTD,它可能和你的文檔配合的更加完美ID嵌套樣式問題。建立自己的DTD也是很簡單的一件事,一般只需要定義4-5個元素就可以了。

  調用DTD文件的方法有兩種:

  1.直接包含在XML文檔內的DTD

  你只要在DOCTYPE聲明中插入一些特別的說明就可以了ID嵌套樣式問題,象這樣:

  我們有一個XML文檔:

  ?xml version=“1.0“ encoding=“GB2312“?

  myfile

  titleXML快速入門/title

  authorjalihh/author

021yin.com /email

  date20040605/date

  /myfile

  我們在第一行后面插入下面代碼就可以:

  !DOCTYPE myfile [

  !ELEMENT title (#PCDATA)

  !ELEMENT author (#PCDATA)

  !ELEMENT email (#PCDATA)

  !ELEMENT date (#PCDATA)

  !ENTITY copyright “Copyright 2004, jalihh.“

  2.調用獨立的DTD文件

  將DTD文檔存為.dtd的文件ID嵌套樣式問題,然后在DOCTYPE聲明行中調用,例如,將下面的代碼存為myfile.dtd

  !ELEMENT myfile (title,author,email,date)

  !ELEMENT title (#PCDATA)

  !ELEMENT author (#PCDATA)

  !ELEMENT email (#PCDATA)

  !ELEMENT date (#PCDATA)

  然后在XML文檔中調用ID嵌套樣式問題,在第一行后插入:

  !DOCTYPE myfile SYSTEM “myfile.dtd“

   我們可以看到DTD文檔和HTML中js的調用是差不多的,關于DTD文檔具體如何寫,我們將在下一章和XML文檔的語法一起介紹ID嵌套樣式問題。

   下面我們來了解DTD有關的術語:

  1.Schema(規劃)

  schema是數據規則的描述ID嵌套樣式問題。schema做兩件事:

  a.它定義元素數據類型和元素之間的關系;

  b.它定義元素所能包含的內容類型ID嵌套樣式問題。

  DTD就是關于XML文檔的一個schemaID嵌套樣式問題。

   2.Document Tree(文檔樹)

  “文檔樹“在前面第二章我們已經提到過,它是文檔元素分級結構的形象表示ID嵌套樣式問題。一個文檔結構樹包含根元素,根元素是最頂級的元素,(就是緊接著XML聲明語句后的第一個元素)。看例子:

  ?xml version=“1.0“?

  filelist

  myfile

  title.../title

  author.../author

  /myfile

  /filelist

  上面的例子分三級結構排列成“樹“狀,其中的filelist就是根元素ID嵌套樣式問題。在XML和DTD文件中,第一個定義的都是根元素。

  3.Parent Element(父元素)/Child Element(子元素)

  父元素是指包含有其它元素的元素,被包含的元素稱為它的子元素ID嵌套樣式問題。看上面的“結構樹“,其中myfile是父元素,title,author是它的子元素,而myfile又是filelist的子元素。象title這樣沒有包含任何子元素的最后一級元素我們也稱之為“頁元素“。

  4.Parser(解析軟件)

  Parser是一種檢查XML文檔是否遵循DTD規范的工具軟件ID嵌套樣式問題。

  XML的parser發展為兩類:一種是“非確認類paeser“,只檢測文檔是否遵守XML語法規則,是否用元素標識建立了文檔樹ID嵌套樣式問題。另一種是“確認類paeser“,它不但檢測文檔語法,結構樹,而且比較解析你使用的元素標識是否遵守了相應DTD文件的規范。

  Parser能獨立使用,也可以成為編輯軟件或瀏覽器的一部分ID嵌套樣式問題。在后面的相關資源列表里,我列出了當前比較流行的一些parsers。

  七 XML語法

  1.XML語法規則

  2.元素的語法

  3.注釋的語法

  4.CDATA的語法

  5.Namespaces的語法

  6.entity的語法

  7.DTD的語法

  1.XML語法規則

  XML的文檔和HTML的原代碼類似,也是用標識來標識內容ID嵌套樣式問題。創建XML文檔必須遵守下列重要規則:

  規則1:必須有XML聲明語句

  這一點我們在上一章學習時已經提到過ID嵌套樣式問題。聲明是XML文檔的第一句,其格式如下:

  ?xml version=“1.0“ standalone=“yes/no“ encoding=“UTF-8“?

  聲明的作用是告訴瀏覽器或者其它處理程序:這個文檔是XML文檔ID嵌套樣式問題。聲明語句中的version表示文檔遵守的XML規范的版本;standalone表示文檔是否附帶DTD文件,如果有,參數為no;encoding表示文檔所用的語言編碼,默認是UTF-8。

  規則2:是否有DTD文件

  如果文檔是一個“有效的XML文檔“(見上一章),那么文檔一定要有相應DTD文件,并且嚴格遵守DTD文件制定的規范ID嵌套樣式問題。DTD文件的聲明語句緊跟在XML聲明語句后面,格式如下:

  !DOCTYPE type-of-doc SYSTEM/PUBLIC “dtd-name“

  其中:

  “!DOCTYPE“是指你要定義一個DOCTYPE;

  “type-of-doc“是文檔類型的名稱ID嵌套樣式問題,由你自己定義,通常于DTD文件名相同;

  “SYSTEM/PUBLIC“這兩個參數只用其一ID嵌套樣式問題。SYSTEM是指文檔使用的私有DTD文件的網址,而PUBLIC則指文檔調用一個公用的DTD文件的網址。

  “dtd-name“ 就是DTD文件的網址和名稱ID嵌套樣式問題。所有DTD文件的后綴名為“.dtd“。

  我們還是用上面的例子ID嵌套樣式問題,應該寫成這樣:

  ?xml version=“1.0“ standalone=“no“ encode=“UTF-8“?

  !DOCTYPE filelist SYSTEM “filelist.dtd“

  規則3:注意你的大小寫

  在XML文檔中,大小寫是有區別的ID嵌套樣式問題。P和p是不同的標識。注意在寫元素時,前后標識大小寫要保持一樣。例如:Authorajie/Author,寫成Authorajie/author是錯誤的。

  你最好養成一種習慣,或者全部大寫,或者全部小寫,或者大寫第一個字母ID嵌套樣式問題。這樣可以減少因為大小寫不匹配產生的文檔錯誤。

  規則4:給屬性值加引號

  在HTML代碼里面,屬性值可以加引號,也可以不加ID嵌套樣式問題。例如:font color=redword/font和font color=“red“word/font都可以被瀏覽器正確解釋。

  但是在XML中則規定,所有屬性值必須加引號(可以是單引號,也可以是雙引號),否則將被視為錯誤ID嵌套樣式問題。

  規則5:所有的標識必須有相應的結束標識

  在HTML中,標識可能不是成對出現的,比?lt;brID嵌套樣式問題。而在XML中規定,所有標識必須成對出現,有一個開始標識,就必須有一個結束標識。否則將被視為錯誤。

  規則6:所有的空標識也必須被關閉

  空標識就是標識對之間沒有內容的標識ID嵌套樣式問題。比如br,img等標識。在XML中,規定所有的標識必須有結束標識,針對這樣的空標識,XML中處理的方法是在原標識最后加/,就可以了。例如:

  br應寫為br /;

  META name=“keywords“ content=“XML, SGML, HTML“應寫為META name=“keywords“ content=“XML, SGML, HTML“ /;

  IMG original= “cool.gif“應寫為IMG original= “cool.gif“ /

  2.元素的語法

  元素由一對標識以及其中的內容組成ID嵌套樣式問題。元素的名稱和標識的名稱是一樣的。標識可以用屬性來進一步描述。

  在XML中,沒有任何保留字,所以你可以隨心所欲的用任何詞語來作為元素名稱ID嵌套樣式問題。但是也必須遵守下列規范:

  1.名稱中可以包含字母、數字以及其它字母;

  2.名稱不能以數字或“_“ (下劃線)開頭;

  3.名稱不能以字母 xml(或 XML 或 Xml ..)開頭

  4.名稱中不能包含空格

  5.名稱中間不能包含“:“(冒號)

  為了使元素更容易閱讀理解和操作ID嵌套樣式問題,我們還有一些建議:

  1.名稱中不要使用“.“ID嵌套樣式問題。因為在很多程序語言中,“.“是作為對象的屬性,例如:font.color。同樣的原因“-“也最好不要用,必須使用的,以“_“代替;

  2.名稱盡量簡短ID嵌套樣式問題。

  3.名稱的大小寫盡量采用同一標準ID嵌套樣式問題。

  4.名稱可以使用非英文字符,比如用中文ID嵌套樣式問題。但是有些軟件可能不支持。(IE5目前是支持中文元素的。)

  另外,補充一點關于屬性的說明ID嵌套樣式問題。在HTML中,屬性可以用來定義元素的顯示格式,比如:font color=“red“word/font將把word顯示為紅色。而在XML中,屬性只是對標識的描述,與元素內容的顯示無關。例如同樣一句:font color=“red“word/font,并不會將word顯示為紅色。(那么,有網友會問:如何在XML中將文字顯示為紅色呢?這就需要使用CSS或者XSL,我們在下面詳細講述。)

  3.注釋的語法

  注釋是為了便于閱讀和理解,在XML文檔添加的附加信息,將不會被程序解釋或則瀏覽器顯示ID嵌套樣式問題。

  注釋的語法如下:

  !-- 這里是注釋信息 --

  可以看到,它和HTML中的注釋語法是一樣的,非常容易ID嵌套樣式問題。養成良好的注釋習慣將使你的文檔更加便于維護,共享,看起來也更專業。

  4.CDATA的語法

  CDATA全稱character data,翻譯為字符數據ID嵌套樣式問題。我們在寫XML文檔時,有時需要顯示字母,數字和其它的符號本身,比如““,而在XML中,這些字符已經有特殊的含義,我們怎么辦呢?這就需要用到CDATA語法。語法格式如下:

  ![CDATA[這里放置需要顯示的字符]]

  例如:

  ![CDATA[AUTHOR sex=“man“jalihh/AUTHOR]]

  在頁面上顯示的內容將是“AUTHOR sex=“man“jalihh/AUTHOR“

  5.Namespaces的語法

  Namespaces翻譯為名字空間ID嵌套樣式問題。名字空間有什么作用呢?當我們在一個XML文檔中使用他人的或者多個DTD文件,就會出現這樣的矛盾:因為XML中標識都是自己創建的,在不同的DTD文件中,標識名可能相同但表示的含義不同,這就可能引起數據混亂。

  比如在一個文檔tablewood table/table中table表示桌子ID嵌套樣式問題,

  而在另一個文檔tablenamelist/table中table表示表格ID嵌套樣式問題。如果我需要同時處理這兩個文檔,就會發生名字沖突。

  了解決這個問題,我們引進了namespaces這個概念ID嵌套樣式問題。namespaces通過給標識名稱加一個網址(URL)定位的方法來區別這些名稱相同的標識。

  Namespaces同樣需要在XML文檔的開頭部分聲明ID嵌套樣式問題,聲明的語法如下:

  document xmlns:yourname=’URL’

  其中yourname是由你定義的namespaces的名稱,URL就是名字空間的網址ID嵌套樣式問題。

021yin.com ID嵌套樣式問題,我們就可以聲明為

021yin.com #39;

  然后在后面的標識中使用定義好的名字空間:

  zhuozi:tablewood table/table

  這樣就將這兩個table區分開來ID嵌套樣式問題。注意的是:設置URL并不是說這個標識真的要到那個網址去讀取,僅僅作為一種區別的標志而已。

  6.entity的語法

  entity翻譯為“實體“ID嵌套樣式問題。它的作用類似word中的“宏“,也可以理解為DW中的摸板,你可以預先定義一個entity,然后在一個文檔中多次調用,或者在多個文檔中調用同一個entity。

  entity可以包含字符,文字等等,使用entity的好處在于:1.它可以減少差錯,文檔中多個相同的部分只需要輸入一遍就可以了ID嵌套樣式問題。2.它提高維護效率。比如你有40個文檔都包含copyright的entity,如果需要修改這個copyright,不需要所有的文件都修改,只要改最初定義的entity語句就可以了。

  XML定義了兩種類型的entityID嵌套樣式問題。一種是我們這里說的普通entity,在XML文檔中使用;另一種是參數entity,在DTD文件中使用。

  entity的定義語法為:

  !DOCTYPE filename [

  !ENTITY entity-name “entity-content“

  例如我要定義一段版權信息:

  !DOCTYPE copyright [

  !ENTITY copyright “Copyright 2004, jalihh. All rights reserved“

  如果我的版權信息內容和他人共享一個XML文件ID嵌套樣式問題,也可以使用外部調用的方法,語法象這樣:

  !DOCTYPE copyright [

021yin.com /copyright.xml“;

  定義好的entity在文檔中的引用語法為:entity-name;

  例如ID嵌套樣式問題,上面定義的版權信息,調用時寫作?copyright;

  完整的例子如下ID嵌套樣式問題,你可以copy下來存為copyright.xml觀看實例:

  ?xml version=“1.0“ encoding=“GB2312“?

  !DOCTYPE copyright [

  !ENTITY copyright “Copyright 2004, jalihh. All rights reserved“

  myfile

  titleXML/title

  authorjalihh/author

021yin.com /email

  date20040605/date

  copy;right;

  /myfile

  7.DTD的語法

  DTD是“有效XML文檔“的必須文件,我們通過DTD文件來定義文檔中元素和標識的規則及相互關系ID嵌套樣式問題。如何建立一個DTD文件呢?讓我們一起來學習:

  1.設置元素

  元素是XML文檔的基本組成部分ID嵌套樣式問題。你要在DTD中定義一個元素,然后在XML文檔中使用。元素的定義語法為:!ELEMENT DESCRIPTION (#PCDATA, DEFINITION)*

  說明:

  “!ELEMENT“ 是元素的聲明ID嵌套樣式問題,說明你要定義的是一個元素;

  聲明后面的“DESCRIPTION“,是元素的名稱;

  “(#PCDATA, DEFINITION)*“則是該元素的使用規則ID嵌套樣式問題。規則定義了元素可以包含的內容以及相互的關系。下面的表格概要列出了元素的規則:

  2.元素規則:

  Symbol

   含義

   舉例

  #PCDATA

   包含字符或文本數據

   MYFILE(#PCDATA)

  元素MYFILE包含一個文本數據

  #PCDATA, element-name

   包含文本和其它子元素

   MYFILE(#PCDTATA,TITLE)

  MYFILE元素必須包含文本和TITLE子元素

   使用逗號分隔排序

   MYFILE (TITLE,AUTHOR,EMAIL)

  MYFILE元素必須依次包含TITILE,AUTHOR,EMAIL三個子元素

   使用“|“表示或者

   MYFILE (TITLE | AUTHOR | EMAIL)

  MYFILE元素必須包含TITLE,或者AUTHOR或者EMAIL子元素ID嵌套樣式問題。

  name

   只能使用一次

   MYFILE (TITLE)

  MYFILE元素必須包含TITLE子元素,而且只能使用一次ID嵌套樣式問題。

  name?

   使用一次或者不使用

   MYFILE (TITLE,AUTHOR?,EMAIL?)

  MYFILE元素必須包含TITLE子元素,而且只能使用一次;可以包含或者不包含AUTHOR和EMAIL子元素,但是如果使用,只能一次ID嵌套樣式問題。

  name+

   使用至少一次或多次

   MYFILE (TITLE+,AUTHOR?,EMAIL)

  MYFILE元素必須包含TITLE子元素,而且使用至少一次;接下來可以跟隨AUTHOR子元素,也可以不跟;最后必須包含EMAIL子元素,而且只能使用一次ID嵌套樣式問題。

  name*

   使用一次ID嵌套樣式問題,多次,或者根本不使用

   MYFILE (TITLE*)

  MYFILE元素可以包含一個ID嵌套樣式問題,多個或者不包含TITLE子元素

   設置組ID嵌套樣式問題,可以嵌套

   MYFILE(#PCDATA | TITLE)*

  元素MYFILE包含一個或者更多的文本或者TITLE子元素ID嵌套樣式問題。

  MYFILE((TITLE*, AUTHOR?, EMAIL)* | COMMENT)

  MYFILE元素必須包含一些內容,內容或者是一個注釋;也或者是多個組,組里包含:一個,多個或者沒有TITLE子元素,接著是一個或者沒有AUTHOR子元素,再接著是一個必須的EMAIL子元素ID嵌套樣式問題。

  最后ID嵌套樣式問題,我們來總結學習的內容,寫一個包含DTD,XML,以及Script的簡單實例,便于讀者理解:

  1.將下面文件存為myfile.dtd

  !ELEMENT myfile (title, author,email,date)

  !ELEMENT title (#PCDATA)

  !ELEMENT author (#PCDATA)

  !ELEMENT emali (#PCDATA)

  !ELEMENT date (#PCDATA)

  2.然后建立XML文檔myfile.xml:

  ?xml version=“1.0“ encoding=“GB2312“?

  !DOCTYPE myfile SYSTEM “myfile.dtd“

  myfile

  titleXML快速入門/title

  authorjalihh/author

021yin.com /email

  date20040605/date

  /myfile

  3.建立HTML文檔myfile.html

  html

  head

  script language=“javascript“ for=“window“ event=“onload“

  var xmlDoc = new ActiveXObject(“Microsoft.XMLDOM“);

  xmlDoc.async=“false“;

  xmlDoc.load(“myfile.xml“);

  nodes = xmlDoc.documentElement.childNodes;

  title.innerText = nodes.item(0).text;

  author.innerText = nodes.item(1).text;

  email.innerText = nodes.item(2).text;

  date.innerText = nodes.item(3).text;

  /script

  title在HTML中調用XML數據——青風劍客/title

  /head

  body bgcolor=“#FFFFFF“

  b標題: /b

  span id=“title“/spanbr

  b作者: /b

  span id=“author“/spanbr

  b郵箱: /b

  span id=“email“/spanbr

  b日期: /b

  span id=“date“/spanbr

  /body

  /html

  4.用IE5.0以上瀏覽器打開myfile.html就可以看到效果了ID嵌套樣式問題。

  效果預覽:

021yin.com /jalihh/xml/myfile.html

021yin.com /jalihh/xml/myfile.xml

021yin.com /jalihh/xml/myfile.dtd

  打開文件后ID嵌套樣式問題,用ie——“查看”——“源文件”

  八:XML實例解析

  一:實例效果

  二:實例解析

    1.定義新標識ID嵌套樣式問題。

    2.建立XML文檔ID嵌套樣式問題。

    3.建立相應的HTML文件ID嵌套樣式問題。

021yin.com /jalihh/xml/cd.html來看實例的效果ID嵌套樣式問題。(請用IE5.0以上版本瀏覽器打開)

  這是一個簡單的CD唱片數據檢索功能ID嵌套樣式問題。你通過點擊“上一張“,“下一張“可以看到單張CD的有關信息。這樣的效果我們原來用兩種方法可以實現:

  1.利用DHTMLID嵌套樣式問題,將數據隱藏在不同的層中,通過鼠標事件依次顯示;

  2.利用后臺程序(如ASP,CGI,PHP,JSP等),調用服務器端的數據ID嵌套樣式問題。

  但是在這個實例中,我們打開頁面原代碼可以看到,其中沒有用DHTML的DIV,也沒有表單的action,它完全是用XML來實現的ID嵌套樣式問題。下面我們來分析它的制作過程:

  第一步:定義新標識ID嵌套樣式問題。

  根據實際的CD數據,首先新建一個名為CD的標識;其次建立它相關的數據標識,分別是:CD名稱Title,演唱者Artist,出版年代Year,國家Country,發行公司Company和價格Price;最后還要建立一個名為目錄CATALOG的標識ID嵌套樣式問題。為什么要再建立一個CATALOG標識呢?因為在XML文檔中規定,必須且只能有一個根元素(標識),我們有多個CD數據,這些數據是并列的關系,所以需要為這些并列的元素建立一個根元素。

  以上元素的定義和關系都完全符合XML標準,不需要特別的DTD文件來定義,所以可以省略DTD定義ID嵌套樣式問題。如果我們想使用DTD來定義,以上過程可以表示為:

  !ELEMENT CATALOG (CD)*

  !ELEMENT CD (Title,Artist,Year,Country,Company,Price)

  !ELEMENT Title (#PCDATA)

  !ELEMENT Artist (#PCDATA)

  !ELEMENT Year (#PCDATA)

  !ELEMENT Country (#PCDATA)

  !ELEMENT Company (#PCDATA)

  !ELEMENT Price (#PCDATA)

  這段代碼表示:元素CATALOG包含多個CD子元素,而子元素CD又依次包含Title, Artist, Year, Country, Company, Price 六個子元素,它們的內容都定義為文本(字符,數字,文本)ID嵌套樣式問題。(注:具體的語法說明可以看上一章關于DTD的介紹)

  第二步:建立XML文檔ID嵌套樣式問題。

  ?xml version=“1.0“?

  CATALOG

  CD

  TITLEEmpire Burlesque/TITLE

  ARTISTBob Dylan/ARTIST

  COUNTRYUSA/COUNTRY

  COMPANYColumbia/COMPANY

  PRICE10.90/PRICE

  YEAR1985/YEAR

  /CD

  CD

  TITLEHide your heart/TITLE

  ARTISTBonnie Tylor/ARTIST

  COUNTRYUK/COUNTRY

  COMPANYCBS Records/COMPANY

  PRICE9.90/PRICE

  YEAR1988/YEAR

  /CD

  CD

  TITLEGreatest Hits/TITLE

  ARTISTDolly Parton/ARTIST

  COUNTRYUSA/COUNTRY

  COMPANYRCA/COMPANY

  PRICE9.90/PRICE

  YEAR1982/YEAR

  /CD

  CD

  TITLEStill got the blues/TITLE

  ARTISTGary More/ARTIST

  COUNTRYUK/COUNTRY

  COMPANYVirgin redords/COMPANY

  PRICE10.20/PRICE

  YEAR1990/YEAR

  /CD

  CD

  TITLEEros/TITLE

  ARTISTEros Ramazzotti/ARTIST

  COUNTRYEU/COUNTRY

  COMPANYBMG/COMPANY

  PRICE9.90/PRICE

  YEAR1997/YEAR

  /CD

  /CATALOG

  上面代碼首先用?xml version=“1.0“?聲明語句表明這是一個XML文檔,它的格式遵守XML 1.0標準規范ID嵌套樣式問題。然后是文檔內容,結構樹非常清晰:

  CATALOG

  CD

  /CD

  CD

  /CD

  /CATALOG

  一共定義了5組數據ID嵌套樣式問題。我們將上面的代碼存為cd.xml文件,以備調用。

  第三步:建立相應的HTML文件ID嵌套樣式問題。

  1.導入XML數據ID嵌套樣式問題。

  我們知道,目前流行的瀏覽器中,暫時只有微軟的IE5.0以上版本瀏覽器支持XMLID嵌套樣式問題。IE是通過在HTML中的object物件來支持插入XML,并通過js的XMLDocument.load()方法來導入數據。我們看代碼: object WIDTH=“0“ HEIGHT=“0“

  CLASSID=“clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39“ ID=“xmldso“

  /object

  定義一個object,ID名為xmldsoID嵌套樣式問題。然后在head區用js引入xml數據:

  script for=“window“ event=“onload“

  xmldso.XMLDocument.load(“cd.xml“);

  /script

  2.捆綁數據ID嵌套樣式問題。

  然后將用SPAN標識來將XML數據綁定在表格中ID嵌套樣式問題。其中ID,DATASRC,DTATFLD都是SPAN的屬性。代碼如下:

  table

  trtdTitle:/tdtdSPAN ID=“title“ DATAoriGinal=#xmldso DATAFLD=“TITLE“/SPAN/td/tr

  trtdArtist:/tdtdSPAN ID=“artist“ DATAoriGinal=#xmldso DATAFLD=“ARTIST“/SPAN/td/tr

  trtdYear:/tdtdSPAN ID=“year“ DATAoriGinal=#xmldso DATAFLD=“YEAR“/SPAN/td/tr

  trtdCountry:/tdtdSPAN ID=“country“ DATAoriGinal=#xmldso DATAFLD=“COUNTRY“/SPAN/td/tr

  trtdCompany:/tdtdSPAN ID=“company“ DATAoriGinal=#xmldso DATAFLD=“COMPANY“/SPAN/td/tr

  trtdPrice:/tdtdSPAN ID=“price“ DATAoriGinal=#xmldso DATAFLD=“PRICE“/SPAN/td/tr

  /table

  3.動作操作ID嵌套樣式問題。

  最后ID嵌套樣式問題,為數據提供瀏覽按鈕:

  INPUT TYPE=button value=“上一張CD“ onCLICK=“moveprevious()“

  INPUT TYPE=button value=“下一張CD“ onCLICK=“movenext()“

  并利用js來完成兩個鼠標點擊功能:movenext()和moveprevious()ID嵌套樣式問題。在head區加入如下代碼:

  script language=“javascript“

  function movenext()

  if (xmldso.recordset.absoluteposition xmldso.recordset.recordcount)

  xmldso.recordset.movenext();

  function moveprevious()

  if (xmldso.recordset.absoluteposition 1)

  xmldso.recordset.moveprevious();

  /script

  好ID嵌套樣式問題,我們先看HTML文件的全部原代碼:

  html

  head

  script for=“window“ event=“onload“

  xmldso.XMLDocument.load(“cd.xml“);

  /script

  script language=“javascript“

  function movenext()

  if (xmldso.recordset.absoluteposition xmldso.recordset.recordcount)

  xmldso.recordset.movenext();

  function moveprevious()

  if (xmldso.recordset.absoluteposition 1)

  xmldso.recordset.moveprevious();

  /script

  TITLECD Navigate/TITLE

  /head

  body

  p

  object WIDTH=“0“ HEIGHT=“0“

  CLASSID=“clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39“ ID=“xmldso“

  /object

  table

  trtdTitle:/tdtdSPAN ID=“title“ DATAoriGinal=#xmldso DATAFLD=“TITLE“/SPAN/td/tr

  trtdArtist:/tdtdSPAN ID=“artist“ DATAoriGinal=#xmldso DATAFLD=“ARTIST“/SPAN/td/tr

  trtdYear:/tdtdSPAN ID=“year“ DATAoriGinal=#xmldso DATAFLD=“YEAR“/SPAN/td/tr

  trtdCountry:/tdtdSPAN ID=“country“ DATAoriGinal=#xmldso DATAFLD=“COUNTRY“/SPAN/td/tr

  trtdCompany:/tdtdSPAN ID=“company“ DATAoriGinal=#xmldso DATAFLD=“COMPANY“/SPAN/td/tr

  trtdPrice:/tdtdSPAN ID=“price“ DATAoriGinal=#xmldso DATAFLD=“PRICE“/SPAN/td/tr

  /table

  p

  INPUT TYPE=button value=“上一張CD“ onCLICK=“moveprevious()“

  INPUT TYPE=button value=“下一張CD“ onCLICK=“movenext()“

  /p

  /body

  /html

  將以上代碼存為cd.html文件,于第二步的cd.xml文件放在一起ID嵌套樣式問題。打開cd.html文件,你就看見和上面實例一樣的效果了。

  效果

021yin.com /jalihh/xml/cd.html

021yin.com /jalihh/xml/cd.xml

021yin.com /jalihh/xml/cd.dtd

  另一例子ID嵌套樣式問題,自己看看了

021yin.com /jalihh/xml/ond.htm

021yin.com /jalihh/xml/ond.xml

021yin.com /jalihh/xml/ond.dtd

0
0
收藏0
回帖

[程序設計]XML基礎入門和實例分析 期待您的回復!

取消
載入表情清單……
載入顏色清單……
插入網絡圖片

取消確定

圖片上傳中
編輯器信息
提示信息