XML文件結構和基本語法

XML文件的結構性內容,包括節點關系以及屬性內容等等。
元素是組成XML的最基本的單位,它由開始標記,屬性和結束標記組成。
就是一個元素的例子,每個元素必須有一個元素名,元素可以若干個屬性以及屬性值。
 xml文件和html文件一樣,實際上是一個文本文件。顯然大家立刻就會明白,創建xml文件最普通的工具和html一樣,就是“記事本”了。
一個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字符碼(建議不要省略)。
  文件的其余部分都是屬于文件主體,xml文件的內容信息存放在此。我們可以看到,文件主體是由開始的〈參考資料〉和結束的〈/參考資料〉控制標記組成,這 個稱為xml文件的“根元素”;〈書籍〉是作為直屬于根元素下的“子元素”;在〈書籍〉下又有〈名稱〉、〈作者〉、〈價格〉這些子元素。貨幣單位是〈價 格〉元素中的一個“屬性”,“人民幣”則是“屬性值”。元素與屬性的關系如圖1。
  〈!--此書即將出版--〉這一句同html一樣,是注釋,在xml文件里,注釋部分是放在“〈!--”與“--〉”標記之間的部分。
  大家可以看到,xml文件是相當簡單的。同html一樣,xml文件也是由一系列的標記組成,不過,xml文件中的標記是我們自定義的標記,具有明確的含義,我們可以對標記中的內容的含義作出說明。
xml文件的語法
  對xml文件有了初步的印象之后,我們就來詳細地談一談xml文件的語法。在講語法之前,我們必須要了解一個重要的概念,就是xml解析器(xml parse)。
1. xml解析器
  解析器的主要功能就是檢查xml文件是否有結構上的錯誤,剝離xml文件中的標記,讀出正確的內容,以交給下一步的應用程序處理。xml是一種用來結構化文件信息的標記語言,xml規范中對于如何標記文件的結構性有一個詳細的法則,解析器就是根據這些法則寫出來的軟件(多用java寫成)。
2. well-formed的xml文件
  我們知道,xml必須是well-formed的,才能夠被解析器正確地解析出來,顯示在瀏覽器中。那么什么是well-formed的xml文件呢?主要有下面幾個準則,我們在創建xml文件的時候,必須滿足它們。
  首先,xml文件的第一行必須是聲明該文件是xml文件以及它所使用的xml規范版本。在文件的前面不能夠有其它元素或者注釋。
  第二,在xml文件中有且只能夠有一個根元素。我們的第一個例子中,〈參考資料〉... 〈/參考資料〉就是此xml文件的根元素。
xml文件中,用的大多都是自定義的標記。
   第三,在xml文件中的標記必須正確地關閉,也就是說,在xml文件中,控制標記必 須有與之對應的結束標記。如:〈名稱〉標記必須有對應的〈/名稱〉結束標記,不像html,某些標記的結束標記可有可無。如果在xml文件中遇到自成一個 單元的標記,就是類似于html 中的〈img src=.....〉的這些沒有結束標記的時候,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是大寫的字符)。

1??XML?的聲明

<?xml?version=”1.0”?standalone=”yes”?encoding=”UTF-8”?>


??? 這是一個XML處理指令。處理指令以?<??開始,以??>?結束。<??后的第一個單詞是指令名,如xml,?代表XML聲明。
??? version, standalone, encoding?是三個特性,特性是由等號分開的名稱-數值對,等號左邊是特性名稱,等號右邊是特性的值,用引號引起來。

幾點解釋:

  • version:?說明這個文檔符合1.0規范
  • standalone:?說明文檔在這一個文件里還是需要從外部導入, standalone?的值設為yes?說明所有的文檔都在這一文件里完成?
  • encoding:?指文檔字符編碼


2??
XML?根元素定義

XML文檔的樹形結構要求必須有一個根元素。根元素的起始標記要放在所有其它元素起始標記之前,根元素的結束標記根放在其它所有元素的結束標記之后,如

?

<?xml?version=”1.0”?standalone=”yes”?encoding=”UTF-8”?>
<Settings>
<Person>Zhang?San</Person>
</Settings>

