910 likes | 1.04k Views
數位圖書館 – XML/DTD 理論與實務. Jian-hua Yeh ( 葉建華 ) 真理大學資訊科學系助理教授 au4290@email.au.edu.tw. Course Outline. 標示 (Markup) 的基本概念 SGML 介紹 XML 介紹 XML 相關標準 XML 的應用 DTD 介紹 DTD 的應用. 顧名思義. SGML – Standard Generalized Markup Language ( 標準通用標示語言 ) XML – Extensible Markup Language (可延伸 標示語言 )
E N D
數位圖書館 –XML/DTD理論與實務 Jian-hua Yeh (葉建華) 真理大學資訊科學系助理教授 au4290@email.au.edu.tw
Course Outline • 標示(Markup)的基本概念 • SGML介紹 • XML介紹 • XML相關標準 • XML的應用 • DTD介紹 • DTD的應用
顧名思義 • SGML – Standard Generalized Markup Language (標準通用標示語言) • XML – Extensible Markup Language (可延伸標示語言) • HTML – HyperText Markup Language (超文件標示語言)
標示(Markup) 的基本觀念 • 藉著標示傳達某些關於被標示文字的資訊 • 標示的種類 • 程序性標示 (Procedural Markup) : • 針對文件的呈現外觀進行標示 • 例如:Microsoft Word、PDF • 描述性標示 (Descriptive Markup) : • 針對文件的內容和語義結構進行標示 • 例如:SGML、XML
針對文件的呈現外觀進行標示 所見即所得 (What You See Is What You Get) 文件的呈現樣式與內容儲存在同一份檔案 方便個人使用 通常使用專屬的控制碼(ex. binary code),無法跨系統、跨平台 程序性標示 (Procedural Markup)
針對文件的內容和語義結構進行標示 文件的內容與呈現樣式分開 呈現時須結合樣式表(stylesheet) 使用ASCII code,可以跨系統、跨平台 利於大量文件的長期保存、交換與再利用 描述性標示 (Descriptive Markup)
描述性標示文件與樣式表分開 • 一份描述性標示文件可以使用不同的樣式表→ 提高描述性標示文件的再利用性 • 多份描述性標示文件可以使用同一份樣式表→視覺設計維護更為容易
XML的發展背景 • HTML的許多特性已經限制了Web的發展。XML的發展成員大都對SGML及結構化的資訊(structured information)有相當豐富的應用經驗,他們相信引進SGML技術,能夠彌補HTML的不足。 • XML─取SGML之長,補HTML之短。
HTML的限制 • HTML大部分的標籤是用來控制線上顯示,無法描述較複雜的文件結構。 • HTML的標籤集是固定的,使用者不能自行定義標籤。 • HTML文件無法支援較精確的查詢。 • 資料庫中的資訊轉成 HTML 後,常會造成資訊遺失。 • 不同廠商所發展的 HTML Extension 不相容。
SGML(Standard Generalized Markup Language) • 1986年 ISO 所制定的標準-ISO 8879 • 主要是為了文件交換與電子出版的使用而設計,用來描述文件結構,使得電子文件能在不同軟體系統間交換與傳輸。 • 是一套訂定標示語言的元語言(meta-language),使用者可根據需求自行定義標籤,再以這些標籤來描述文件結構。
SGML的優點 • 有彈性 (flexibility) : • 能描述任何的資訊結構與任何複雜的文件。 • 非專屬性 (non-proprietary)、平台獨立性(platform-independence) 與系統獨立性 (system-independence) : • 利於文件的交換與長期保存。 • 資訊再利用性 (re-usability)
SGML的缺點 • SGML標準規格過於複雜。 • SGML開發相關應用軟體的成本相當高。 • SGML文件不易在Web上傳佈。
XML(Extensible Markup Language) • W3C在1996年底提出的標準。 • 從SGML衍生出來的簡化格式,也是一種元語言(meta-language) • 1998/2,XML1.0 Recommendation • 已獲得各界的支持,其中包括了Sun Microsystems, Microsoft, Netscape, Adobe, ArborText,...等軟體大廠的背書
XML的設計目標 • XML能直接在Internet上使用: • XML能與SGML相容: • 處理XML文件的程式能很容易被開發: • XML的選項功能盡量保持最少,最好是零: • 語法省略對於XML標示來說並不重要: • …..
XML文件實例 以下是XML文件片段: <customer-details id="AcPharm39156"> <name>Acme Pharmaceuticals Co.</name> <address country="US"> <street>7301 Smokey Boulevard</street> <city>Smallville</city> <state>Indiana</state> <postal>94571</postal> </address> </customer-details>
SGML、HTML、XML的關係 • SGML(1986) • HTML─SGML的兒子(1996, HTML 3.2) • XML─SGML的弟弟(1998, XML 1.0) • XML─比 HTML 晚出生的叔叔 • XML是SGML的簡化,而非HTML的延伸
XML與SGML之比較─相同點 • 都是一種 Meta-Language,可以支援各種不同的應用。 • 都具備可擴展性 (extensibility)、結構性(structure) 與可確認性(validation)等優點,能夠描述各種複雜的文件結構,並可藉由DTD來確保文件結構的完整性與正確性。 • 都須結合樣式表來設定文件內容的呈現格式。 • 都具備跨平台、可長期保存、可再利用、能被人直接閱讀等特性。
XML與SGML之比較─相異點 • 對SGML文件而言,DTD是必備的;而對於XML文件而言,DTD不是必備的。 • SGML的使用者可以使用包含 (Inclusion)與除外(Exclusion) 這兩種語法規則來指定內容模式(content model) 的例外處理(Exceptions);XML則不支援例外處理。 • XML不支援AND(&)內容模式、SDATA內部實體(internal entities)…等語法。
XML文件 • Well-formed XML文件 • 沒有參引DTD • Valid XML文件 • 參引DTD • 所有的XML文件都須符合Well-formed XML 規則
Well-formed XML 規則 • 包含一個以上的元素。 • 恰有一個根元素。 • 不能省略起始標籤或結尾標籤。(如<p>…..</p>) • 所有的 標籤必須呈現適當的巢狀 (nest) 結構。 ( 如 <B><I>bold and italic</B>italic</I> 是不允許的 ) • 空標籤必須遵守特殊的XML語法。 ( 如 <img src=“…”/> ) • 所有的屬性值必須括上單引號或雙引號。 ( 如 <font size=“2”> )
寫一份Well-Formed XML文件 • 步驟1 : 撰寫 XML宣告 • 步驟2 : 撰寫根元素 • 步驟3 : 撰寫其他XML標籤與內容 • 步驟4 : 剖析(parsing) XML文件
步驟1:撰寫 XML宣告 • <?xml version=”1.0”?> • <?xml version=”1.0” encoding=”UTF-8” ?> • <?xml version=”1.0” encoding=”big5” ?>
步驟2:撰寫根元素 <?xml version=”1.0” encoding=“big5” ?> <record-list> …… </record-list>
步驟3:撰寫其他XML標籤與內容 <?xml version="1.0" encoding="big5"?> <record-list> …. <record> <seq>1</seq> <title>XML及RDF技術介紹</title> <creator>梁高榮</creator> <journal>機械工業</journal> <vol>220</vol> <date>90.07</date> ….. <url>http://www2.read.com.tw/…..</url> ….. </record> ….. </record-list>
一份正確的Well-formed XML文件在Microsoft Internet Explorer 6.0 的瀏覽結果
一份有語法錯誤的XML文件在Microsoft Internet Explorer 6.0 的瀏覽結果
XML的樣式表(Style Sheet) • XSL (Extensible Stylesheet Language) • W3C Recommendation, 2001/10/15 • CSS (Cascading Style Sheet) • W3C Recommendation
CSS(Cascading Style Sheet) • 較XSL簡單 • 已是W3C的正式標準 • 主流瀏覽器已支援
如何使用CSS樣式表 • 在XML中呼叫CSS樣式表 <?xml version=“1.0” standalone=“no” ?> <?xml-stylesheet href=“*.css” type=“text/css” ?> • 呼叫的樣式表不存在或為空檔案,則使用內定值 • 最後的顯示方式=繼承的顯示方式+自訂的顯示方式 • 不可以使用中文標籤 • 屬性與屬性值大小寫相同
CSS的屬性與屬性值 • 與文字相關的屬性 • 字型設定、文字大小、文字粗細、文字樣式、文字位置、線段設定、文字縮排、文字大小寫設定 • 與方框有關的屬性 • 方框設定、框線顏色、框線形式、框線寬度 • 與版面有關的屬性 • 背景顏色、顯示方式、位置、寬度、與邊緣距離
XSL 樣式表 • XSL文件是well-formed XML文件 • XSL包含大多數的CSS 功能 • XSL包含兩個部分: • 一個可以轉換 XML 文件的語言: • XSLT(XSL Transformations) 1.0 • W3C Recommendation ; 1999/11/16 • 一組排版指令 (formatting object) 的 XML 標示: • XSL 1.0 • W3C Recommendation; 2001/10/15
XSLT 的應用 • XML XML • 可以用來做不同 Metadata 交換資訊時的轉換 • XML HTML (XHTML) • 轉換後的 HTML 必須是 well-formed • XSL XSL
XSLT 的網路應用 • 在 Server 端做轉換: • Real-time 轉換: Server Load 較重 • Batch 轉換:Server Load 較輕 • 在 Client 端做轉換: • Browser 對 XSLT 的支援可能不完整 !? • 接到 http request,根據 browser type,再決定是要由Server 端做轉換,或是由Client 端做轉換。
XSL處理器的工作原理 • 解讀XML文件樹狀結構(source tree),並產生暫時性的樹狀結構(result tree) • 對結果樹文件做排版,產生可由瀏覽器顯示的文件
如何使用XSL樣式表 • 在XML中呼叫XSL樣式表 <?xml version=“1.0” standalone=“no” ?> <?xml-stylesheet href=“*.xsl” type=“text/xsl” ?> • 呼叫的樣式表不存在,會出現錯誤訊息 • 可以使用中文標籤 • 屬性與屬性值大小寫不同
XSL元素 • 與樣本有關的元素 • 與資料有關的元素 • 條件式控制元素 • 其他元素
與樣本有關的XSL元素 • xsl:stylesheet • xsl:template • match屬性 • xsl:value-of • select 屬性 • xsl:for-each • select 屬性 • xsl:apply-templates
與資料有關的XSL元素 • xsl:comment • xsl:copy • xsl:attribute • xsl:element
XSL的條件式控制元素 • xsl:if • xsl:choose • xsl:when • xsl:otherwise
連結XSL樣式表的XML文件 <?xml version="1.0" encoding="big5"?> <?xml-stylesheet href="ncl_journal_search_2.xsl" type="text/xsl" ?> <record-list> …. <record> <seq>1</seq> <title>XML及RDF技術介紹</title> <creator>梁高榮</creator> <journal>機械工業</journal> ….. </record> ….. </record-list>
XML相關標準制定現況 • XML 1.0 : • W3C Recommendation 10-Feb-1998 • Namespaces in XML: • W3C Recommendation 14-Jan-1999 • XSLT : • W3C Recommendation 16-Nov-1999 • XML Schema : • W3C Recommendation 2-May-2001 • XHTML 1.1 : • W3C Recommendation 31-May-2001 • XLink : • W3C Recommendation 27-June-2001 • XSL : • W3C Recommendation 15-Oct-2001
XHTML與HTML的不同(1/6) • 文件必須是well-formed • Example: • CORRECT: nested elements <p>here is an emphasized <em>paragraph</em>.</p> • INCORRECT: overlapping elements <p>here is an emphasized <em>paragraph.</p></em>
XHTML與HTML的不同(2/6) • 元素與屬性名稱是小寫 • Example: • CORRECT: <li>…. • INCORRECT: <LI>….
XHTML與HTML的不同(3/6) • 除了空元素外,都必須有結尾標籤。 • Example: • CORRECT: terminated elements <p>here is a paragraph.</p> <p>here is another paragraph.</p> • INCORRECT: unterminated elements <p>here is a paragraph. <p>here is another paragraph.
XHTML與HTML的不同(4/6) • 所有屬性值都必須加引號 • Example: • CORRECT: quoted attribute values <table rows="3"> • INCORRECT: unquoted attribute values <table rows=3>