提綱
一
XML語法規則
二
元素的語法
三
注釋的語法
四
CDATA的語法
五
Namespaces的語法
六
entity的語法
七
DTD的語法
一
XML語法規則
XML的文檔和HTML的原代碼類似
也是用標識來標識內容
創建XML文檔必須遵守下列重要規則
規則
必須有XML聲明語句
這一點我們在上一章學習時已經提到過
聲明是XML文檔的第一句
其格式如下
<?xml version=
standalone=
yes/no
encoding=
UTF
?>
聲明的作用是告訴浏覽器或者其它處理程序
這個文檔是XML文檔
聲明語句中的version表示文檔遵守的XML規范的版本
standalone表示文檔是否附帶DTD文件
如果有
參數為no
encoding表示文檔所用的語言編碼
默認是UTF
規則
是否有DTD文件
如果文檔是一個
有效的XML文檔
(見上一章)
那麼文檔一定要有相應DTD文件
並且嚴格遵守DTD文件制定的規范
DTD文件的聲明語句緊跟在XML聲明語句後面
格式如下
<!DOCTYPE type
of
doc SYSTEM/PUBLIC
dtd
name
>
其中
!DOCTYPE
是指你要定義一個DOCTYPE;
type
of
doc
是文檔類型的名稱
由你自己定義
通常於DTD文件名相同
SYSTEM/PUBLIC
這兩個參數只用其一
SYSTEM是指文檔使用的私有DTD文件的網址
而PUBLIC則指文檔調用一個公用的DTD文件的網址
dtd
name
就是DTD文件的網址和名稱
所有DTD文件的後綴名為
dtd
我們還是用上面的例子
應該寫成這樣
<?xml version=
standalone=
no
encode=
UTF
?>
<!DOCTYPE filelist SYSTEM
filelist
dtd
>
規則
注意你的大小寫
在XML文檔中
大小寫是有區別的
<P>和<p>是不同的標識
注意在寫元素時
前後標識大小寫要保持一樣
例如:<Author>ajie</Author>
寫成<Author>ajie</author>是錯誤的
你最好養成一種習慣
或者全部大寫
或者全部小寫
或者大寫第一個字母
這樣可以減少因為大小寫不匹配產生的文檔錯誤
規則
給屬性值加引號
在HTML代碼裡面
屬性值可以加引號
也可以不加
例如:<font color=red>word</font>和<font color=
red
>word</font>都可以被浏覽器正確解釋
但是在XML中則規定
所有屬性值必須加引號(可以是單引號
也可以是雙引號)
否則將被視為錯誤
規則
所有的標識必須有相應的結束標識
在HTML中
標識可能不是成對出現的
比?lt;br>
而在XML中規定
所有標識必須成對出現
有一個開始標識
就必須有一個結束標識
否則將被視為錯誤
規則
所有的空標識也必須被關閉
空標識就是標識對之間沒有內容的標識
比如<br>
<img>等標識
在XML中
規定所有的標識必須有結束標識
針對這樣的空標識
XML中處理的方法是在原標識最後加/
就可以了
例如
<br>應寫為<br />
<META name=
keywords
content=
XML
SGML
HTML
>應寫為<META name=
keywords
content=
XML
SGML
HTML
/>
<IMG src=
cool
gif
>應寫為<IMG src=
cool
gif
/>
第四章 XML語法
二元素的語法
元素由一對標識以及其中的內容組成就象這樣ajie元素的名稱和標識的名稱是一樣的標識可以用屬性來進一步描述
在XML中沒有任何保留字所以你可以隨心所欲的用任何詞語來作為元素名稱但是也必須遵守下列規范
名稱中可以包含字母數字以及其它字母名稱不能以數字或_ (下劃線)開頭名稱不能以字母 xml(或 XML 或 Xml ……)開頭名稱中不能包含空格名稱中間不能包含(冒號)
為了使元素更容易閱讀理解和操作我們還有一些建議名稱中不要使用因為在很多程序語言中是作為對象的屬性例如lor同樣的原因也最好不要用必須使用的以_代替名稱盡量簡短
名稱的大小寫盡量采用同一標准
名稱可以使用非英文字符比如用中文但是有些軟件可能不支持(IE目前是支持中文元素的)
另外補充一點關於屬性的說明在HTML中屬性可以用來定義元素的顯示格式比如<font color=red>word</font>將把word顯示為紅色而在XML中屬性只是對標識的描述與元素內容的顯示無關例如同樣一句<font color=red>word</font>並不會將word顯示為紅色(那麼有網友會問如何在XML中將文字顯示為紅色呢?這就需要使用CSS或者XSL我們在下面詳細講述)
三注釋的語法
注釋是為了便於閱讀和理解在XML文檔添加的附加信息將不會被程序解釋或則浏覽器顯示
注釋的語法如下
<! 這裡是注釋信息 >
可以看到它和HTML中的注釋語法是一樣的非常容易養成良好的注釋習慣將使你的文檔更加便於維護共享看起來也更專業
四CDATA的語法
CDATA全稱character data翻譯為字符數據我們在寫XML文檔時有時需要顯示字母數字和其它的符號本身比如<而在XML中這些字符已經有特殊的含義我們怎麼辦呢?這就需要用到CDATA語法語法格式如下
<![CDATA[這裡放置需要顯示的字符]]>
例如
<![CDATA[<AUTHOR sex=female>ajie</AUTHOR>]]>
在頁面上顯示的內容將是<AUTHOR sex=female>ajie</AUTHOR>
第四章 XML語法
五Namespaces的語法
Namespaces翻譯為名字空間名字空間有什麼作用呢?當我們在一個XML文檔中使用他人的或者多個DTD文件就會出現這樣的矛盾因為XML中標識都是自己創建的在不同的DTD文件中標識名可能相同但表示的含義不同這就可能引起數據混亂
比如在一個文檔<table>wood table</table>中<table>表示桌子
而在另一個文檔<table>namelist</table>中<table>表示表格如果我需要同時處理這兩個文檔就會發生名字沖突
了解決這個問題我們引進了namespaces這個概念namespaces通過給標識名稱加一個網址(URL)定位的方法來區別這些名稱相同的標識
Namespaces同樣需要在XML文檔的開頭部分聲明聲明的語法如下
<document xmlns:yourname=URL>
其中yourname是由你定義的namespaces的名稱URL就是名字空間的網址
假設上面的桌子<table>文檔來自我們就可以聲明為
<document xmlns:zhuozi=>
然後在後面的標識中使用定義好的名字空間
<zhuozi:table>wood table</table>
這樣就將這兩個<table>區分開來注意的是設置URL並不是說這個標識真的要到那個網址去讀取僅僅作為一種區別的標志而已
六entity的語法
entity翻譯為實體它的作用類似word中的宏也可以理解為DW中的摸板你可以預先定義一個entity然後在一個文檔中多次調用或者在多個文檔中調用同一個entity
entity可以包含字符文字等等使用entity的好處在於它可以減少差錯文檔中多個相同的部分只需要輸入一遍就可以了它提高維護效率比如你有個文檔都包含copyright的entity如果需要修改這個copyright不需要所有的文件都修改只要改最初定義的entity語句就可以了
XML定義了兩種類型的entity一種是我們這裡說的普通entity在XML文檔中使用另一種是參數entity在DTD文件中使用
entity的定義語法為:
<!DOCTYPE filename [
<!ENTITY entityname entitycontent
]
>
例如我要定義一段版權信息:
<!DOCTYPE copyright [
<!ENTITY copyright Copyright Ajie All rights reserved
]
>
如果我的版權信息內容和他人共享一個XML文件也可以使用外部調用的方法語法象這樣
<!DOCTYPE copyright [
<!ENTITY copyright SYSTEM >
]
>
定義好的entity在文檔中的引用語法為&entityname;
例如上面定義的版權信息調用時寫作?copyright;
完整的例子如下你可以copy下來存為copyrightxml觀看實例
<?xml version= encoding=GB?>
<!DOCTYPE copyright [
<!ENTITY copyright Copyright Ajie All rights reserved>
]>
<myfile>
<title>XML</title>
<author>ajie</author>
<email></email>
<date></date>
©right;
</myfile>
第四章 XML語法
七DTD的語法
DTD是有效XML文檔的必須文件我們通過DTD文件來定義文檔中元素和標識的規則及相互關系如何建立一個DTD文件呢?讓我們一起來學習
設置元素
元素是XML文檔的基本組成部分你要在DTD中定義一個元素然後在XML文檔中使用元素的定義語法為<!ELEMENT DESCRIPTION (#PCDATA DEFINITION)*>
說明
<!ELEMENT 是元素的聲明說明你要定義的是一個元素
聲明後面的DESCRIPTION是元素的名稱
(#PCDATA DEFINITION)*>則是該元素的使用規則規則定義了元素可以包含的內容以及相互的關系下面的表格概要列出了元素的規則
元素規則表:
Symbol
含義
舉例
#PCDATA
包含字符或文本數據
<MYFILE(#PCDATA)>
元素MYFILE包含一個文本數據
#PCDATA elementname
包含文本和其它子元素
<MYFILE(#PCDTATATITLE)>
MYFILE元素必須包含文本和TITLE子元素
使用逗號分隔排序
<MYFILE (TITLEAUTHOREMAIL)>
MYFILE元素必須依次包含TITILEAUTHOREMAIL三個子元素
|
使用|表示或者
<MYFILE (TITLE | AUTHOR | EMAIL)>
MYFILE元素必須包含TITLE或者AUTHOR或者EMAIL子元素
name
只能使用一次
<MYFILE (TITLE)>
MYFILE元素必須包含TITLE子元素而且只能使用一次
使用一次或者不使用
<MYFILE (TITLEAUTHOR?EMAIL?)>
MYFILE元素必須包含TITLE子元素而且只能使用一次可以包含或者不包含AUTHOR和EMAIL子元素但是如果使用只能一次
使用至少一次或多次
<MYFILE (TITLE+AUTHOR?EMAIL)>
MYFILE元素必須包含TITLE子元素而且使用至少一次接下來可以跟隨AUTHOR子元素也可以不跟最後必須包含EMAIL子元素而且只能使用一次
使用一次多次或者根本不使用
<MYFILE (TITLE*)>
MYFILE元素可以包含一個多個或者不包含TITLE子元素
設置組可以嵌套
<MYFILE(#PCDATA | TITLE)*>
元素MYFILE包含一個或者更多的文本或者TITLE子元素
<MYFILE((TITLE* AUTHOR? EMAIL)* | COMMENT)>
MYFILE元素必須包含一些內容內容或者是一個注釋也或者是多個組組裡包含一個多個或者沒有TITLE子元素接著是一個或者沒有AUTHOR子元素再接著是一個必須的EMAIL子元素
另外我們還可以為元素定義屬性因為我們不推薦使用屬性在這裡就不詳細展開了
最後我們來總結一些前四章學習的內容寫一個包含DTDXML以及Script的簡單實例便於讀者理解
將下面文件存為myfiledtd
<!ELEMENT myfile (title author)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
然後建立XML文檔myfilexml:
<?xml version= encoding=GB?>
<!DOCTYPE myfile SYSTEM myfiledtd>
<myfile>
<title>XML輕松學習手冊</title>
<author>ajie</author>
</myfile>
建立HTML文檔l
<html>
<head>
<script language=JavaScript for=window event=onload>
var xmlDoc = new ActiveXObject(MicrosoftXMLDOM);
xmlDocasync=false;
xmlDocload(myfilexml);
nodes = xmlDocdocumentElementchildNodes;
titleinnerText = em()text;
authorinnerText = em()text;
</script>
<title>在HTML中調用XML數據</title>
</head>
<body bgcolor=#FFFFFF>
<b>標題: </b>
<span id=title></span><br>
<b>作者: </b>
<span id=author></span><br>
</body>
</html>
用IE以上浏覽器打開l就可以看到效果了
好了到今天我們對XML已經有了一些基本的了解
From:http://tw.wingwit.com/Article/program/net/201311/11347.html