xml 筆記:(一)
阿新 • • 發佈:2019-01-06
xml簡介:
eXtensible Markup Language 簡寫 xml(可擴充套件標記型語言)
xml語言是具有結構性的標記語言, 可以靈活的儲存一對多的資料關係。
xml用途:
可以用於顯示資料
儲存資料(主要功能)
xml檔案組成部分
- 文件宣告
什麼是文件宣告?-
在編寫文件時,需要先使用文件宣告xml文件。且必須出現文件的第一行。是個硬性規定。
<?xml version='1.0' encoding='UTF-8'?><!--xml 表示標籤的名字 version 當前檔案版本號 encoding 當前編碼 standalone 標記此文件是否獨立 例如 standalone="yes" 或者no-->
-
- 元素
什麼是元素?
-
xml中的元素其實就是一個個的標籤
標籤分為兩種: -
包含標籤體
<person> <name>馮nuo</name> <age>18</age> </person>
-
不包含標籤體
<person name="馮nuo" age = "18" />
標籤書寫規範
-
嚴格區分大小寫;
-
只能以字母或下劃線開頭;abc _abc
-
不能以xml(或XML、Xml等)開頭
-
名稱字元之間不能有空格或製表符;
-
名稱字元之間不能使用冒號 :
元素屬性
注意事項: -
一個元素可以有多個屬性,每個屬性都有它自己的名稱和取值。
-
屬性值一定要用引號(單引號或雙引號)引起來。
-
屬性名稱的命名規範與元素的命名規範相同
-
元素中的屬性是不允許重複的
-
在XML技術中,標籤屬性所代表的資訊也可以被改成用子元素的形式來描述
<?xml version="1.0" encoding="UTF-8"?> <persons> <person name="馮nuo" age="18" /> <person> <name>馮nuo</name> <age>18</age> </person> </persons>
-
註釋
格式:- (註釋不能巢狀定義)
-
CDATA區
為什麼要使用CDATA區域?- 如果我們在標籤中寫入的內容, 想要帶有標籤的標記符號的話, 就需要對這段內容進行轉義
寫法:<![CDATA[ 內容 ]]>
- 如果我們在標籤中寫入的內容, 想要帶有標籤的標記符號的話, 就需要對這段內容進行轉義
-
特殊字元
-
PI指令(處理指令)
<?xml-stylesheet type="text/css" href="css的路徑"?>
可以在xml設定樣式注意:設定樣式,只能對英文標籤名稱起作用,對於中文的標籤名稱不起作用的。
xml的約束
為什麼需要約束
- 打個比方,一個檔案中儲存的是個關於人的相關資訊,在沒有約束的情況下可定義非人類屬性特徵的資訊,在編譯的時候不會報錯,但不符合常理,xml的標籤是自定義的,需要技術來規定xml中只能出現的元素,這個時候需要約束。
- xml約束技術:dtd約束 schema約束
DTD
什麼是DTD?
- DTD(Document Type Definition),文件型別定義,用來約束XML文件。例如要求xml文件的根元素必須是,在元素下可以包含0~n個元素,每個元素必須有一個number屬性,而且還要有三個子元素,分別為、、,這三個子元素的內容必須為文字內容,而不能是子元素。
程式碼:
<!-- persons元素中可以包含1~n個student元素 -->
<!ELEMENT persons (student+)>
<!-- person元素中必須包含name、age、sex元素,而且順序也是固定的 -->
<!ELEMENT person (name,age,sex)>
<!-- name元素內容為文字,即字串 -->
<!ELEMENT name (#PCDATA)>
<!-- age元素內容為文字 -->
<!ELEMENT age (#PCDATA)>
<!-- sex元素內容為文字 -->
<!ELEMENT sex (#PCDATA)>
xml檔案中引入DTD檔案:
格式: <!DOCTYPE persons SYSTEM "路徑名"> (以上文person為例)
引入了寫好的DTD檔案後,格式就必須跟DTD檔案保持一致。
語法細節
在DTD文件中宣告xml元素使用ELEMENT關鍵字
語法: <!ELEMENT 元素名稱 使用規則>
使用規則:
(#PCDATA):只元素的主體內容只能是普通的文字
EMPTY:用於指示元素的主體為空
ANY:用於指示元素的主體內容為任意型別。
(子元素):指示元素中包含的子元素
定義子元素及描述他們的關係:
1.如果子元素用逗號分開,說明必須按照宣告順序去編寫XML文件。
2.如果子元素用"|"分開,說明任選其一。
3.用+、*、?來表示元素出現的次數
如果元素後面沒有+*?:表示必須且只能出現一次
+:表示至少出現一次,一次或多次
*:表示可有可無,零次、一次或多次
?:表示可以有也可以無,有的話只能有一次。零次或一次
在xml文件中指定內部DTD
還是以人類為例程式碼演示
<?xml version="1.0" encoding="utf-8" standalone="no" ?>
<!DOCTYPE persons [
<!ELEMENT persons (person+)>
<!ELEMENT person (name, age, sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
]>
<persons>
<person>
<name>馮nuo</name>
<age>18</age>
<sex>nan</sex>
</person>
</persons>
在XML文件中指定外部公共DTD
格式:
<!DOCTYPE 根元素 PUBLIC "DTD名稱" "DTD網址">
DTD屬性定義
在DTD文件中使用ATTLIST關鍵字來為一個元素宣告屬性
屬性定義格式:
<ATTLIST 元素名
屬性名1 屬性值型別 設定說明
屬性名2 屬性值型別 設定說明
…………
>
屬性型別:
- CDATA : 屬性值為任意文字資料
- Enumerated :屬性值必須是列舉列表中的一個
- ID : 屬性值必須是唯一的,並且屬性值不能以數字開頭
設定說明- #REQUIRED:表示該屬性必須出現
- #IMPLIED: 表示該屬性可有可無
- #FIXED:表示屬性的取值為一個固定元值。語法 #FIXRD"固定值"
直接值:表示屬性的取值為該預設值