Xml的語法
• 一個XML檔案分為以下幾個部分:
– 文件宣告
– 元素
##– #屬性
– 註解
# –
##CDATA區、特殊字元##–#
處理指令(processing instruction)
#Xml的宣告
最簡單宣告
307f197fa35495e5bd15705cfb261526
Encoding屬性
:字元編碼如果沒有指定預設的是UTF-8編碼
常見的字元集
#簡體中文:GBK 或GB2312
#繁體中文: BIG5
##西歐字元 :ISO8859-1 #通用的國際編碼 :Unicode UTF-8 |
#示範案例: 52b189f45abba88b2989c5c1f30b7a34
5ea5ff172dd6873b4794ab8ce4fe172caa23de8e443e6a8b4df350f9b3828624
#解碼成字元 |
## 字元集錯誤時的 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的標籤分為兩大類:
單一標記:75df3bc0933eb1466169adff9f61cb4a 雙重標記:bd06f8065ce1eef9c9844947696287dd11bfd96ba6181963b533dadf1da5c708
2、xml#標籤的要求:
1、標籤名可以有字母(包含非西歐字元)、數字、底線(_)、中劃線
(-)、冒號(:)和點號(.)組成,但不能以數字、中劃線和點號開頭。
2、標籤名稱不能包含1d6a4d0909ce72b18ded9eafd07426c2 、,、$等符號 3、xml標籤嵌套子元素:xml允許深度嵌套子元素,只要保證元素之間合理的嵌套即可.而且xml元素可以嵌套多個重名的子元素,這多個子元素之間是有序的。 第一個:xml 2505bfe64a5819d2bd657aea2cd57db8 a67540303f5970af595935922c8397d0 ## 32dd8153c06a0e1afb9588e3bad8e1a7 64bbe2a22322e9a2aa09ca25a3775632f68898d7b16bb89fcbde4eec2b3f2420 64bbe2a22322e9a2aa09ca25a37756325898934bcce4e55364593a87f027fdcb c384be263bf01c9542f9f672065bcb58 11bfd96ba6181963b533dadf1da5c708 第二個xml: bd06f8065ce1eef9c9844947696287dd # 6421cd2372e8f2d89c0890b9027ad0b3
## ab0b5d9d2ead0e5b2bfefa2b9e5fa9c634b94a401b7feda4c5937ef6d887e004
## ab0b5d9d2ead0e5b2bfefa2b9e5fa9c634b94a401b7feda4c5937ef6d887e004 ## a8ef5bfa1d55e06cc1ca97b75025c32c
c384be263bf01c9542f9f672065bcb58 ##f15c16b824183de37367a4fb4fd3c5c8 06f9063201224c5ea2c737869b78b220 5、字符数据 463aef0d2da08708f472268a99530dbe 2c6008b0e56443c91d19286e6d5aeb74Struts2开发详解1d3f22abb3651fd0d3b978b732f443e5 2c6008b0e56443c91d19286e6d5aeb74 Struts2开发详解 1d3f22abb3651fd0d3b978b732f443e5 0f6fa65eb6c7f3ed4374d12bf4ac01bd 对于XML标签中出现的所有空格和换行,XML解析程序都会当作标签内容进行处理 如果文本字符中包含了一些特殊的字符,例如9916825e1251ffb5610956d1d0de7076 ae0dad9014289c6d12010d8d7c16d4801+3e9fae4ba621339ac778d677fd6c1e93e f0f56cc353d60613bb77ad77dc4a2b71
代表的是文本字符串中包含了特殊的字符 有以下两种方法解决: 1、 使用实体引用:用另一个特殊符号代替这些特殊符号 2、使用CDATA标记:将整个文档定义成字符串。 1、 使用实体引用
44268761adfa814cf615c226dea79439 a30d83af1c24e4dd3fb885081ed8bb3c ae0dad9014289c6d12010d8d7c16d4801+3&6ccdf030973307f116f98ffdd41846a0 f0f56cc353d60613bb77ad77dc4a2b71 上面的红色的<产生了干扰
解决如下: 44268761adfa814cf615c226dea79439 a30d83af1c24e4dd3fb885081ed8bb3c ae0dad9014289c6d12010d8d7c16d4801+3<6a7f9fe91d91e1c9e48986c28ae44ee0d 2df08c5c5eac1113322b40f999809dc5 2、 使用CDATA 標記 在特殊標記CDATA下,所有的特殊字元,甚至是有效的元素都將被當成簡單的字串處理。實體引用也會失去作用,變成直接的文字。 CDATA的語法格式如下: # e463f92a5d08230385e280783f71a67f
1e5c7df4134ee60239938c265d1cebeb
cd878d6028bfabb2b5f14b02a30e9a9d
beb2dfd776123c0769793dcd74c7d037
+3ef1b64d58a30d2842beb55ae6778f1fe
# 7f9650bde53a04385fad232ef5d7af90
備註:由於xml文件根本不會對
CDATA標記內容進行任何解析,因此在CDATA內可以放置任何內容,其中的內容永遠不會出錯。 1、 註解
#Xml文件也可以加入解釋用的字元資料,這些解釋用的字串不會被
xml解析器處理。這些解釋用的文字稱為註釋。 Xml的文檔註解與html完全一致。 Xml註解的語法格式如下:
6859d129f6233576c30b07a555d55c3e
Xml的註解允許包含元素和標籤。
注意:
1、Xml的註解不能夠放在標籤體內。
2、 不要把xml文檔放在
xml文檔宣告之前 xml文檔的宣告永遠在第一行3、 不在註解中使用雙中劃線(--)
…..
2、處理指示
處理指令,簡稱PI (processing instruction)。處理指令用來指揮解析引擎如何解析
XML文件內容。 處理指令用於提供處理xml文件的應用程式資訊,告訴處理程序應該如何處理該文件。一個完整的xml文件的處理程序,可以讀取xml文件的處理指令,並根據處理指令進行對應處理,或將它傳給下一個程式。 Xml處理指令的格式如下: 33938d2881bd17007e88e1a61bd5c2d5 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 |
注意:
必須具有根標記且根標記必須唯一
開始標記和結束標記需配對使用
標記不能交錯使用
空標記可寫成「3034a9e9e397997b730cdf5fabb04405」的形式
標記對大小寫敏感
#以上就是瘋狂XML學習筆記(2)--------- ----格式要求的內容,更多相關內容請關注PHP中文網(www.php.cn)!