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