?
? XML 筆記
標記語言種類:
? 1.格式化標記? <b>加粗</b>,<i></i>
? 2.結(jié)構(gòu)化標記? <div></div>,<table></table>
? 3.語義標記??? <pre></pre> <strong></strong>
eXtensible Markup Language? XML標記
? 可擴展標記語言,是自定義,自描述的
? XML是SGML的子集.
XML結(jié)構(gòu):
?XML聲明-> <?xml version="1.0" encoding="UTF-8"?>
??? ↓ ↓?????????? ↓? ?????????? ↓
??指定 目標??????? 版本?? 編碼
?文檔類型定義-> <!DOCTYPE catalog SYSTEM "catalog.dtd">
??????? ↓???↓
????? 根元素????? 導(dǎo)入文件
?注釋 ->? <!-- catalog last updated 2000-11-01 -->
?根元素-> <book id="bk101">
??→?<author>Abercrombie, Kim</author>
??|?<title>XML Developer's Guide</title>
??|?????? <genre>Computer</genre>
?元素 ->?|?<price>44.95</price>
??|?????? <publish_date>2000-10-01</publish_date>
??|?????? <description>
??|??<![CDATA[An in-depth look at
??|? ?? creating applications with XML, using <, >,
??|??]]>
??|? ?? and &.
??→?</description>
????????? </book>
?* O->N
?+ 1->N
?? O->1
XML的優(yōu)越性:
? 1.信息共享
? 2.數(shù)據(jù)傳遞
? 3.數(shù)據(jù)重用
? 4.分離數(shù)據(jù)和顯示
? 5.文檔包含語義
? 6.可擴展性
元素內(nèi)容類型:
? 空元素(EMPTY) <image?? source=“11.jpg”/>
? ANY 元素(內(nèi)容類型可以是任意的,可以是子元素,注釋,指令,一般是根元素)
? (#PCDATA)類型:內(nèi)容類型只能是字符數(shù)據(jù)元素間的關(guān)系
?? 可以是一個父元素對應(yīng)多個子元素或一個子元素等
?? 子元素的之間的關(guān)系可以是順序關(guān)系,選擇關(guān)系
自定義實體語法:
?<!DOCTYPE 根元素 [
?<!ENTITY 實體名 "實體內(nèi)容">
?]>
?<!DOCTYPE 班級 [? <!ENTITY? pic1??? “001.jpg”?? ]>
?實體?符號
?<?<
?>?>
?&?&
?"?"
?'?'
XML文本字符串:? <![CDATA[<<<,.?'">>>]]> 顯示-> <<<,.?'">>>
語法規(guī)范
? - 必須有XML聲明語句
? - <?xml version="1.0" encoding="gb2312"?>
? - 必須有且僅有一個根元素
? - 標記大小寫敏感
? - 屬性值用引號
? - 標記成對
? - 空標記關(guān)閉
? - 元素正確嵌套
元素語法
? - 名稱中可以包含字母、數(shù)字或者其它字符
? - 名稱不能以數(shù)字和"_"(下劃線)開頭
? - 不能以XML/xml/Xml/…開頭
? - 名稱中不能含空格
? - 名稱中不能含冒號(注:冒號留給命名空間使用)
XML的應(yīng)用范圍:? 系統(tǒng)配置 應(yīng)用程序集 數(shù)據(jù)加載 Web服務(wù) 內(nèi)容管理
文檔類型定義 Document Type Definition --> DTD
?元素(ELEMENT)的定義規(guī)則
?屬性(ATTLIST)的定義規(guī)則
?可使用的實體(ENTITY)或符號(NOTATION)規(guī)則
DTD文檔與XML文檔實例的關(guān)系
?類與對象
? ?數(shù)據(jù)庫表結(jié)構(gòu)與數(shù)據(jù)記錄
DTD文檔的聲明及引用
? 內(nèi)部DTD文檔
??<!DOCTYPE 根元素? [定義內(nèi)容]>
? 外部DTD文檔
??<!DOCTYPE 根元素? SYSTEM "DTD文件路徑">
? 內(nèi)外部DTD文檔結(jié)合
??<!DOCTYPE 根元素? SYSTEM "DTD文件路徑" [
???定義內(nèi)容
??]>
元素定義
? 語法:
?<!ELEMENT NAME CONTENT>
??? ↓??? ↓???? ↓
?關(guān)鍵字 元素名稱 元素類型
? 元素類型:
?EMPTY --> 該元素不能包含子元素和文本,但可以有屬性-(空元素)
?ANY --> 該元素可以包含任何在DTD中定義的元素內(nèi)容
?#PCDATA --> 可以包含任何字符數(shù)據(jù),但是不能在其中包含任何子元素
?純元素類型 --> 只包含子元素,并且這些子元素外沒有文本
?混合類型 --> 包含子元素和文本數(shù)據(jù)的混合體
? 示例:
?? EMPTY示例--空元素
?<家庭>
??? <人 名字="皮諾曹" 性別="男" 年齡="6"/>
??</家庭>
?? ANY示例
?<家庭>
?? <人>皮諾曹</人>
?? <人><大人>皮諾曹爸爸</大人></人>
?</家庭>
?? #PCDATA示例
?<家庭>
?? <人 性別="男" 年齡="6">皮諾曹</人>
?</家庭>
?? 組合類型示例
?<!ELEMENT 家庭 (人+, 家電*)>
屬性的定義
? 語法:
?<!ATTLIST 元素名稱
???? 屬性名稱??? 類型??? 屬性特點
???? ...
?>
? 類型:
?CDATA?? 任何字符串(文本)
?ID?? 唯一的
?IDREF?? 指向文檔中其它地方聲明的ID類型的值
?IDREFS? ? IDREFS同IDREF,可以具有由空格分開的多個引用
?NMTOKEN?? 屬性的值必須對應(yīng)一個在DTD文檔內(nèi)聲明的實體.(如:圖形)
?NMTOKENS? 與ENITIY類似,可以包含多個由空格分開的實體.
?Enumerated? 枚舉類型
屬性的特點
?- #REQUIRED?? ?元素的所有實例都必須有該屬性的值(必填)
?- #IMPLIED??? ?元素的實例中可以忽略該屬性(可填)
?- FIXED value ?元素實例中該屬性的值必須為指定的固定值(常量)
?- Default value?為屬性提供一個默認的值
定義實體
?內(nèi)部 - <!ENTITY 實體名 "實體值">
?外部 - <!ENTITY 實體名 SYSTEM "URI/URL">
實體類型:
?普通實體、外部實體、參數(shù)實體、外部參數(shù)實體.
? 實體類型引用方式 %實體名 (相當于用戶控件)
?? <!ENTITY %地址 "街道,城市,國家" >
?? <!ENTITY 聯(lián)系 (人名,電話,%地址;)>
命名空間(Namespace)
? - 避免命名沖突
? - 代碼清晰
? 命名空間的語法定義:xmlns:[prefix]="URL"
? 默認命名空間 xmlns=“URL”