xml dtd是目前使用比較廣泛的一種xml模式,而xml schema是w3c官方推薦的xml定義格式。
dtd 指定:可以在文件中存在的元素、那些元素可以具有的屬性、在元素內部元素的層次結構以及元素在整個文件中出現的順序。
xml schema 是基於 xml 的 dtd 替代者。xml schema 可描述 xml 文件的結構。xml schema 語言也可作為 xsd(xml schema definition)來引用。
結構良好的xml文件——如果某個文件符合xml語法規範,那麼我們就說這個文件是「結構良好」的文件。使用本書講到的xmlspy 2006工具就可以測試某文件是否為結構良好的xml文件。
有效的xml文件——所謂有效的xml文件是指通過了dtd的驗證的,具有良好結構的xml文件,在此大家要明白xml文件可分為結構良好的xml文件和有效的xml文件,以及他們之間的關係。即具有結構良好的xml文件並不一定就是有效的xml文件,反之乙個有效的xml文件必定是乙個結構良好的xml文件。
xml schema 與 xml dtd 區別:
xml schema和dtd都用於文件驗證,但二者還有一定區別,本質區別:schema本身是xml的,可以被xml解析器解析(這也是從dtd上發展schema的根本目的)。另外:
xml schema是內容開放模型,可擴充套件,功能性強;而dtd可擴充套件性差;
xml schema支援豐富的資料型別,而dtd不支援元素的資料型別,對屬性的型別定義也很有限;
xml schema支援命名空間機制,而dtd不支援;
xml schema可針對不同情況對整個xml文件或文件區域性進行驗證;而dtd缺乏這種靈活性;
xml schema完全遵循xml規範,符合xml語法,可以和dom結合使用,功能強大;而dtd語法本身有自身的語法和要求,難以學習;
1. 最簡單的schema文件
如何寫乙個最簡單的xml schema文件呢?
首先,我們寫出乙個最簡單的xml文件。
hello.xml
<?xml version="1.0"?>
hello world!!
hello.xsd
<?xml version="1.0"?>
">
xml schema文件字尾名是.xsd,完全符合xml語法,根元素是schema,命名空間xmlns:xsd=",用元素定義例項文件中的元素,如greeting。
2. 含子元素的schema文件
假設例項文件是如下的:
customer.xml
teiki
no.237, road waitan, shanghai
則可以寫出以下的xml schema文件:
customer.xsd
<?xml version="1.0"?>
">
例項文件customer.xml中,元素含有兩個子元素,所以我們在schema文件中採用complextype來定義該元素。sequence表示子元素依次出現的順序。
3. 含子元素和孫元素的schema文件
這次我們給出乙個更加複雜一些的文件:
customer.xml
teiki
zhejiang
hangzhou
xilu road, no.121, 7f
為此,我們需要乙個更加複雜一點的schema文件:
address.xsd
<?xml version="1.0"?>
">
不過,我們還可以採用ref元素來重新編寫這個schema文件:
address2.xsd
<?xml version="1.0"?>
">
使用ref元素可以直接將其指向另乙個模組,使文件更加具有可讀性。
XML文件型別定義 DTD詳解
dtd document type definition 文件型別定義 1.對dtd的初步認識 乙個簡單的dtd檔案 323.在xml文件中直接嵌入dtd定義語句 就是直接在xml文件的 一 dtd元素定義.元素定義細節 1 元素定義的語法格式 例如 使用規則 pcdata 是 parsed cha...
定義函式指標的兩種形式
定義函式指標的兩種形式 林石 2009 07 09 我們在開發c c 程式時,經常遇到需要定義函式指標的情況。為了增加 的可讀性,一般都會通過typedef形式定義函式指標型別。有兩種做法,如下 其中,return type是函式返回型別,def type是函式 指標 型別名,arg list是函式...
xml的文件定義和dtd簡單入門
1.xml的文件宣告 如果寫了xml 第一步必須要有乙個文件宣告 格式 文件宣告必須在第一行第一列 前面有空格也不行。屬性 vertion 1.0 和 1.1 一般1.0 encoding xml編碼 standalone 是否要依賴其他檔案 yes no 2.定義元素 標籤 如果沒有主體 這樣也是...