Xml的語法
• 一個XML檔案分為以下幾個部分:
– 文件宣告
– 元素
##– #屬性
– 註解
# –
##CDATA區、特殊字元##–#
處理指令(processing instruction)
#Xml的宣告
最簡單宣告
Encoding屬性
:字元編碼如果沒有指定預設的是UTF-8編碼
常見的字元集
#簡體中文:GBK 或GB2312
#繁體中文: BIG5
##西歐字元 :ISO8859-1 #通用的國際編碼 :Unicode UTF-8 |
#示範案例:
<
中國
中國
>
#解碼成字元 |
## 字元集錯誤時的 xml文件 |
|
Standalone:指定該文件是否需要引用其它資源,屬性值只有:yes或no
Yes:獨立 No:不獨立
#
XML檔案和HTML檔案一樣,實際上是文字檔案。
顯然大家立刻就會明白,創建XML檔案最普通的工具和HTML一樣,就是"記事本"了。
除了"記事本"之外,當然還有一些更方便的工具,如XML Notepad、XML Pro、CLIP! XML Editor等,
這些工具的一大特點是:能夠檢查你所建立的XML檔案是否符合XML規格。不過,現在這些工具都只有英文版的,而且需要付費使用。
當然,你還是能夠使用FrontPage、DreamWeaver等工具,不過使用起來不是很方便。
隨著XML的逐漸普及,相信在不久後,也會出現非常好用的創建XML檔案的工具。
現在我們暫且使用"記事本"來建立我們的XML檔吧。先看一個XML檔:
例1
〈?xml version="1.0" encoding="gb2312" ?〉
〈參考資料〉
〈書〉
〈姓名〉XML入門精解〈/姓名〉
〈作者〉張三〈/作者〉
〈價格貨幣單位="人民幣"〉20.00〈/價〉
〈/書〉
〈書〉
〈姓名〉XML文法〈/名稱〉
〈!--此書即將出版--〉
〈作者〉李四〈/作者〉
〈價格貨幣單位="人民幣"〉18.00〈/價〉
〈/書籍〉
〈/參考資料〉
這是一個典型的XML文件,編輯好後儲存為一個以.xml為後綴的文件。我們可以將此文件分為文件序言(Prolog)和文件主體兩個大的部分。
在此文件中的第一行即是文件序言。該行是XML檔案必須聲明的東西,而且也必須位於XML檔案的第一行,它主要是告訴XML解析器如何運作。
其中,version是標明此XML檔案所用的標準的版本號,必須要有;encoding指明了此XML檔案中所使用的字元類型,可以省略,在你省略此聲明的時候,後面的字元碼必須是Unicode字元碼(建議不要省略)
。因為我們在這個例子中使用的是GB2312字元碼,所以encoding這個聲明也不能省略。在文件序言部分還有一些聲明語句,我們在後面給予介紹。
檔案的其餘部分都是屬於檔案主體,XML檔案的內容資訊存放在此。
我們可以看到,文件主體是由開始的〈參考資料〉和結束的〈/參考資料”控制標記所組成,這個稱為XML文件的"根元素";〈書〉是作為直屬於根元素下的"子元素";在〈書本〉下又有〈名稱〉、〈作者〉、〈價格〉這些子元素。貨幣單位是〈價格〉元素中的一個"屬性","人民幣"則是"屬性值"。
首先,XML檔案的第一行必須是宣告該檔案是XML檔案以及它所使用的XML規格版本。在文件的前面不能夠有其它元素或註釋。
第二,在XML檔案中有且只能夠有一個根元素。在我們的第一個例子中,〈參考資料〉... 〈/參考資料”就是此XML檔的根元素。
第三,在XML檔案中的標記必須正確地關閉,也就是說,在XML檔案中,控制標記必 須有與之對應的結束標記。如:〈名稱〉標記必須有對應的〈/名稱〉結束標記,不像HTML,某些標記的結束標記可有可無。如果在XML檔案中遇到自成一個單元的標記,就是類似HTML 中的〈img src=http://www.php.cn/〉的這些沒有結束標記的時候,XML稱它為"空元素",必須用這樣的寫法:〈空元素名/〉,如果元素中含有屬性時寫法則為:〈空元素名屬性名="屬性值"/〉。
第四,標記之間不得交叉。在先前的HTML檔中,可以這樣寫:
〈B〉〈H〉XXXXXXX〈/B〉〈/H〉,〈B〉和〈H〉
標記之間有相互重疊的區域,而在XML中,是嚴格禁止這樣標記交錯的寫法,標記必須以規則性的次序來出現。
第五,屬性值必須要用" "號括起來。如第一個例子中的"1.0"、"gb2312"、"人民幣"。都是用" "號括起來了的,不能漏掉。
第六,控制標記、指令和屬性名稱等英文要區分大小寫。與HTML不同的是,在HTML中,類似〈B〉與〈b〉的標記意義是一樣的,而在XML中,類似〈name〉、〈NAME〉或〈Name〉這樣的標記是不同的
第七,我們知道,在HTML檔案中,如果我們要瀏覽器原封不動地將我們所輸入的東西顯示出來,可以將這些東西放到〈pre〉〈/pre〉或者〈xmp〉〈/xmp〉標記中間。這對於我們建立HTML教學的網頁是必不可少的,因為網頁中要顯示HTML的原始碼。而在XML中,要實現這樣的功能,就必須使用CDATA標記。在CDATA標記中的信息被解析器原封不動地傳給應用程序,並且不解析該段資訊中的任何控制標記。 CDATA區域是由:"〈![CDATA["為開始標記,以">〉"結束標記。例如:例2中的源碼,除了"〈![CDATA["和">〉"符號,其餘的內容解析器將原封不動地交給下游的應用程序,即使CDATA區域中的開始和結尾的空白以及換行字元等,都同樣會被轉交(注意CDATA是大寫的字元)。
#
Xml元素的基本規則
# 元素是xml文件的基本單元
,xml文件就是一個層層嵌套的元素所組成的。整個的xml文件從根元素開始,根元素包含若干個子元素,而每個子元素又可以包含若干個子元素,從而可以組成一個
xml文檔。 Xml標籤語法:
# 1、Xml的標籤分為兩大類:
單一標記:<中國/> 雙重標記:<中國>中國>
2、xml#標籤的要求:
1、標籤名可以有字母(包含非西歐字元)、數字、底線(_)、中劃線
(-)、冒號(:)和點號(.)組成,但不能以數字、中劃線和點號開頭。
2、標籤名稱不能包含<、
>、,、$等符號
######3###、標籤名種盡量不要出現英文的冒號###(:),###除非在使用命名空間。 ###############4###、標籤名稱不能以字元###xml###、###XML###等任意大小寫組合開始。 ###############5###、標籤名稱不能包含空格。 ###############6###、標籤名稱區分大小寫#######3、xml標籤嵌套子元素:xml允許深度嵌套子元素,只要保證元素之間合理的嵌套即可.而且xml元素可以嵌套多個重名的子元素,這多個子元素之間是有序的。
第一個:xml
<中國>
<位於北京>
## <海淀/>
<朝陽>朝陽>
<朝陽>朝陽#>
北京>
中國>
第二個xml:
<中國>
# <北京>
## <朝陽
>朝陽>
## <朝陽
>朝陽>
## <
# <
/>
北京>
##
中國>
##########4###、空元素:空元素不可接受子元素## #,###也不可以接受字串內容。 ############### ###第三個###xml###:############
5、字符数据
Struts2开发详解
对于XML标签中出现的所有空格和换行,XML解析程序都会当作标签内容进行处理
如果文本字符中包含了一些特殊的字符,例如<和&由于这些字符都有特殊的含义,因此直接在xml文档中使用该字符串将引起文档的混乱。
<表达式>
<比较符>1+3<6比较符>
表达式>
代表的是文本字符串中包含了特殊的字符
有以下两种方法解决:
1、 使用实体引用:用另一个特殊符号代替这些特殊符号
2、使用CDATA标记:将整个文档定义成字符串。
1、 使用实体引用
<表达式>
<比较符>1+3&<6比较符>
表达式>
上面的红色的<产生了干扰
解决如下:
<表达式>
<比较符>1+3<6比较符>
表達式>
2、 使用CDATA 標記
在特殊標記CDATA下,所有的特殊字元,甚至是有效的元素都將被當成簡單的字串處理。實體引用也會失去作用,變成直接的文字。
CDATA的語法格式如下:
# < ![CDATA[文字內容]]>
<表達式>
< 比較符>
+3<6
]]>
# 表達式>
備註:由於xml文件根本不會對
CDATA標記內容進行任何解析,因此在CDATA內可以放置任何內容,其中的內容永遠不會出錯。 1、 註解
#Xml文件也可以加入解釋用的字元資料,這些解釋用的字串不會被
xml解析器處理。這些解釋用的文字稱為註釋。 Xml的文檔註解與html完全一致。 Xml註解的語法格式如下:
Xml的註解允許包含元素和標籤。
注意:
1、Xml的註解不能夠放在標籤體內。
2、 不要把xml文檔放在
xml文檔宣告之前 xml文檔的宣告永遠在第一行3、 不在註解中使用雙中劃線(--)
…..
2、處理指示
處理指令,簡稱PI (processing instruction)。處理指令用來指揮解析引擎如何解析
XML文件內容。 處理指令用於提供處理xml文件的應用程式資訊,告訴處理程序應該如何處理該文件。一個完整的xml文件的處理程序,可以讀取xml文件的處理指令,並根據處理指令進行對應處理,或將它傳給下一個程式。 Xml處理指令的格式如下: 處理指令名處理指令資訊?> 3、 屬性 ##xml屬性的特徵: 1、 xml元素的屬性必須有屬性值,屬性值必須用引號引起來。 2、 同一個xml元素裡不能有多個同名的屬性 3、 Xml元素裡的多個屬性之間沒有先後順序。 <book>
<isbn>123456780</isbn>
<book_name>Java讲义</book_name>
<price>99</price>
</book>
比如說這個book#本身就有 isbn book_name price的屬性
那麼
<book isbn=”” book_name=”” price=””/>
#Xml
#Xml必須有一個根元素。 Xml文檔的整體結構
#1、 必須有一個根元素(
有且只有一個)
#2、 元素必須合理結束
3、 元素之間必須合理巢狀
#4、 元素的屬性必須有屬性值
只要不滿足上面的條件就是一個格式不良好的xml文檔#只要滿足上面的條件就是一個格式良好的xml文檔
並且遵守了dtd或schema就是一個有效的xml文件。
Xml文檔是一種標準的結構化文檔,可以轉換成DOM(Document Object Model)
樹
其根節點對應DOM樹的根節點。
<book> <computer> <name>网上介绍</name> <author>redarmy</author> </computer> <computer> <name>网上介绍</name> <author>redarmy</author> </computer> </book>
#
|
#book
|
#computer
|
computer
|
|
name |
#author |
注意:
必須具有根標記且根標記必須唯一
開始標記和結束標記需配對使用
標記不能交錯使用
空標記可寫成「<標記名稱/>」的形式
標記對大小寫敏感
#以上就是瘋狂XML學習筆記(2)--------- ----格式要求的內容,更多相關內容請關注PHP中文網(www.php.cn)!