第一章什麼是xml 電腦里的數據文件分為倆大類,二進位文件和文本文件。 二進位文件是一個比特流(1或0系列),只有創建二進位的應用程式才會理解這個比特流的實際含義。 文本文件也是比特流,文本文件里的比特流是以一種標準格式組織起來的,因此他們總是組成一個個數,每個數再映射為字元。 標記語言的簡史 探
第一章什麼是xml
電腦里的數據文件分為倆大類,二進位文件和文本文件。
二進位文件是一個比特流(1或0系列),只有創建二進位的應用程式才會理解這個比特流的實際含義。
文本文件也是比特流,文本文件里的比特流是以一種標準格式組織起來的,因此他們總是組成一個個數,每個數再映射為字元。
標記語言的簡史
探索一種在各個不同電腦程式間可以交換數據的方法,最早的標記語言為SGML.==>其後出現了HTML.
XML是SGML的一個子集,XML語言和SGML完全相容。
對於相同數據,XML 文檔遠大於純文本文件。用XML標記數據回增加文件的大小,有事這種增加是巨大的,生成小文件不是xml的目標,它的唯一目標是把數據結構化,是的開發人員很容易根據數據的結構訪問數據。
XML本身對數據不能完成任何操作,必須使用一宗叫做解析器導入軟體來處理數據。XML的中點是如何表示數據。
1.2使用XML 的好處
易攜帶傳輸,XML不依賴特殊軟體、易於共用和跨平臺,xml本身是文本文件,而且是結構化數據,很容易被各個系統讀取。XML樹狀結構,易於查詢。
1.3XML語法
每個開始標記必須有結束標記
一個xml文檔只能只有一個根元素
xml元素必須正確嵌套
屬性值必須加引號
一個元素不能有相同的屬性
----------------------
xml元素是xml文檔的基本單位。
在起始標記和結束標記之間的內容,稱為xml元素的內容,比如woyouxian就是元素<site>woyouxian</site>的內容
如果xml元素沒有內容,稱為空元素。空元素有一種特殊寫法,比如<site/>
xml文檔是區分大小寫的。xml文檔是樹狀結構,只有一個根元素,其他元素是根元素的後代。
xml元素之間的關係有:子節點,父節點,併列節點又稱為兄弟姐妹節點。
通常來說,xml屬性採用雙引號,也可以使用單引號。如果屬性值中包含雙引號,就用單引號。如果屬性值中包含單引號,就用雙引號。
xml中沒有硬性規定哪些數據應該使用元素或者是屬性,倆種寫法都會正確的。
通常來說,元數據(描述數據的數據)應該使用屬性,數據本身應該使用元素。
1.3xml名稱命名規則
不能以數字或標點符號開頭
不能以xml開頭
xml名稱不能含有空格
xml開頭不能用連接符。句號。冒號。這是xml命名空間的保留符號。
xml實體引用
在 XML 中,有 5 個預定義的實體引用:
註釋:在 XML 中,只有字元 "<" 和 "&" 確實是非法的。大於號是合法的,但是用實體引用來代替它是一個好習慣。
如果你要輸入的文檔中含有很多的字元“<”或者是&,要將所有的都替換很麻煩,可以使用CDATA區(CDATAsection)。在此區域內,xml解析器不會解析CDATA曲內的內容。
CDATA區以<![CDATA[開始,以]]>結束
註意:在CDATA區域內,不能出現]]>.
xml註釋以<!--開頭,和以-->結束。
XML聲明
xml文檔應該以xml聲明開始,不過不會必須的。如果要寫聲明,必須放在第一行。
xml文檔聲明主要有三個參數:
版本(version)
版本表示遵循的是W3C的xml1.0的標準
字元編碼(encoding)
字元編碼表示xml文檔使用的字元的編碼方式。一些英文文檔的xml文檔,你會看到他們使用的hi單位元組的ISO-8859-1編碼,不過對於中文文檔來說,應該使用雙位元組的UTF-8或者Unicode
如果是含有非英語字元的xml文檔,你學要將xml文檔村委UTF-8或者Unicode()
獨立(standalone)
如果xml standalone的值是no,表示它需要DTD
不需要DTD的xml文檔,standalone值應該寫為yes。
xml命名空間
xml命名空間標準的原先目的是為瞭解決xml文檔中命名衝突的問題。由於xml文中的命名是預定義的,當倆個不同的文檔中 使用相同的元素名稱時,就會發生 衝突。
命名空間通過給標識名稱添加一個(URL)定位的方法來區別這些名稱相同的標識、
命名空間是使用xmlns:屬性在元素上聲明的,此屬性的值就是標識該命名空間的URL....命名空間語法:xmlns:<name>=<"uri">,NAME是命名空間首碼的名稱,uri是說明命名空間URi的字元串。
一旦聲明後首碼就可以用限定xml文檔中的元素和屬性並將它們與明敏空間URI關聯。
<mybook:BOOK xmlns:mybook="http:........"> <bb:BOOK xmlns:bb="urn:blue....">
如果文檔中存在Publisher元素,並且已經為該元素聲明瞭命名空間,則在Pbulisher元素需要用冒號將命名空間別名添加到該元素前面、
如果要聲明並使用預設命名空間,請從元素的聲明中省略別名和分號。
<BOOK xmlns="http:......">
任何沒有用命名空間首碼完全限定的元素均屬於預設命名空間。預設命名空間只實用與元素,不適用屬性。命名空間聲明有範圍,命名空間只在相應的範圍內有效,有倆種範圍:預設範圍和限定範圍。
預設命名空間是在根元素中聲明的命名空間。它應用於文檔中所有未限定的元素。
限定命名空間在一個更具體的命名空間在文檔中某一位置重寫時聲明的。
命名空間聲明後才可以使用,但並不一定要在文檔的開頭。
1.4DTD 和XML Schema
DTD(Document Type Definition)文檔類型定義,是一套關於標記符的語法規則。它是xml1.0 的一部分,是xml文件的驗證機制,屬於文件組成的一部分。
DTD 是保證xml文檔格式正確地有效方法。
DTD 文檔包括:元素的定義規則,元素間關係的定義規則,元素可使用的屬性,可使用的實體或符號規則、
xml文檔提供應用程式一個數據交換的格式,而DTD正好是讓XML文件能能夠稱為數據交換的標準、因為不同的公司只需要定義好標準的DTD,各公司都能夠依照DTD建立xml文件並且進行驗證,如此就可以輕易的建立標準和交換數據,這樣便滿足了網路共用和
數據交互。
DTD是一個ASCII 的文本文件,尾碼名為.dtd。每一個xml文檔都可以攜帶一個DTD.用來對該文檔格式進行描述。測試該文檔是否為有效的xml文檔。
xml Schema已經成為w3c的正式推薦標準,有替代xml DTD趨勢。xml Schema功能和DTD相似,但其本身是一個xml文檔,符合xml語法結構,可以通過xml解析器解析。
xml Schema就好像database中對錶的定義一樣,,而關聯的這個xml Schema的xml就好像資料庫中的數據。它必須滿足表所定義的規則、
1.5解析xml文檔
xml除了保存信息外本身不能做任何事情,你需要處理xml數據,用於處理xml文檔的軟體稱之為解析器。xml解析器可以讓你讀寫操作xml文檔。
取決於他們如何處理xml文檔,在程式中範文並咋偶哦xml文件一般有倆種模型:流模型和DOM 模型(文檔對象模型)。
流模型中有倆種辯題-推模型和拉模型,推模型也就是常說的SAX(簡單的XML API),SAX是一種靠事件驅動的模型。
1DOM
2SAX
1.6XPath介紹
xml是從xml中派生出來的技術,專門用於快速檢索和查詢xml文檔、XPah是XSLT技術的基礎、支持跨平臺、XPath理解時可以參考目錄結構FilePath()
1.7XSLT介紹
是一種將xml溫江轉換為其他文本文檔的語言。是建立在xml和xpath之上的國際標準。