我們可以看到,dtd的語法相當複雜,並且它不符合xml檔案的標準,自成乙個體系。也就是說dtd文件本身並不是乙個良好形式的xml文件,上面的關於dtd的介紹也僅僅是作了乙個簡介,目的是幫助大家能讀懂dtd檔案以及在必要時建立簡單的dtd檔案,因為現在很多的xml應用是建立在dtd之上的。 另外乙個代替dtd的就是w3c定義的schema,schema從字面意義上來說,可以翻譯成模式、大綱、計畫、規劃等等。它的基本意思就是說為xml文件制定一種模式。
schema相對於dtd的明顯好處是xml schema文件本身也是xml文件,而不是像dtd一樣使用自成一體的語法。這就方便了使用者和開發者,因為可以使用相同的工具來處理xml schema和其他xml資訊,而不必專門為schema使用特殊工具。schema簡單易懂,懂得xml語法、規則的人都可以立刻理解它。schema的概念提出已久,但w3c的標準最近才出來,相應的應用支援尚未完善,但採用schema已成為xml發展的乙個趨勢。
首先我們還是從最簡單的例子著手來學習schema的語法結構:
比如乙個簡單的xml文件如下:
《書本》
《名稱》天涯明月刀
《作者》古龍
如果用dtd的形式來定義該xml文件結構的話,可以如下所示:
<!element 書本 (名稱, 作者)>
<!element 名稱 (#pcdata)>
<!element 作者 (#pcdata)>
那麼用schema形式如何定義呢?見下面的**:
<element name='書本' type='書本型別'/>
<complextype name='書本型別'>
<element name='名稱' type='string'/>
<element name='作者' type='string'/>
</complextype>
可以注意的一點是,在schema中,也是通過對元素的定義和元素關係的定義來實現對整個文件性質和內容的定義。同時需要注意的是,在schema中,元素是通過它的名字和內容模型來確定,名稱就是該元素的名字,這個大家都可以理解,而內容模型實際上就是表示元素的型別。就象在c++中,我們可以隨便定義乙個變數,但是必須定義變數的型別,變數的型別就可能有多種形式,它可以是乙個簡單的變數(如c++內部指定的型別,bool,int,double,char等等),也可以是很複雜的型別(比如是乙個struct或者是class),在schema中也是一樣,型別(type)可以分為兩種形式,一種是非常簡單的型別,被稱為******,一種是複雜的型別,被稱為complex。簡單型別不能包含元素和屬性(注意在schema中和dtd中一樣,都有元素屬性的說法,大道相同)。而複雜型別不僅可以包含屬性,而且可以在其中巢狀其他的元素,或者可以和其他元素中的屬性相關聯。
乙個簡單的XML Schema的例子
我們可以看到,dtd的語法相當複雜,並且它不符合 xml檔案的標準,自成乙個體系。也就是說dtd文件本身並不是乙個良好形式的 xml文件,上面的關於dtd的介紹也僅僅是作了乙個簡介,目的是幫助大家能讀懂dtd檔案以及在必要時建立簡單的dtd檔案,因為現在很多的 xml應用是建立在dtd之上的。另外乙...
乙個簡單的XML Schema的例子
dtd的語法相當複雜,並且它不符合xml檔案的標準,自成乙個體系。也就是說dtd文件本身並不是乙個良好形式的xml文件,上面的關於dtd的介紹也僅僅是作了乙個簡介,目的是幫助大家能讀懂dtd檔案以及在必要時建立簡單的dtd檔案,因為現在很多的xml應用是建立在dtd之上的。另外乙個代替dtd的就是w...
乙個簡單的XML Schema的例子
我們可以看到,dtd的語法相當複雜,並且它不符合xml檔案的標準,自成乙個體系。也就是說dtd文件本身並不是乙個良好形式的xml文件,上面的關於dtd的介紹也僅僅是作了乙個簡介,目的是幫助大家能讀懂dtd檔案以及在必要時建立簡單的dtd檔案,因為現在很多的xml應用是建立在dtd之上的。另外乙個代替...