1: 概述數據庫
1.1 什麼是XML瀏覽器
1.2 三個重點網絡
1.3規則佈局
1.4 經常使用轉義this
2: Xml聲明編碼
XML 中,空格會被保留spa
3:Xml標籤對象
4:Xml元素utf-8
1: 概述
1.1 什麼是XML
XML指可擴展標記語言。它是從標準通用標記語言派生的基於文本的標記語言(SGML).
1.2 三個重點
XML是可擴展的: XML容許你建立本身的自描述性的標籤,或語言,適合您的應用程序.
XML進行數據 : 不存在它:XML容許你不管存儲將如何呈現這些數據.
XML是一個公共標準 : XML是由一個組織開發的名爲萬維網聯盟(W3C),並能夠做爲一個開放的標準.
1.3規則
基本語法:
1. xml文檔的後綴名 .xml
2. xml第一行必須定義爲文檔聲明
3. xml文檔中有且僅有一個根標籤
4. 屬性值必須使用引號(單雙均可)引發來
5. 標籤必須正確關閉
6. xml標籤名稱區分大小寫 (標籤 屬性)
7. xml只容許只有一個根(Root)標籤
8. xml標籤的屬性也是區分大小寫的
1.4 經常使用轉義
2: Xml聲明
xml分爲兩個部分, xml聲明 xml標籤
版本:
編碼
是否依賴於信息從外部源,諸如外部的文檔類型定義(DTD)的語法分析程序,其內容。默認值被設置爲無。將其設置爲yes告訴處理器有須要解析的文件沒有外部聲明
yes no
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
xml註釋:
<!-- -->
XML 中,空格會被保留
Hello Tove ====>轉換爲 Hello Tove
XML 以 LF 存儲換行
在 Windows 應用程序中,換行一般以一對字符來存儲:回車符(CR)和換行符(LF)。
在 Unix 和 Mac OSX 中,使用 LF 來存儲新行。
3:Xml標籤
完整閉合標籤
<address>這是正確的句法</address>
空標籤
<hr></hr> #或者 <hr/>
4:Xml元素
能夠包含一個或者多個元素,這些元素容許兩種不一樣的賦值方法
<?xml version="1.0" encoding="UTF-8"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
5:XML 屬性
屬性必須加引號
<person sex="female"> 或者這樣也能夠: <person sex='female'>
多個屬性
<person name="tom" sex="female">
儘可能使用元素代替屬性
屬性不能包含多個值(元素能夠)
屬性不能包含樹結構(元素能夠)
屬性不容易擴展(爲將來的變化)
數據庫中用於標識某個元組
使用id表示某一組數據
<?xml version="1.0" encoding="utf-8"?> <messages> <note id="501"> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> </messages>
6:驗證XML
DTD驗證
本地驗證: <!DOCTYPE note SYSTEM "Note.dtd">
網絡驗證:<!DOCTYPE note PUBLIC "URL">
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE note SYSTEM "Note.dtd"> // 指定驗證的文件 <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
schema驗證
XSD:描述
7:最佳命名習慣
使名稱具備描述性。使用下劃線的名稱也很不錯:<first_name>、<last_name>。
名稱應簡短和簡單,好比:<book_title>,而不是:<the_title_of_the_book>。
避免 "-" 字符。若是您按照這樣的方式進行命名:"first-name",一些軟件會認爲您想要從 first 裏邊減去 name。
避免 "." 字符。若是您按照這樣的方式進行命名:"first.name",一些軟件會認爲 "name" 是對象 "first" 的屬性。
避免 ":" 字符。冒號會被轉換爲命名空間來使用(稍後介紹)。
顯示XML
使用CSS
使用XLAT
8:XML進階
XML命名空間
xmlns:f="http://www.w3cschool.cc/furniture" f就是指定的命名空間
Android中 佈局標籤就是使用的這種命名空間
CDATA數據
對於某些數據須要直接按照文本形式處理的 如@lt @gt 就不會處理
<![CDATA[ if (a < b && a < 0) then 具體數據 ]]>
XML 數據島
XML 數據島是嵌入到 HTML 頁面中的 XML 數據。
XML 數據島只在 Internet Explorer 瀏覽器中有效。
定義: 文檔類型定義(DTD)可定義合法的XML文檔構建模塊。它使用一系列合法的元素來定義文檔的結構。
PCDATA:
PCDATA 的意思是被解析的字符數據(parsed character data)。
可把字符數據想象爲 XML 元素的開始標籤與結束標籤之間的文本。
PCDATA 是會被解析器解析的文本。這些文本將被解析器檢查實體以及標記。
CDATA:
CDATA 是不會被解析器解析的文本。在這些文本中的標籤不會被看成標記來對待,其中的實體也不會被展開。
XML外部 內部:
<!DOCTYPE tglib SYSTEM "URL|本地路徑">
<!DOCTYOE tglib PUBLICK "URL"> // 聲明爲公共的DTD文件
1: 基本使用
聲明DTD開始部分
<!DOCTYPE DTDNAME [ <!-- 具體的元素 屬性 實體--> ]>
2:聲明元素
空元素
<! ELEMENT name EMPTY> # 實例 <!ELEMENT br EMPTY> <by/>
多個元素
含有多個元素的元素,子元素必須連續聲明
<!ELEMENT name (att1,att2) # 實例 <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>
PCDATA元素(能夠被解析爲元素的)
<!ELEMENT name (#PCDATA)> # 實例 <!ELEMENT body (#PCDATA)>
帶有任何內容的元素
<!ELEMENT name ANY> # 實例 <!ELEMENT body ANY>
聲明只出現一次的元素
<!ELEMENT element-name (child-name)> # 實例: <!ELEMENT note (message)>
聲明最少出現一次的元素 +
<!ELEMENT element-name (child-name+)> # 實例: <!ELEMENT note (message+)>
聲明出現零次或屢次的元素 *
<!ELEMENT element-name (child-name*)> # 實例: <!ELEMENT note (message*)>
聲明出現零次或一次的元素 ?
<!ELEMENT element-name (child-name?)> # 實例: <!ELEMENT note (message?)>
聲明 |可選內容
實例: <!ELEMENT note (message|body)>
聲明混合型的內容
實例: <!ELEMENT note (#PCDATA|to|from|header|message)*>
3 xml屬性
格式
<!ATTLIST elename attname type value> # 元素名 屬性名 類型 屬性值 # 實例 <!ATTLIST User name CDATA " "> # 這個" " 能夠不給 能夠給限定值 #REQUIRED #FIXED #IMPLIED
提供的類型
類型 |
描述 |
CDATA |
值爲字符數據 (character data) |
(en1|en2|..) |
此值是枚舉列表中的一個值 |
ID |
值爲惟一的 id |
IDREF |
值爲另一個元素的 id |
IDREFS |
值爲其餘 id 的列表 |
NMTOKEN |
值爲合法的 XML 名稱 |
NMTOKENS |
值爲合法的 XML 名稱的列表 |
ENTITY |
值是一個實體 |
ENTITIES |
值是一個實體列表 |
NOTATION |
此值是符號的名稱 |
xml: |
值是一個預約義的 XML 值 |
提供的屬性
值 |
解釋 |
值 |
屬性的默認值 |
#REQUIRED |
屬性值是必需的 |
#IMPLIED |
屬性不是必需的 |
#FIXED value |
屬性值是固定的 |
完整例子
<!ELEMENT Address EMPTY> <!ATTLIST Address street CDATA "" > # 應用 <Address street="幸福大街" />
強制要求值 可選 固定值
<!ELEMENT Address EMPTY> <!ATTLIST Address street CDATA #REQUIRED > //那street 這個屬性必須給出 # 實例 <Address street='xxx'/> <!ATTLIST Address street CDATA #FIXED "必須給出固定的值"> // <!ATTLIST Address street CDATA #IMPLIED > //可選
列舉屬性值
DTD: <!ATTLIST payment type (check|cash) "cash"> # XML 例子: <payment type="check" /> 或 <payment type="cash" />
指定ID IDREF
<!ATTLIST User id ID #REQUIRED > // # <User id="101"/> <!ATTLIST User2 id IDREF #REQUIRED> <User2 id="101"> // 引用別人的ID值 <User2 id="101 102 103"> // 表示引用多個ID值
4:xml實體
定義
<!ENTITY entity-name value> # 實例 <!ENTITY name1 "tom"> <!ENTITY name2 "gory"> # 應用 <author>@name1;@name2</author>