?


3??
XML元素

元素的基本結構由?開始標記,數據內容,結束標記組成,如

<Person>
??<Name>Zhang?San</Name>
??<Sex>Male</Sex>
</Person>


需要注意的是:

  • 元素標記區分大小寫,<Name>?與?<name>是兩個不同的標記
  • 結束標記必須有反斜杠,如?</Name>

XML元素標記命名規則如下:

  • 名字中可以包含字母,數字及其它字母
  • 名字不能以數字或下劃線開頭
  • 名字不能用xml開頭
  • 名字中不能包含空格和冒號


4??
XML中的注釋

XML中注釋如下:

<!--?this?is?comment?-->


需要注意的是:

  • 注釋中不要出現“--”或“-”
  • 注釋不要放在標記中
  • 注釋不能嵌套?


5??PI ?(Processing Instruction)
PI?指?Processing Instruction,?處理指令。PI以“<?”開頭,以“?>”結束,用來給下游的文檔傳遞信息。

<?xml:stylesheet?href=”core.css”?type=”text/css”??>


例子表明這個XML文檔用core.css控制顯示。

?


6??
PCDATA?
? #PCDATA
:?specifies that an element will contain parsed character data.
? 舉例說明PCDATA的用法,?其中movies.xml?存儲電影內容數據,movies.dtd對movies.xml進行驗證。

示例文件(movies.dtd)

