熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

XML入門基礎:XML的語法規則

2013-11-13 09:41:32  來源: .NET編程 
提綱

XML語法規則
元素的語法
注釋的語法
CDATA的語法
Namespaces的語法
entity的語法
DTD的語法

XML語法規則

         XML的文檔和HTML的原代碼類似也是用標識來標識內容創建XML文檔必須遵守下列重要規則
規則必須有XML聲明語句

        這一點我們在上一章學習時已經提到過聲明是XML文檔的第一句其格式如下
<?xml version= standalone=yes/no encoding=UTF?>
聲明的作用是告訴浏覽器或者其它處理程序這個文檔是XML文檔聲明語句中的version表示文檔遵守的XML規范的版本standalone表示文檔是否附帶DTD文件如果有參數為noencoding表示文檔所用的語言編碼默認是UTF

        規則是否有DTD文件
        如果文檔是一個有效的XML文檔(見上一章)那麼文檔一定要有相應DTD文件並且嚴格遵守DTD文件制定的規范DTD文件的聲明語句緊跟在XML聲明語句後面格式如下
<!DOCTYPE typeofdoc SYSTEM/PUBLIC dtdname>
其中
!DOCTYPE是指你要定義一個DOCTYPE;
typeofdoc是文檔類型的名稱由你自己定義通常於DTD文件名相同
SYSTEM/PUBLIC這兩個參數只用其一SYSTEM是指文檔使用的私有DTD文件的網址而PUBLIC則指文檔調用一個公用的DTD文件的網址
dtdname 就是DTD文件的網址和名稱所有DTD文件的後綴名為dtd
我們還是用上面的例子應該寫成這樣
<?xml version= standalone=no encode=UTF?>
<!DOCTYPE filelist SYSTEM filelistdtd>

        規則注意你的大小寫
        在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= coolgif>應寫為<IMG src= coolgif />

  第四章 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
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.