版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、xml 文件格式語法及dtd (轉(zhuǎn))xml 文件和 html 文件一樣,實(shí)際上是一個文本文件。顯然大家立刻就會明白,創(chuàng)建xml 文件最普通的工具和 html 一樣,就是 “ 記事本 ” 了。 除了 “ 記事本 ” 之外, 當(dāng)然還有一些更加方便的工具,如 xml notepad 、xml pro 、clip !xml editor等,這些工具的一大特點(diǎn)是:能夠檢查你所建立的xml 文件是否符合xml規(guī)范。不過,現(xiàn)在這些工具都只有英文版的,并且需要付費(fèi)使用。當(dāng)然,你仍然能夠使用frontpage 、dreamweaver等工具,不過使用起來不是很方便。隨著xml 的逐漸普及,相信在不久后,也會出現(xiàn)
2、非常好用的創(chuàng)建xml 文件的工具?,F(xiàn)在我們暫且使用“ 記事本 ” 來創(chuàng)建我們的xml 文件吧。先看一個xml 文件:例 1 ?xml version=1.0 encoding=gb2312 ?參考資料書籍名稱 xml 入門精解 /名稱作者張三 /作者價(jià)格貨幣單位 =人民幣 20.00 /價(jià)格/書籍書籍名稱 xml 語法 /名稱!-此書即將出版 -作者李四 /作者價(jià)格貨幣單位 =人民幣 18.00 /價(jià)格/書籍/參考資料這是一個典型的xml 文件,編輯好后保存為一個以.xml 為后綴的文件。 我們可以將此文件分為文件序言(prolog )和文件主體兩個大的部分。在此文件中的第一行即是文件序言。該
3、行是一個xml 文件必須要聲明的東西,而且也必須位于xml 文件的第一行,它主要是告訴xml 解析器如何工作。其中,version是標(biāo)明此 xml 文件所用的標(biāo)準(zhǔn)的版本號,必須要有;encoding指明了此 xml 文件中所使用的字符類型,可以省略,在你省略此聲明的時(shí)候,后面的字符碼必須是unicode 字符碼(建議不要省略)。因?yàn)槲覀冊谶@個例子中使用的是gb2312 字符碼,所以encoding這個聲明也不能省略。在文件序言部分還有一些聲明語句,我們在后面給予介紹。文件的其余部分都是屬于文件主體,xml 文件的內(nèi)容信息存放在此。我們可以看到,文件主體是由開始的參考資料和結(jié)束的/參考資料控制標(biāo)
4、記組成,這個稱為xml 文件的 “ 根元素 ” ;書籍是作為直屬于根元素下的“ 子元素 ” ;在書籍下又有名稱、作者、價(jià)格這些子元素。貨幣單位是價(jià)格元素中的一個“ 屬性 ” ,“ 人民幣 ” 則是 “ 屬性值 ” 。!-此書即將出版 -這一句同html 一樣,是注釋,在xml 文件里,注釋部分是放在“ !-” 與“ -”標(biāo)記之間的部分。大家可以看到, xml 文件是相當(dāng)簡單的。同 html 一樣, xml 文件也是由一系列的標(biāo)記組成,不過,xml 文件中的標(biāo)記是我們自定義的標(biāo)記,具有明確的含義,我們可以對標(biāo)記中的內(nèi)容的含義作出說明。對 xml 文件有了初步的印象之后,我們就來詳細(xì)地談一談xml
5、 文件的語法。在講語法之前,我們必須要了解一個重要的概念,就是xml 解析器( xml parse )。1.xml 解析器解析器的主要功能就是檢查xml 文件是否有結(jié)構(gòu)上的錯誤,剝離xml 文件中的標(biāo)記,讀出正確的內(nèi)容,以交給下一步的應(yīng)用程序處理。xml 是一種用來結(jié)構(gòu)化文件信息的標(biāo)記語言,xml 規(guī)范中對于如何標(biāo)記文件的結(jié)構(gòu)性有一個詳細(xì)的法則,解析器就是根據(jù)這些法則寫出來的軟件(多用java 寫成)。同 html一樣,在瀏覽器中,必須有html 的解析器,這樣瀏覽器才能夠“ 讀懂 ” 各種用 html 標(biāo)記所組成的網(wǎng)頁,將它們顯示在我們面前。如果有瀏覽器的html 解析器讀不懂的標(biāo)記,將會返
6、回給我們錯誤信息。由于現(xiàn)在的html 標(biāo)記實(shí)際上相當(dāng)混亂,存在大量不規(guī)范的標(biāo)記(有的網(wǎng)頁用ie 能正常顯示,而用netscape navigator則不行),所以從一開始,xml 的設(shè)計(jì)者就嚴(yán)格規(guī)定了xml 的語法和結(jié)構(gòu),我們編寫的 xml 文件必須遵循這些規(guī)定,否則xml 解析器將毫不留情地給你顯示錯誤信息。有兩種 xml 文件,一種是well-formed xml文件,一種是validating xml文件。如果一個 xml 文件滿足 xml 規(guī)范中的某些相關(guān)法則,且沒有使用dtd (文件格式定義 后詳述)時(shí),可稱這份文件是well-formed。而如果一個xml 文件是 well-for
7、med ,且正確地使用了dtd ,dtd中的語法又是正確的,那么這個文件就是validating 。對應(yīng)兩種xml 文件,有兩種xml 解析器,一種是well-formed 解析器,一種是validating 解析器。 ie 5 中就內(nèi)含 validating解析器, validating 解析器也可用來解析well-formed xml文件。檢查它是否滿足了well-formed的條件。 我們可以將剛才編輯的第一個xml 文件用 ie 5 以上版本的瀏覽器打開。大家可能要問為什么在瀏覽器中的顯示和我的源文件一樣?沒錯,因?yàn)閷τ?xml 文件, 我們黿齬匭乃的內(nèi)容,而它的顯示形式是交給css
8、或 xsl 來完成的。 這里,我們并沒有給這個xml 文件定義它的css或 xsl 文件,所以它按照原來的形式來顯示。實(shí)際上, 對于電子數(shù)據(jù)交換,僅僅需要一個xml 文件即可,如果要將它以某種形式顯示出來,我們就必須編輯css 或 xsl 文件(這個問題會在以后討論)。2.well-formed的 xml 文件我們知道, xml 必須是 well-formed的,才能夠被解析器正確地解析出來,顯示在瀏覽器中。那么什么是 well-formed的 xml 文件呢?主要有下面幾個準(zhǔn)則,我們在創(chuàng)建xml 文件的時(shí)候,必須滿足它們。首先,xml 文件的第一行必須是聲明該文件是xml 文件以及它所使用的
9、xml 規(guī)范版本。 在文件的前面不能夠有其它元素或者注釋。第二,在 xml 文件中有且只能夠有一個根元素。我們的第一個例子中, 參考資料 . /參考資料就是此 xml 文件的根元素。第三,在 xml 文件中的標(biāo)記必須正確地關(guān)閉,也就是說,在xml 文件中,控制標(biāo)記必須有與之對應(yīng)的結(jié)束標(biāo)記。如:名稱標(biāo)記必須有對應(yīng)的/名稱結(jié)束標(biāo)記,不像html ,某些標(biāo)記的結(jié)束標(biāo)記可有可無。如果在xml 文件中遇到自成一個單元的標(biāo)記,就是類似于html 中的 imgsrc=. 的這些沒有結(jié)束標(biāo)記的時(shí)候,xml 把它稱為 “ 空元素 ” ,必須用這樣的寫法:空元素名/,如果元素中含有屬性時(shí)寫法則為:空元素名屬性名=
10、“ 屬性值 ”/。第四,標(biāo)記之間不得交叉。在以前的html 文件中,可以這樣寫:b hxxxxxxx /b /h,b和 h 標(biāo)記之間有相互重疊的區(qū)域,而在 xml 中,是嚴(yán)格禁止這樣標(biāo)記交錯的寫法,標(biāo)記必須以規(guī)則性的次序來出現(xiàn)。第五,屬性值必須要用“ ”號括起來。如第一個例子中的“1.0”、“gb2312” 、“ 人民幣 ” 。都是用 “ ”號括起來了的,不能漏掉。第六,控制標(biāo)記、 指令和屬性名稱等英文要區(qū)分大小寫。與 html 不同的是, 在 html 中,類似b和 b的標(biāo)記含義是一樣的,而在xml 中,類似 name 、 name或 name 這樣的標(biāo)記是不同的第七,我們知道,在html
11、文件中,如果我們要瀏覽器原封不動地將我們所輸入的東西顯示出來,可以將這些東西放到pre /pre或者 xmp /xmp 標(biāo)記中間。這對于我們創(chuàng)建html 教學(xué)的網(wǎng)頁是必不可少的,因?yàn)榫W(wǎng)頁中要顯示html 的源代碼。而在xml 中,要實(shí)現(xiàn)這樣的功能,就必須使用cdata標(biāo)記。在 cdata 標(biāo)記中的信息被解析器原封不動地傳給應(yīng)用程序,并且不解析該段信息中的任何控制標(biāo)記。 cdata 區(qū)域是由:“ !cdata” 為開始標(biāo)記, 以“ ” 為結(jié)束標(biāo)記。例如:例 2 中的源碼,除了 “ !cdata”和“ ” 符號,其余的內(nèi)容解析器將原封不動地交給下游的應(yīng)用程序,即使cdata 區(qū)域中的開始和結(jié)尾的空
12、白以及換行字符等,都同樣會被轉(zhuǎn)交(注意cdata 是大寫的字符)。例 2 !cdata 飛翔的 xml ,:-) oooo 第八, xml 處理空白字符和html 不一樣。 html 標(biāo)準(zhǔn)規(guī)定,不管有多少個空白,都當(dāng)作一個空白來處理;而在 xml 中規(guī)定,所有標(biāo)記以外的空白,解析器都要忠實(shí)地交給下游的應(yīng)用程序處理。這樣,我們有時(shí)必須摒棄編寫html 文件時(shí)的縮排習(xí)慣,因?yàn)榭s排的空格,解析器也要處理。如:作者張三 /作者和作者張三/作者上述內(nèi)容對于解析器來說是不同的(后者在作者/作者標(biāo)記之內(nèi)除了張三這個字符以外,還包括兩個換行記號以及“ 張三” 前的文字縮排符號)。所以解析器在去掉標(biāo)記后將信息傳
13、給應(yīng)用程序?qū)⒂胁煌奶幚斫Y(jié)果。如果我們想明確地告訴xml 程序,標(biāo)記中的空白有明確的含義,不要隨便去掉(如在一些詩中,空格有它具體的意義),則可在標(biāo)記中加入一個xml 內(nèi)置的屬性 xml:space 。如(注意屬性名稱和值的大小寫):詩歌 xml:space=preserver祖國?。∽鎳?!我的祖國!/詩歌另外,在 xml 文件中,如果要用到表1 的特殊字符,必須用相應(yīng)符號代替。表 1 特殊字符替代符號& ' 在此做個小結(jié):符合上述規(guī)定的xml 文件就是 well-formed的 xml 文件。這是編寫xml 文件的最基本要求??梢钥吹絰ml 文件的語法規(guī)定比html
14、 要嚴(yán)格多了。由于有這樣的嚴(yán)格規(guī)定,軟件工程師編寫 xml 的解析器就容易多了,不像編寫html 語言的解析器,必須費(fèi)盡心思去適應(yīng)不同的網(wǎng)頁寫法,提高自己瀏覽器的適應(yīng)能力。實(shí)際上,這對于我們初學(xué)者來說,也是一件好事。該怎樣就怎樣,不必像原來那樣去疑惑各種html 的寫法。我們看到,在xml 文件中,用的大多都是自定義的標(biāo)記。但是大家考慮一下,如果兩個同行業(yè)的公司a 和 b 要用 xml 文件相互交換數(shù)據(jù),a 公司用價(jià)格標(biāo)記來表示他們產(chǎn)品的價(jià)格信息,而b 公司可能用售價(jià)來表示價(jià)格信息。如果一個xml 應(yīng)用程序來讀取他們各自的xml 文件中的信息時(shí),如果它只知道價(jià)格標(biāo)記里表示的是價(jià)格信息,那么b
15、公司的價(jià)格信息就讀不出來,必將產(chǎn)生錯誤。顯然,對于想利用 xml 文件來交換信息的實(shí)體來說,他們之間必須有一個約定 即編寫 xml 文件可以用哪些標(biāo)記,母元素中能夠包括哪些子元素,各個元素出現(xiàn)的順序,元素中的屬性怎樣定義等。這樣他們在用xml 交換數(shù)據(jù)時(shí)才能夠暢通無阻。這種約定稱為dtd (document type definition,文檔格式定義)??梢园裠td看作編寫 xml 文件的模板。對于同行業(yè)之間的xml 數(shù)據(jù)交換,有一個固定的dtd 將會方便很多。比如說, 如果網(wǎng)上的各大電子商場的xml 網(wǎng)頁都遵循同一個dtd 時(shí), 那么我們就可以輕松地依據(jù)這個dtd 編寫一個應(yīng)用程序,去網(wǎng)上
16、將我們感興趣的東西自動抓回來。事實(shí)上已經(jīng)有了好幾個定義好的dtd ,如前面所說的 mathml 、smil 等。如果一個 xml 文件是 well-formed的,并且它是正確的依據(jù)某個dtd 建立的,那么,這個xml 文件就被稱為: validating xml文件。相應(yīng)的解析器就稱為:validating parser。 dtd 實(shí)際上可以看作一個或多個xml 文件的模板,這些xml 文件中的元素、元素的屬性、元素的排列方式 /順序、元素能夠包含的內(nèi)容等,都必須符合dtd 中的定義。 xml 文件中的元素,即我們所創(chuàng)建的標(biāo)記,是根據(jù)我們應(yīng)用的實(shí)際情況來創(chuàng)建的。想要創(chuàng)建一份完整性高、適應(yīng)性廣
17、的dtd 是非常困難的,因?yàn)楦餍懈鳂I(yè)都有他們自己的行業(yè)特點(diǎn),所以dtd 通常是以某種應(yīng)用領(lǐng)域?yàn)槎x的范圍,如:醫(yī)學(xué)、建筑、工商、行政。 dtd 定義的元素含蓋范圍越廣泛,那么就越復(fù)雜。dtd 可以是一個完全獨(dú)立的文件,也可以在xml 文件中直接設(shè)定。 所以,dtd 分為外部 dtd(在 xml文件中調(diào)用另外已經(jīng)編輯好的dtd )和內(nèi)部 dtd(在 xml 文件中直接設(shè)定dtd )兩種。比如,有幾十家相互聯(lián)系的、合作伙伴關(guān)系的公司、廠商,他們相互之間的交換電子文檔都是用xml 文檔。那么我們可以將這些 xml 文檔的 dtd 放在某個地方,讓所有交換的xml 文檔都使用此dtd ,這是最方便的做
18、法,同時(shí)也適用于公司內(nèi)部的xml 文件使用。內(nèi)部 dtd 內(nèi)部 dtd 是在 xml 文件的文件序言區(qū)域中定義的。語法:!doctype element-name. !doctype :表示開始設(shè)定dtd ,注意 docutype是大寫。element-name :指定此 dtd 的根元素的名稱,一個xml 文件只能有一個根元素。注意,如果xml 文件使用了 dtd ,那么文件中的根元素就在這里指定。. :在 標(biāo)記里面定義xml 文件使用元素,然后用結(jié)束dtd 的定義。下面,我們來看一下怎樣給xml 文件定義 dtd ,請見例 1。例 1 中的 dtd 定義區(qū)可以看作是一個dtd 定義的大概框
19、架,為其他xml 文件定義dtd ,結(jié)構(gòu)和例1 的dtd 差不多,只是可能需要添加、刪除或者更改一些東西而已。在dtd 定義的中間是元素設(shè)定,這是一個 dtd 的最主要部分,其主要語法如下:!element element-name element-definition!element :表示開始元素設(shè)置,注意此處element關(guān)鍵字是大寫。element-name:表示要設(shè)置的元素的名稱。element-definition:指明要對此元素進(jìn)行怎樣的定義,就是說元素 ./元素之間能夠包含什么內(nèi)容,是其他元素還是一般性的文字。在例 1 中,大家可以看到,!element 參考資料(書籍 )這個
20、元素設(shè)定是聲明了“ 參考資料 ” 這個元素,并且它是作為 “ 書籍” 這個元素的父元素。 !element 書籍 (名稱 ,作者 ,價(jià)格 )這個元素設(shè)定聲明了“ 書籍 ”這個元素, 并且它是作為 “ 名稱 ” 、 “ 作者 ” 、“ 價(jià)格 ” 這三個元素的父元素。而!element 名稱 (#pcdata) 這個元素設(shè)定聲明了“ 名稱” 這個元素, 但是此元素僅僅包含一般文字,是基本元素, 這是由 #pcdata關(guān)鍵字定義的。在元素設(shè)置中,如果元素包含多個子元素,如:!element 書籍(名稱 ,作者 ,價(jià)格 )這種含多個子元素的聲明,那么 “ 名稱 ” 、“ 作者 ” 、“ 價(jià)格” 這些標(biāo)
21、記在xml 文件中必須以上面排列的順序出現(xiàn),每個標(biāo)記必須而且只能夠出現(xiàn)一次。如果在設(shè)定元素時(shí),按照!element 書籍 any,這樣在元素下就可以包含任意被設(shè)定過的元素,出現(xiàn)的次數(shù)和順序也不受限制,并且在該元素下,除了可以包含子元素以外,還能夠包含一般的文字。有時(shí)候,在xml 文件中,一個標(biāo)記可能多次出現(xiàn)(或者不出現(xiàn)),那么我們除了在它們的父元素中用any 關(guān)鍵字之外, 還可以在元素的旁邊加上特定的符號來控制標(biāo)記出現(xiàn)的次數(shù)。這些符號見表1。表 1 符號代表標(biāo)記出現(xiàn)的次數(shù)?不出現(xiàn)或只出現(xiàn)一次* 不出現(xiàn)或可出現(xiàn)多次+ 必須出現(xiàn)一次以上無符號只能出現(xiàn)一次例如: !element 參考資料 (書籍
22、,報(bào)紙 +,雜志 ?,網(wǎng)站 )這個元素設(shè)定,“ 書籍 ” 標(biāo)記在 xml 文件中可以不出現(xiàn)或者出現(xiàn)多次;“ 報(bào)紙 ” 標(biāo)記必須出現(xiàn)一次以上;“ 雜志 ” 標(biāo)記可以不出現(xiàn)或只出現(xiàn)一次;而“ 網(wǎng)站 ” 標(biāo)記必須出現(xiàn)而且只能出現(xiàn)一次。在一些父元素的聲明中,有可能它包含的子元素是在多個子元素中選擇一個來使用,那么我們聲明此父元素時(shí),就可以把它聲明成選擇性元素,例如:!element 配偶(妻子 |丈夫 )。可供選擇的子元素用“| ”分隔,這樣,我們在xml 文件中可以這樣寫:配偶丈夫張三/丈夫/配偶只從中選擇一個子元素。在我們的 xml 文件中,還可能包括很多“ 空元素 ” ,即:元素是單獨(dú)存在的,
23、沒有 /元素這樣的結(jié)束標(biāo)記。那么在 dtd 中是用 empty 關(guān)鍵字來聲明的。如:!element 元素名empty 。在 xml 文件中,空元素不需要結(jié)束標(biāo)記,但必須以/空元素名這樣的寫法。在 dtd 中,還可以聲明一些稱為entity 的東西,讓dtd 和 xml 文件使用。我們可以把entity 看作是一個常量,它有一定的值。在dtd 中, entity 的聲明語法為:!entity entity-name entity-definition。例如:我們在dtd 中聲明 !entity pc (#pcdata),那么在后面的元素設(shè)定中,就可以使用這個entity 來代替 “(#pcda
24、ta)” 這個字符串,如: !element 作者 (#pcdata) 可以寫成 !element 作者&pc; 。引用 entity 的時(shí)候,必須要在entity 名稱前面加上 “& ” 符號,后面加上“ ;” 符號。在例 1 中, !attlist 價(jià)格貨幣單位cdata #required這一句是設(shè)定元素的屬性,關(guān)于元素屬性設(shè)置的語法為:!attlist element-name attribute-name type default-value。其中, !attlist 是開始屬性的設(shè)定(注意大小寫)。element-name是指明此屬性設(shè)定是針對什么元素的;attri
25、bute-name是設(shè)定的屬性的名稱;type 是該屬性的屬性值的類別,屬性值有多種,可以是一般的文字,或從幾種屬性值中取一種等, 屬性值的種類見表2。default-value是指該屬性的內(nèi)定值種類,有四種不同的屬性內(nèi)定值(見表 3)。下面我們舉幾個例子來看一下幾個常用的元素屬性的設(shè)定。例:!attlist 姓名性別(男|女) 男此元素屬性設(shè)定是為“ 姓名” 這個元素設(shè)定一個名為“ 性別 ” 的屬性,此屬性的屬性值類別是enumerated,取值范圍為 “ 男” 或者 “ 女” (用 “| ”分隔)。如果在xml 文件中沒有為此屬性賦值,那么就取值為“ 男 ” ,因?yàn)閷傩詢?nèi)定值是一個字符串“
26、 男” 。!attlist 姓名號碼id #required該屬性設(shè)定是為 “ 姓名 ” 元素設(shè)定一個名為“ 號碼 ” 的屬性,屬性值類別是id,意味著在xml 文件中為此屬性賦值的時(shí)候,值在此xml 文件中是唯一的,如在同一份xml 文件中出現(xiàn)下面的xml 語句:姓名號碼 =1234567 張三 /姓名姓名號碼 =1234567 李四 /姓名注意: “ 號碼 ” 屬性的值重復(fù)了,這樣,在解析過程中將會出現(xiàn)錯誤信息。此屬性設(shè)定中的屬性內(nèi)定值為#required ,表示這個屬性在xml 文件的姓名標(biāo)記中必須出現(xiàn),否則解析會發(fā)生錯誤。!attlist 電話號碼國家代碼cdata #fix 86該屬
27、性設(shè)定是為 “ 電話號碼 ” 這個元素設(shè)定一個名為“ 國家代碼 ” 的屬性,該屬性的值是一般的文字。在電話號碼標(biāo)記中不能夠設(shè)定該屬性,因?yàn)檫@個屬性被設(shè)為具有固定值的屬性(#fix 關(guān)鍵字),解析器會自動地將該屬性以及值“86”加到電話號碼標(biāo)記中。表 2 屬性值類別描述cdata 屬性值僅僅是一般的文字。enumerated 列出該屬性的取值范圍,一次只能有一個屬性值能夠賦予屬性。nmtoken 表示屬性值只能由字母、數(shù)字、下劃線、. 、:、-這些符號組成。nmtokens 表示屬性值能夠由多個nmtoken組成,每個nmtoken 之間用空格隔開。id 該屬性在 xml 文件中是唯一的,常用來
28、表示人的身份證號碼。idref 表示該屬性值是參考了另一個id 屬性。idrefs 表示該屬性值是參考了多個id 屬性,這些id 屬性的值用空格隔開。entity 表示該屬性的設(shè)定值是一個外部的entity ,如一個圖片文件。entities 該屬性值包含了多個外部entity ,不同的 entity 之間用空格隔開。notation 屬性值是在dtd 中聲明過的notation (聲明用什么應(yīng)用軟件解讀某些二進(jìn)制文件,如圖片)。在 xml 的規(guī)范中,還規(guī)定了兩個內(nèi)定的屬性,即:xml:space和 xml:lang ,內(nèi)定的屬性名稱以xml:開頭,而你自己定義的屬性名不能以xml: 開頭,否
29、則在解析時(shí)會發(fā)生錯誤。我們前面已經(jīng)講過,空白格在xml 文件是有含義的,xml:space屬性就是來設(shè)置解析器將xml 文件中的空白格傳給應(yīng)用程序后的處理方法。xml:space是一個 enumerated類型的屬性,只能夠在default 和preserver之間取值。 xml:space=defaule表示解析器將空白格傳遞給應(yīng)用程序后,由應(yīng)用程序內(nèi)定的方法來處理這些空白格。如果沒有設(shè)定xml:space屬性,則解析器會默認(rèn)用default 來設(shè)定該屬性。xml:space=preserver是表示解析器將空白格傳遞給應(yīng)用程序后,要求應(yīng)用程序保留這些空白格。xml:lang屬性是用來設(shè)置標(biāo)
30、記中的文字信息是使用哪種語言,iso-639 規(guī)定了不同語言的代表縮寫,如:xml:lang=en 表示英文; xml:lang=la 表示拉丁文; xml:lang=zh 表示中文資料;xml:lang=zh-cn 表示中文(簡體);xml:lang=zh-tw 表示中文(繁體)。系統(tǒng)內(nèi)定是xml:lang=en ,即標(biāo)記中間的文字信息都是英文。外部 dtd 外部 dtd 是一個獨(dú)立于xml 文件的文件,實(shí)際上也是一個文本文件,只是使用.dtd 為文件擴(kuò)展名。因?yàn)橥獠?dtd 獨(dú)立于 xml 文件,那么它可以供多個xml 文件使用,就像用同一個模板可以寫出多個不同內(nèi)容的文件一樣,這多個xml
31、 文件因?yàn)槭且猛粋€外部dtd ,所以它們的結(jié)構(gòu)大致相同。外部 dtd 的創(chuàng)建方式、語法和內(nèi)部dtd 是一樣的,把例1 的內(nèi)部 dtd 的例子用外部dtd 來寫,文件如下所示。文件存為后綴名為 .dtd的文件。?xml version=1.0 encoding=gb2312 ?!element 參考資料(書籍 *)!element 書籍(名稱 ,作者 ,價(jià)格 )!element 名稱(#pcdata) !element 作者(#pcdata) !element 價(jià)格(#pcdata) !attlist 價(jià)格貨幣單位cdata #required除了沒有內(nèi)部dtd 中的 !doctype 參考資料. 語句外,其他都一樣。而且有關(guān)元素?cái)?shù)目、排列順序、空元素設(shè)定、選擇性元素、entity 聲明、屬性設(shè)定等都和內(nèi)部dtd 是一樣的。xml 文件使用!doctype element-name system dtd-url 或者 !doctype element-name public dtd-name dtd-url來引用創(chuàng)建好的外部dtd 文件。表 3 屬性內(nèi)定值描述#required 表示在標(biāo)記中必須出現(xiàn)此屬性。#implied 標(biāo)記中可以不出現(xiàn)此屬性。#fix 屬性的值是固定的某個值。字符串標(biāo)記中
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年國際河流航道維護(hù)管理合同
- 2024年鄭州客運(yùn)資格證應(yīng)用能力考試題目
- 2024年展會設(shè)計(jì)與布展合同
- 2024年延安駕??荚嚳瓦\(yùn)從業(yè)資格證考試
- 2024年度養(yǎng)老保險(xiǎn)合同
- 2024年呼和浩特客運(yùn)技能鑒定題庫
- 2024年河源c1客運(yùn)資格證考試項(xiàng)目
- 車展現(xiàn)場展位搭建與撤展服務(wù)協(xié)議
- 2024年江蘇客運(yùn)從業(yè)資格證答題技巧與方法
- 3K-酸和堿作業(yè)分組版(答案解析)
- 2023北京海淀區(qū)八上初二期末數(shù)學(xué)試卷及答案
- 胰腺癌的影像學(xué)表現(xiàn)課件
- 電梯維保報(bào)價(jià)單【模板】
- 2023年四川涼山州木里重點(diǎn)國有林保護(hù)局招聘18人筆試備考試題及答案解析
- 思想意識形態(tài)滲透就在你我身邊
- 2023跨界聯(lián)名營銷趨勢報(bào)告-SocialBeta
- 小學(xué)一年級寫字教案()
- 做好車險(xiǎn)續(xù)保工作探討課件
- 食品營養(yǎng)學(xué)(暨南大學(xué))智慧樹知到答案章節(jié)測試2023年
- 堅(jiān)定理想信念的心得體會
- 國際法學(xué)智慧樹知到答案章節(jié)測試2023年濰坊學(xué)院
評論
0/150
提交評論