<?xml?version="1.0"?encoding="GB2312"?>
<!ELEMENT?movies?(id,?name,?brief,?time)>
<!ATTLIST?movies?type?CDATA?#REQUIRED>
<!ELEMENT?id?(#PCDATA)>
<!ELEMENT?name?(#PCDATA)>
<!ELEMENT?brief?(#PCDATA)>
<!ELEMENT?time?(#PCDATA)>

id, name, brief, time只能包含非標記文本(不能有自己的子元素)。


XML文件如下所示(movies.xml):

<?xml?version="1.0"?encoding="GB2312"?>
<!DOCTYPE?movies?SYSTEM?"movies.dtd">
<movies?type="動作片">
????<id>1</id>
????<name>致命搖籃</name>
????<brief>李連杰最新力作</brief>
????<time>2003</time>
</movies>

?
7??
CDATA

CDATA用于需要把整段文本解釋成純字符數據而不是標記的情況。當一些文本中包含很多“<”,“>”,“&”,“””等字符而非標記時,CDATA會非常有用。

<Example>
<![CDATA[
??<Person>
??????<Name>ZhangSan</Name>
??????<Sex>Male</Sex>
??</Person>
]]>
</Example>


以“<![CDATA[” 開始,以“]]>”結束。注意,在CDATA段中不要出現結束定界符“]]>”。


8??
Entities(實體)
Entities(實體)是XML的存儲單元,一個實體可以是字符串,文件,數據庫記錄等。實體的用處主要是為了避免在文檔中重復輸入,我們可以為一個文檔定義一個實體名,然后在文檔里引用實體名來代替這個文檔,XML解析文檔時,實體名會被替換成相應的文檔。

XML為五個字符定義了實體名:

?

實體

字符

&lt;

<?

&gt;

>?

&amp;

&

&quot;

&apos;

?

?
定義并引用實體的示例:

<!DOCTYPE?example?[
??<!ENTITY?intro?"Here?is?some?comment?for?entity?of?XML">
]>
<example>
????<hello>&intro;</hello>
</example>


9??DOCTYPE?
“<!DOCTYPE[]>”緊隨XML聲明,包括所有實體的聲明,如下所示:

<!DOCTYPE?example?[
??declare?your?entities?here…
]>
<example>
????Body?of?document…
</example>

轉載于:https://www.cnblogs.com/klb561/p/9196515.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538453.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538453.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538453.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python表格數據分類聚合_3-python數據分析-pandas高級操作之替換、映射、隨機抽樣、分組、高級數據聚合、數據加載、透視表、交叉表...

3-python數據分析-pandas高級操作之替換、映射、隨機抽樣、分組、高級數據聚合、數據加載、透視表、交叉表替換操作 replace替換操作可以同步作用于Series和DataFrame中單值替換普通替換&#xff1a; 替換所有符合要求的元素:to_replace15,value’e’按列指定單值替換&#xff…

oracle-SQL-case when 改用 DECODE

SELECT CASE FLOOR_LINE_ID WHEN 1 THEN 高鐵 WHEN 2 THEN 高速 WHEN 3 THEN 公路 WHEN 5 THEN 地鐵 ELSE 其他 END AS LINE_NAME, FLOOR_LINE_ID FROM ( SELECT FLOOR(LINE_ID/100) AS FLOOR_LINE_ID FROM DT4_LINE_NAME ) 改…

lcp mysql cluster_Mysql Cluster 非root用戶啟動ndbd節點報錯

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓1.配置文件&#xff0c;如下&#xff1a;[rootcent178 ~]# ls -lart /etc/my.cnf-rw-rw-r-- 1 mysql mysql 3055 Oct 31 17:29 /etc/my.cnf2.集群數據存儲文件夾&#xff0c;如下&#xff1a;[rootcent178 ~]# ls -lart /var/lib/m…

fatal: Could not read from remote repository.的解決辦法

原文地址&#xff1a;http://blog.csdn.net/huahua78/article/details/52330792 --------------------------------------------------------------------------------- 查看遠端地址 git remote –v 查看配置 git config --list git status git add . // 暫存所有的更改git…

python中mako中loop_python中Mako庫實例用法

Mako是一個模板庫。一種嵌入式的語言&#xff0c;能夠實現簡化組件布局以及繼承&#xff0c;主要的用途也是和作用域有關&#xff0c;但是效果是最直接切靈活的&#xff0c;這些都是mako的基本功能&#xff0c;掌握了基礎內容&#xff0c;接下來就是詳細的了解講述&#xff0c;…

springmvc是什么_SpringBoot與SpringMVC的區別是什么?

簡單的來說&#xff1a;SpringMVC和SpringBoot都是Spring家族的重要成員。Spring家族的使命就是為了簡化而生。SpringMVC簡化我們日常Web開發的&#xff0c;后來隨著自身的發展&#xff0c;SpringMVC變得臃腫復雜&#xff0c;而SpringBoot則進一步簡化了SpringMVC開發。SpringM…

git 上傳代碼到碼云

與碼云建立連接教程&#xff1a;http://blog.csdn.net/zengmingen/article/details/76045076 如果完成了上面步驟的&#xff0c;且有了git。上傳項目步驟&#xff1a; 代碼提交 代碼提交一般有五個步驟&#xff1a; 1.查看目前代碼的修改狀態 2.查看代碼修改內容 3.暫存需要提交…

你不知道的js中關于this綁定機制的解析[看完還不懂算我輸]

前言 最近正在看《你不知道的JavaScript》&#xff0c;里面關于this綁定機制的部分講的特別好&#xff0c;很清晰&#xff0c;這部分對我們js的使用也是相當關鍵的&#xff0c;并且這也是一個面試的高頻考點&#xff0c;所以整理一篇文章分享一下這部分的內容&#xff0c;相信看…

visual studio過期登錄不了賬戶_具有最高管理權限賬戶,Windows 7設置Administrator密碼永不過期...

今天介紹操作系統具有最高管理權限的賬戶&#xff0c;Windows 7如何設置Administrator賬戶密碼永不過期。小伙伴們可能不知道&#xff0c;和Windows Vista操作系統一樣&#xff0c;在Windows 7操作系統中是不能預先使用Administrator這個具有最高管理權限的賬戶的。同時也可能不…

Tomcat安裝與環境變量的配置-Linux+windows

原文鏈接&#xff1a;http://jingyan.baidu.com/article/8065f87fcc0f182330249841.html ------------------------------------------------------------ 1&#xff0c;新建變量名&#xff1a;JAVA_HOME&#xff0c;變量值&#xff1a;C:\Program Files\Java\jdk1.7.0 2&…

python如何讀取配置文件獲取url以及hhead_讀取INI配置文件內容(頭文件head)

/************************************************************FileName: getini.h // 文件名稱Author: yuanfen127 // 作者Date: 2005-03-31 // 日期Description: // 描述本文件的內容,功能,內部各部分之間的關系// 以及文本文件與…

cad隱藏圖層命令快捷鍵_cad快捷鍵f是什么命令?cad中f快捷鍵都有哪些?

1. F1 該功能鍵打開AutoCAD幫助窗口。如果用戶遇到此軟件中的任何功能問題,它可以使用戶在線獲得幫助。如果用戶離線工作,而不是按此鍵,則該軟件的所有功能都將以PDF格式打開。 2. F2 該鍵將打開一個彈出屏幕,在底部顯示命令行。該命令對于在屏幕底部看不到命令窗口的用戶很…

angular2或4部署到tomcat中,讓他跑起來

原文地址&#xff1a;http://blog.csdn.net/rotating_windmill/article/details/76768793 ------------------------------------------------------------------------- 首先使用構建命令(npm run build或ng build)打包&#xff0c;打包完成后項目中會出現一個dist的目錄&…

java 高級編程進階_JAVA高級編程之hibernate進階學習

二級緩存hibernate的session緩存在事務級別進行持久化數據的緩存操作。 當然&#xff0c;也有可能分別為每個類(或集合)&#xff0c;配置集群、或 JVM 級別(SessionFactory 級別)的緩存。你甚至可以為之插入一個集群的緩存。注意&#xff0c;緩存永遠不知道其他應用程序對持久化…

SpringMvc+Tomcat+Angular4 部署運行

這次的團隊開發是&#xff0c;前端開發人員和后臺開發人員完全分開開發的。 前端開發采用了Angular4&#xff0c;webstorm 后端開發采用了&#xff1a;springspringmvcmybatis&#xff0c;eclipse --------------------------------------- 最后要整合了。 1、angular項目編…

python爬蟲本科容易找工作嗎_python爬蟲基礎學完了,我真的能找到一份工作嗎?...

1.能不能找到工作我覺得取決于你技術掌握的程度。2.無論在什么領域&#xff0c;只要你技術到家&#xff0c;都不用愁找不到工作。3.多數人問他們轉行能不能找到工作&#xff0c;是想知道這個崗位需要的人多不多&#xff0c;在爬蟲這個領域&#xff0c;從事這方面的人應該也不少…

jqgrid demo java_java – jqgrid如何顯示服務器端消息

我使用jqGrid以表格格式顯示數據,使用JSP和servlet.編輯我想在執行插入,更新,刪除等操作時顯示來自服務器的錯誤. (數據類型&#xff1a;“xml”)jqGrid的jQuery("#list10_d").jqGrid({height:250,width:600,url:Assignment?actionAssign,datatype: "xml"…

IPv4地址分類及特征

IPv4地址分類及特征 IP地址后斜杠和數字代表的意思 其中有這樣一個IP地址的格式&#xff1a;IP/數字&#xff0c;例如&#xff1a;111.222.111.222/24這種格式平時在內網中用的不多&#xff0c;所以一下子看不懂&#xff0c;最后查了資料才知斜杠后的數字代表的是掩碼的位數 “…

查看Scala編譯的.class文件

Scala是基于JDK運行的&#xff0c;必然會生成Java的字節碼文件.class文件。 如何查看&#xff1f; 編碼IDE&#xff1a;IntelliJ IDEA 2017.2 x64 查看class文件工具&#xff1a;jd-gui scala代碼如下&#xff1a; person.scala package cn.zengmg.day26class Person {val …

python傳文件給堡壘機上遠程的另一個機器_如何用hive調度堡壘機上的python腳本...

工作中&#xff0c;如果我們本地要操作的數據量大&#xff0c;那么主機是跑不起來python腳本的&#xff0c;這個時候&#xff0c;就要用到服務器(也叫堡壘機)了。那么如何用HIVE調用堡壘機上的python腳本呢&#xff1f;今天小白就總結一下步驟和一些注意事項~1.首先將Python腳本…