资料夹下的档案为这次作业的简单范例用以显示的网页(h_第1页
资料夹下的档案为这次作业的简单范例用以显示的网页(h_第2页
资料夹下的档案为这次作业的简单范例用以显示的网页(h_第3页
资料夹下的档案为这次作业的简单范例用以显示的网页(h_第4页
资料夹下的档案为这次作业的简单范例用以显示的网页(h_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、前言:看起來都相同,用以比較。l html.html:純使用HTML寫成ll xmltest.xml:XML範例資料l xmltest.dtd:XML範例DTDl sgmltest.sgml:SGML之範例。由於我找不到一個適當的軟體來測試這份文件,因此它完全是以我對SGML理解下的產物,即使不能保證完全正確,但應已足夠用作範例。HTML與XML:(由於使用了IE才能看的tag,請用IE開啟)開啟後,應該如下:外表上並無差異,但原始碼卻相差甚遠。以下僅列出table部分之原始碼:html.html:<table border="1"><tr><

2、th>類別</th><th>中文名稱</th><th>英文名稱</th></tr><tr><td>學校</td><td>國立交通大學</td><td>NCTU</td></tr><tr><td>組織</td><td>國際自由軟體協會</td><td>GNU</td></tr><tr><td>公司</

3、td><td>微軟</td><td>Microsoft</td></tr></table>xmltest.html:<xml id="xmlex" src="xmlex.xml"></xml><table border="1" datasrc="#xmlex"><thead><th>類別</th><th>中文名稱</th><th>英

4、文名稱</th></thead><td><span datafld="category"></span></td><td><span datafld="chinese_name"></span></td><td><span datafld="english_name"></span></td></tr></table>在xmltest.html這

5、個例子中,所有資料都裝載於xmltest.xml中:<?xml version="1.0" encoding="utf-8"?><!DOCTYPE example_data SYSTEM "xmltest.dtd"><example_data> <data> <category>學校</category> <chinese_name>國立交通大學</chinese_name> <english_name>NCTU</eng

6、lish_name> </data> <data> <category>組織</category> <chinese_name>國際自由軟體協會</chinese_name> <english_name>GNU</english_name> </data> <data> <category>公司</category> <chinese_name>微軟</chinese_name> <english_name>M

7、icrosoft</english_name> </data></example_data>Point 1:取向不同透過這個簡單的例子,便能看出兩者的決定性差異:HTML重點在於描述文件的外貌,而XML則著重於描述文件的內容。Point 2:內容與外觀耦合度由於XML本身僅描述文件的內容,各個元素並未有明確定義,因此XML文件並沒有一定的顯示方式(硬要說一個公定的方法的話,請直接用IE開啟之,目前常見的瀏覽器通常會用一樣的方法顯示)。在這裡,我使用了簡單的HTML來顯示XML文件;由於文件內容與文件外觀已完全分離了,我也可以選擇Javascript、XSL等

8、不同的方式呈現,當資料需要更新,直接更新或替換資料便可(例如直接替換掉本例中的xmltest.xml);相對地,HTML已將文件內容與外觀綁死在一起,無法做到上述的事情。Point 3:文件內容的結構化XML的文件必定是單一樹狀結構的,而HTML文件則完全沒有結構,與純文字文件無異。因此XML文件可以做到語意搜尋或依照不同資料需要排序等功能,例如本例的xmltest.xml可針對category屬性進行資料抽取等。Point 4:ValidationXML文件擁有一套validation的機制:DTD(Document Type Definition),只要符合其規範、能夠通過Validati

9、on,各地的使用者便能確保其文件的正確性。本例中我也寫了一個簡單的DTD(xmltest.dtd)來規範資料格式:<!ELEMENT example_data (data+)><!ELEMENT data (category,chinese_name,english_name)><!ELEMENT category (#PCDATA)><!ELEMENT chinese_name (#PCDATA)><!ELEMENT english_name (#PCDATA)>HTML由於與一般文字文件無異,無法擁有這樣的機制。Point 5:可

10、擴充性XML是一種meta language,用以描述文件的內容,因此它除了<? xml ?>、<!DOCTYPE等共有宣告外,並沒有標準tag這種東西。相對地,標準HTML所有tag都是預先定義的。Point 6:文法嚴謹性這點我並未在範例中呈現。HTML草創初期,由於群雄割據,標準未明,各家瀏覽器紛紛加入自己的獨門絕招:自家的tag、自家的顯示方式、最嚴重的莫過於自家的防呆機制:網頁設計者少了closing tag,什麼地方打錯了,諸如這些應列為錯誤的東西,瀏覽器卻幾乎通吃,用自己的一套方法幫網頁設計者打圓場,於是HTML便不知不覺中擁有了惡名昭彰的自由度,造成不少混亂。

11、XML的標準中明定:XML文件之文法必須符合規則,否則該處理該份文件的XML application必須強制中止。XML與SGML:XML實際上是SGML的一個subset,因此上述比較亦適用於HTML與SGML之差異,不多贅述。SGML範例為資料夾下的sgmlex.sgml,為了閱讀方便起見,我把DTD與本文皆寫在同一份檔案中。以下比較皆於必要時取出片段sgmlex.sgml本文檔作參照之用,若需要閱覽完整的檔案,請以notepad之類軟體開啟。Point 1:Minimization rulesXML定義中寫道:每個tag皆必須有一對start tag與end tag。但在SGML中卻不是

12、這麼回事,只要不造成混淆,兩者都可以是optional的。例如: <data> <category>公司 <chinese_name>微軟 <english_name>Microsoft </data>這可以在SGML DTD中加以定義:<!ELEMENT data - (category,chinese_name,english_name)><!ELEMENT category -O (#PCDATA)><!ELEMENT chinese_name -O (#PCDATA)-(note)><

13、!ELEMENT english_name -O (#PCDATA)>-表示必須,O則為非必需。Point 2:結構自由度XML文件必須有單一root node,且結構必須是單一的樹狀結構。但SGML中允許一份文件有多種同步結構(concurrent structure),例如sgmlex.xml中就有structure1與structure2兩種結構,方法是在parent node上加入(structure)前綴,如<(structure2)entry>與<(structure1)data>,child node則不須再強調。這也可以使用多組DTD來加以規範:&

14、lt;!DOCTYPE structure1 <!ELEMENT structure1 - (data)+(note)><!ELEMENT data - (category,chinese_name,english_name)><!ELEMENT category -O (#PCDATA)><!ELEMENT chinese_name -O (#PCDATA)-(note)><!ELEMENT english_name -O (#PCDATA)><!ELEMENT note - (#PCDATA)>><!DOC

15、TYPE structure2 <!ELEMENT structure2 - (entry)+><!ELEMENT entry - (#PCDATA)>>structure1之結構雷同於xmltest.dtd(除了<note>,容後解釋),而structure2則純粹把每份資料當作一筆entry,而非如structure1般細分為category,Chinese_name,English_name等。Point 3:Exception ListXML定義中寫道:每個元素都必須properly nested。也就是說,每個元素在文件中都會有其固定層級。但

16、SGML中允許一些特別定義的元素能任意出現在任何位置或禁止出現,例如sgmlex.sgml中的<note>:<(structure2)structure1> <note>範例資料</note> <(structure2)entry> <(structure1)data> <category>學校</category> <chinese_name>國立交通大學 <english_name>NCTU <note>這可是所好學校!</note> </(

17、structure1)data> </(structure2)entry> <(structure2)entry> <(structure1)data> <note>不是黑幫組織</note> <category>組織這個範例中,<note>出現在<structure1>、<English_name>與<data>三種不同的層級中。在DTD中,一個可出現在某層級以下任意位置的元素表示為<!ELEMENT name +(exception name)>也就是名

18、稱前加上”+”,例如:<!ELEMENT structure1 - (data)+(note)>所以<note>可以出現在structure1以下層級的任何位置。若加上的是”-“,則代表禁止其出現,如:<!ELEMENT chinese_name -O (#PCDATA)-(note)>故在此例中,<note>不能出現在<Chinese_name>層級。Point 4:文件內容的控制關於此項我並未在範例中呈現。造成這種現象的主要原因在於marked section能力的差異。XML所支援的marked section種類並不多,似乎只有CDATA(被MARK為CDATA的區域將不被Parser處理,直接展開。)在SGML中還有l INCLUDE:此區域將被包含入文件l IGNORE:此區域將被忽略l TEMP:此區域只是暫時性的內容,未來可視情況需要增刪藉此,SGML文件甚至可以做到”在A區顯示這部份,在其他地區則拿掉”這類內容控制。例如:<!ENTITY % A “INCLUDE”>&

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论