首頁  >  文章  >  後端開發  >  瘋狂XML學習筆記(2)-------------格式要求

瘋狂XML學習筆記(2)-------------格式要求

黄舟
黄舟原創
2017-02-21 14:04:181507瀏覽

Xml的語法

         一個XML檔案分為以下幾個部分:

     文件宣告

     元素

##–     #屬性

     註解 

# –    

##CDATA

區、特殊字元##–#    

處理指令(

processing instruction

#Xml的宣告

最簡單宣告

 307f197fa35495e5bd15705cfb261526

Encoding屬性

:字元編碼如果沒有指定預設的是

UTF-8編碼

常見的字元集

#簡體中文:GBK GB2312

#繁體中文: BIG5



##西歐字元

:ISO8859-1

#通用的國際編碼

:Unicode  UTF-8

#示範案例:  52b189f45abba88b2989c5c1f30b7a34

5ea5ff172dd6873b4794ab8ce4fe172caa23de8e443e6a8b4df350f9b3828624

造成錯誤的原因是:


編碼的錯誤

#解碼成字元


## 字元集錯誤時的

xml

文件


## ###########################新建是一個###.txt###文件########### #儲存的是###.xml UTF-8###############預設的編碼###ANSI###############中國##############################################寫入到硬碟# ###########編碼成二進位碼############00 11##################### ########################磁碟檔案##################

 

Standalone:指定該文件是否需要引用其它資源,屬性值只有:yesno

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標籤語法:

#  1Xml的標籤分為兩大類:

     單一標記:75df3bc0933eb1466169adff9f61cb4a     雙重標記:bd06f8065ce1eef9c9844947696287dd11bfd96ba6181963b533dadf1da5c708

  2xml#標籤的要求:

      1

、標籤名可以有字母(包含非西歐字元)、數字、底線(_)、中劃線

(-)

、冒號(:)和點號(.)組成,但不能以數字、中劃線和點號開頭。

2、標籤名稱不能包含1d6a4d0909ce72b18ded9eafd07426c2

、,、$等符號

######3###、標籤名種盡量不要出現英文的冒號###(:),###除非在使用命名空間。 ###############4###、標籤名稱不能以字元###xml###、###XML###等任意大小寫組合開始。 ###############5###、標籤名稱不能包含空格。 ###############6###、標籤名稱區分大小寫#######

3xml標籤嵌套子元素:xml允許深度嵌套子元素,只要保證元素之間合理的嵌套即可.而且xml元素可以嵌套多個重名的子元素,這多個子元素之間是有序的。

    第一個:xml

2505bfe64a5819d2bd657aea2cd57db8

 a67540303f5970af595935922c8397d0

##     32dd8153c06a0e1afb9588e3bad8e1a7

     64bbe2a22322e9a2aa09ca25a3775632f68898d7b16bb89fcbde4eec2b3f2420

     64bbe2a22322e9a2aa09ca25a37756325898934bcce4e55364593a87f027fdcb

 c384be263bf01c9542f9f672065bcb58

11bfd96ba6181963b533dadf1da5c708

  第二個xml

bd06f8065ce1eef9c9844947696287dd

# 6421cd2372e8f2d89c0890b9027ad0b3

##     ab0b5d9d2ead0e5b2bfefa2b9e5fa9c634b94a401b7feda4c5937ef6d887e004

##     ab0b5d9d2ead0e5b2bfefa2b9e5fa9c634b94a401b7feda4c5937ef6d887e004

##    a8ef5bfa1d55e06cc1ca97b75025c32c

 c384be263bf01c9542f9f672065bcb58

##f15c16b824183de37367a4fb4fd3c5c8

##########4###、空元素:空元素不可接受子元素## #,###也不可以接受字串內容。 ###############     ###第三個###xml###:############      463aef0d2da08708f472268a99530dbe#########      463aef0d2da08708f472268a99530dbe#########      463aef0d2da08708f472268a99530dbe#########      463aef0d2da08708f472268a99530dbe##### #######         8a11bc632ea32a57b3e3693c7987c420redarmydf406f776eecbaf16b62325323196f14###############         54abd77ca31b4ff2657c9b0edc0cea18############    463aef0d2da08708f472268a99530dbe#############    463aef0d2da08708f472268a99530dbe#############    463aef0d2da08708f472268a99530dbe########### #         8a11bc632ea32a57b3e3693c7987c420redarmydf406f776eecbaf16b62325323196f14###############         b589d893b57b86314aa1904b5daea784 ###########      0f6fa65eb6c7f3ed4374d12bf4ac01bd#############例如空白元素接受屬性:######

  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文檔

並且遵守了dtdschema就是一個有效的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


………


######################################################################## ################computer###################


name


#author

 

注意:

必須具有根標記且根標記必須唯一

開始標記和結束標記需配對使用

標記不能交錯使用

空標記可寫成「3034a9e9e397997b730cdf5fabb04405」的形式

標記對大小寫敏感

#以上就是瘋狂XML學習筆記(2)--------- ----格式要求的內容,更多相關內容請關注PHP中文網(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn