Spring08

DTD上課筆記

DTD定義樣版
英文全名 Document type definition :定義xml文件結構

markup
<img src = "img.gif"></img>或
<img src = "img.gif"/>

element
定義結構

Attributes
Describe elements 表示element的屬性
eg: <car door = "4"/>

Processing instruction (PI)
將文件丟到另外一個應用程式處理

CDATA Sections
可有文字.保留字.空白
XML Parser會略過不看
開始<![CDATA[
結束]]>

XML namespace
  Naming collisions
      <subject>Math</subject>
      <subject>Thrombosis</subject>
  Namespace
      <school:subject>Math</school:subject>
      <medical:subject>Thrombosis</medical:subject>

DTD

DTD(Document Type Definition)。中文的字面意義為「文件格式定義」。其作用在於定義和規範特定XML文件的內容架構。它通常是一個含有某一種特定格式正式定義的檔案文件。換句話說,透過DTD檔案的描述,XML文件檔案的格式結構就可以成形了。以商業交易為例,在交易的流程中常會需要用到訂單、訂單變更要求、未結案訂單報告、發貨單、收貨驗收單、請款對帳單、付款明細表等商業表單,為降低交易雙方的商業糾紛並提高交易的準確性和使用效率。這些表單的內容和結構必須一致且嚴僅。在XML的領域中,DTD的作用便是在定義XML表單應如何撰寫安排,它就類似於文章的寫作文法和語意表達方式。

參考網站:XML台灣資訊網

[XML] DOM心得

DOM主要可以把XML檔案import進一些高階語言(例如JAVA、VB等等)

以JAVA為例,裡面有提供一些內建的DOM AIP來讓使用者讀寫XML檔案。

XML資料主要以樹狀來存放,所以有些tree的概念 在這邊也用得到,有Node、Child、Parent等。 

 

課本以行事曆做為JAVA應用的範例,有些常用的語法

例如

element.childNodes 這是讀取element裡面所有的child並且存成陣列,配合.item(n)的指令

可以讀取第n位的資料。

node.nextSibling() 可以讀取該node的下一個兄弟姊妹節點(也就是parent的其他child)。

 

這一章有一個作業,裡面一個指令無法使用,後來在作者的網頁有找到更正方法

((XmlDocument)document).write(new FileOutputStream("myDocument.xml"));

執行到這個指令的時候,會跑出Exception 並指出document無法轉換成XmlDocument的資料類型,後來在作者網站上找到新的指令才解決問題。

 

[NOTE]DTD

Document Type Declaration(DTD)可分為External Internal and both ExternalInternal,利用 <!DOCTYPE…….. >包起來
External subsets
Declarations outside document exist other file.
    
Ex: <!DOCTYPE  myElement SYSTEM “myDTD.dtd”>
          Or
          <!DOCTYPE  html PUBLIC “-//w3c//DTD HTML 4.01//EN”
          ”http://www.w3.org/TR/html4/strict.dtd”>
Internal subsets
Declarations  inside document
    Ex: <!DOCTYPE  myElement [
             <!ELEMET myMessage (#PCDATA)>
 
        ]> 
both External and Internal
    Ex: <!DOCTYPE  myElement SYSTEM “myDTD.dtd”
            <!ELEMET myMessage (#PCDATA)>
          >

DTD課文小整理

DTD<Document Type Definition>定義了XML的文件結構D

TDS常會提出建議來確定文件的一性,特別是在常有XML文件符合的B2B<Business-to-bussiness

而DTD使用BENQF(Extended Backus-Nur Form)法規則說明XML文件結構和定義。

XML驗證器的免費網址取得處

:msdi.microsoft.com/downloads/samples/Internet/xml/xml_validator/sample.asp


DTD是藉著文件類型宣告,此宣告通常放置於XML文件的prolog中(PS:它是以<!DOCTYPE and

ends with>開始)

文件類型宣告可以指向XML的內部次集和外部次集 

 XML文件中最基本的建構區塊就是element(PS:他在DTD中是以ELEMENTS)


ELEMENT後面出現的元素我們通常稱為generic identifer


DTD的屬性宣告 指名原素表藉著使用ATTLIST屬性表宣告(!!一個原素可以有任意數目的屬性)


屬性預設值(#REQUIRED #IMPLIED #FIXED)


#IMPLIED--->屬性沒有在原素中出現,則用XML文件的方法不論所選值為何都可以使用


#REQUIRED--->屬性必須出現在原素中,否則XML文件無法驗證


#FIXED--->屬性值是固定且不能和XML文件值不同


屬性類型(strings(CDATA),tokenized or enumerated)


CDATA--->不能附加任何限制在屬性值上


tokenized---> 附加限制在屬性值上


enumerated--->只可以有列在屬性值上的值,標準最為嚴苛

 

 

出處:how to program

[NOTE]DTD

DTD是XML文件的文檔類型聲明(document type declaration)

DTD是XML文件的驗證機制,屬於XML文件組成的一部份DTD是XML文件的驗證機制,屬於XML文件組成的一部份,而DTD在XML文件所扮演的角色就是定義XML文件的元素架構,元素標籤與屬性等等。

DTD含有4個組成:元素(Elements)、屬性(Attribute)實體(Entities)注釋(Comments),其中實體又分為內部實體(Internal Entity) ,是實體參考直屬於一個字串的文字內容,還有外部實體(External Entity) ,定義一些插入的外部檔案。DTD雖然可以定義 XML 標籤和架構, 不過使用不同的語法,而且缺乏擴充性,近來已漸被XML Schema所取代。

 

參考資料:Wiki http://zh.wikipedia.org/w/index.php?title=DTD&variant=zh-tw

DTD及心得

DTD定義XML文件中的元素、元素的屬性、元素的排列方式、元素包含的內容。

元素.屬性.實體.注釋

這部份的東西跟schema有點像

都是一些宣告的東西 

 

NOTE DTDs

DTDs全名為Document Type Definitions

DTDs是一種定義XML文件結構(structure)、,元素標籤與屬性的語法等等........

所以DTDs是XML文件的驗證機制,屬於XML文件組成的一部份

DTD需要用到相對應的parser才能看此XML文件中的DTDs語法法使用是否正確

可是DTDs是使用不同的語法, 而且缺乏擴充性,這是它缺點 ,也是它讓我覺得比較不優於XML Schema 的地方

DTDs的構程如下

1.Element
2.Attritube
3.Entities
4.Comments
 

[NOTE]DTD

DTD(Document Type Definition)
是XML文件的驗證機制,屬於XML文件組成的一部份,DTD在XML文件所扮演的角色就是定義XML文件的元素架構﹑元素標籤與屬性。

DTD元素(Element)
是宣告XML元素的語法,包含元素標籤﹑內含的子元素和元素內容資料,同時也宣告XML文件的元素架構。
元素語法:
<!ELEMENT element_name(element_or_data)>

例:

1. <!ELEMENT authorlist(author+)>

2. <!ELEMENT book(code, title, authorlist, price)> <--注意出現的順序

 

如果相同的子元素能夠重複出現,需進一步的使用符號宣告個子元素出現的次數,如下表範例及說明所示 :

符號  範例                                                             說明
       <!ELEMENT book(code,title,price)                      book元素的子元素code,title,price只會出現一次
+     <!ELEMENT booklist(book+)>                           booklist子元素book至少會出現一次
*     <ELEMENT note(message*)>                            note子元素message可能不出現, 也可以一個或多個
?     <ELEMENT note(message?)>                            note可能沒有子元素, 也可以只有一個
|      <ELEMENT note(message+,(table | image)*)>  note子元素message至少出現一次, 或是table和image二選一, 而且允許出現一個或多個

Internal DTD declaration
宣告在XML文件內的DTD

Example XML document with an internal DTD:

<?xml version="1.0"?>
<!DOCTYPE note [
  <!ELEMENT note (to,from,heading,body)>
  <!ELEMENT to      (#PCDATA)>
  <!ELEMENT from    (#PCDATA)>
  <!ELEMENT heading (#PCDATA)>
  <!ELEMENT body    (#PCDATA)>
]>
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend</body>
</note>

External DTD Declaration
獨立的DTD文件

<!DOCTYPE root-element SYSTEM "filename">
此語法用來引入DTD文件到XML文件

Example XML document with using external DTD:

<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

資料來源:網路、W3 Schools

 


 

Note DTD

DTD是一種XML文件的文檔類型聲明(document type declaration)

可以看成一個或者多個XML文件的模板,可以定義XML文件中的元素、元素的屬性、元素的排列方式、元素包含的內容。

DTD (DATA TYPE DEFINE) 概念來自SGML,每一份SGML文件,都應有相對應的DTD。對XML文件而言,DTD並非特別需要


DTD有四個組成如下:

元素(Elements)

屬性(Attribute)

實體(Entities)

注釋(Comments)


元素聲明語法:

<!ELEMENT 元素名稱 元素內容>


屬性聲明語法:

<!ATTLIST 元素名稱、屬性名稱、屬性值型態、屬性的預設值>

 

限制較多的語法

 

 

訂閱文章