1. 程式人生 > >Xml-DTD和Schema

Xml-DTD和Schema

定義:XML是一種資料傳輸和儲存格式,用標籤儲存資料內容,利用標籤巢狀關係儲存資料之間關係
應用場景:不同平臺間資料傳輸、程式配置檔案
存在形式:XML檔案、也存在記憶體或網路中,不要把XML狹隘理解為XML檔案
校驗:瀏覽器內建Html和XML解析器,可以校驗xml是否正確

一、XML語法


1、宣告或處理指令PI(processing instruction),指定解析器如何解析顯示XML文件
    ①宣告前不能有任何內容(如註釋)
        <?xml version="1.0" encoding="utf-8" standalone="yes"?>
version必須存在,當前xml所遵循規範版本1.0 encoding指定xml解析編碼,必須和xml檔案儲存編碼一致,預設值iso8859-1(歐美拉丁字母符號,沒有中文) standalone指明xml是否獨立,預設值yes表明不依賴其他文件,no表明依賴其他文件(很多解析器都會忽略此屬性) ②處理指令PI <?xml-stylesheet type="text/css" href="xxx.css"?>為XML指定樣式css顯示 2、元素(xml標籤) 只能包含一個根標籤 一個元素分為開始和結束標籤<a
>
xxx</a>,其間有文字內容(標籤體) 一個元素不含任何內容為自閉標籤<a/> 區分大小寫如<A><a>是不同標記 命名不能以數字、標點符號、"_"、"xml"開頭,不能包含空格、冒號 3、一個元素可以有多個屬性,屬性值用單引號或雙引號<a size="xxx" color="xxx"/>,屬性名遵循元素命名規則 4、<!-- 註釋內容 -->,除了宣告前外可在任意位置、不能巢狀註釋 5、轉義字元/CDATA,可以使解析器將轉義內容當作普通文字來處理 ①轉義字元 &: &amp; <:
&lt; >
: &gt; ": &quot; ': &apos; ②<![CDATA[內容]]> 被括起來的內容,會被瀏覽器當作普通文字來處理 區別: CDATA可以成段的進行轉義,而轉義字元一次只能轉義一個字元 CDATA可以儲存原始資料,只通知解析器按普通文字去處理 轉義字元改變了原始資料,用其他字元替代

二、XML約束

1、DTD是XML約束檔案(.dtd),約束xml寫法,並對xml校驗


①外部引入,在外部檔案中寫DTD,必須用utf-8編碼儲存
    <!DOCTYPE 根元素名稱 SYSTEM 檔案位置>
        SYSTEM表明dtd在當前檔案系統中,後面檔案位置是當前硬碟中的位置     
    <!DOCTYPE 根元素名稱 PUBLIC "DTD名稱" "DTD檔案URL">
        PUBLIC表明dtd在網路公共位置中,後面指明dtd名字和所在網路URL地址

②內部引入,在xml中直接寫<!DOCTYPE 根元素名稱 [dtd約束的內容]>

③約束元素 <!ELEMENT 元素名稱 元素約束>  
    元素約束:
        ANY表示包含任意子元素
        EMPTY表示不含子元素
        ()表示子元素
        ,表示子元素必須按順序並列出現
        |表示子元素出現其中之一
        #PCDATA表示包含標籤體
        +表示一次或多次
        *表示0次或多次
        ?表示0次或一次
        組合:<!ELEMENT 元素名稱 ((TITLE*, AUTHOR?, EMAIL)* | COMMENT)>

④約束屬性 <!ATTLIST 元素名 屬性名 屬性型別 屬性約束>  
    屬性型別:
        CDATA表明普通字串
        ENUMERATED表明取指定列舉列表值
        ID表明屬性值在文件中唯一,只能以字母或下劃線開頭
    屬性約束:
        #REQUIRED表明當前屬性必須存在
        #IMPLIED表明當前屬性可選
        #FIXED表明當前屬性具有固定值
        '預設值'表明當前屬性具有預設值

⑤實體ENTITY,對一段重複使用的內容引用、複用
    引用實體,在xml中引用的實體
        定義實體:<!ENTITY 實體名稱 “實體內容” >
        使用實體:&實體名稱;     
    引數實體,在dtd中引用的實體
        定義實體:<!ENTITY %實體名稱 "實體內容">
        使用實體:%實體名稱;

例項:
<?xml version = "1.0" encoding="utf-8" ?>
<!DOCTYPE 聯絡人列表[
    <!ELEMENT 聯絡人列表 ANY>
    <!ELEMENT 聯絡人 (姓名,EMAIL)>
    <!ELEMENT 姓名 (#PCDATA)>
    <!ELEMENT EMAIL (#PCDATA)>
    <!ATTLIST 聯絡人 編號 ID #REQUIRED>
]>
<聯絡人列表>
    <聯絡人 編號="a1">
        <姓名>張三</姓名>
        <EMAIL>[email protected]</EMAIL>
    </聯絡人>
    <聯絡人 編號="a2">
        <姓名>李四</姓名>
        <EMAIL>[email protected]</EMAIL>
    </聯絡人>
</聯絡人列表>

2、Schema也是xml約束檔案(.xsd),目的是為了克服DTD缺陷


1)Schema本身符合xml語法,方便解析
2)對名稱空間支援有非常好
3)比DTD更多資料型別,並且自定義資料型別
4)語義約束更精確,強於DTD
5)比DTD複雜多,學習成本高

Schema文件必須有一個根結點(稱為Schema)  
名稱空間xmlns:全世界唯一標識某個資源(通常是公司域名),僅是名稱,不是真實的資源地址

例項: 
XSD檔案(book.xsd)
<?xml version="1.0" encoding="UTF-8" ?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
        targetNamespace="www.xxx.com"
        elementFormDefault="qualified">
    <xs:element name='書架' >
        <xs:complexType>
            <xs:sequence maxOccurs='unbounded' >
                <xs:element name='書' >
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name='書名' type='xs:string' />
                            <xs:element name='作者' type='xs:string' />
                            <xs:element name='售價' type='xs:string' />
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

XML檔案(.xml)
xmlns:w3指定名稱空間(http://www.w3.org/2001/XMLSchema-instance)別名為w3
w3:schemaLocation指定名稱空間(www.xxx.com)來源於book.xsd檔案(可以是網路地址)
xmlns:my指定名稱空間(www.xxx.com)別名為my
<my:書架 xmlns:w3="http://www.w3.org/2001/XMLSchema-instance"
        w3:schemaLocation="www.xxx.com book.xsd"
        xmlns:my="www.xxx.com">
    <my:書>
        <my:書名>JavaScript網頁開發</my:書名>
        <my:作者>張孝祥</my:作者>
        <my:售價>28.00元</my:售價>
    </my:書>
</my:書架>

XML檔案(.xml)
xmlns="www.xxx.com"可以忽略my 沒有字首預設使用這個空間
<書架 xmlns:w3="http://www.w3.org/2001/XMLSchema-instance"
     w3:schemaLocation="www.xxx.com book.xsd"
     xmlns="www.xxx.com">
    <>
        <書名>JavaScript網頁開發</書名>
        <作者>張孝祥</作者>
        <售價>28.00元</售價>
    </>
</書架>

相關推薦

Xml-DTDSchema

定義:XML是一種資料傳輸和儲存格式,用標籤儲存資料內容,利用標籤巢狀關係儲存資料之間關係 應用場景:不同平臺間資料傳輸、程式配置檔案 存在形式:XML檔案、也存在記憶體或網路中,不要把XML狹隘理

xml中的DTDschema

stun 轉義 是否 xml語法 target san int log 概述 XML的文檔聲明<?xml version="1.0" encoding="UTF-8" ?> xml轉義字符 <![CDATA[內容]]> 實例: <![CDAT

XML DTDXML Schema

每天都在用xml, 可是卻一直沒有去深入瞭解一下DTD和Schama, 當然我覺得很大一個原因是因為不需要, 本人從事web開發3年多也只有一次修改DTD檔案的機會. 週末無意間翻看了一下張孝祥的書, 再到w3school上讀了兩邊, 總算略知一二, 關鍵點記錄下來, 以為紀

Webservice-DTDSchema(四)

寫SOAP之前,寫點XML的東西,為Soap打下一個比較好的基礎。XML中主要講DTD、Schema以及對XML的解析與XML與Java物件的關係等,DTD和Schema都不陌生,就蜻蜓點水,一帶而過,XMl的解析在下篇中寫。 關於dtd作用好處不用在此多言,它大有被schema替代的趨勢,下面舉例說明。首

解決DTD schema 檔案無提示問題

預設情況下是 DTD是放在網路上。 在沒有網路或者網路延遲沒法讀取的情況下,會出現沒有提示的情況: 用DTD 末尾的關鍵字 struts.dtd 去原始碼搜尋該檔案 然後代開eclipse 的windows→preferences 搜尋catalog

XMLDTD約束Schema約束

        DTD和Schema是兩種常用的xml檔案的約束檔案,都是用來約定XML檔案,目的是會提示使用者讓使用者按照規定的格式去書寫XML,驗證XML檔案有效性。主要的區別有一下幾點:         1、Schema遵循XML語法,學習成本低,不需要再學習新的語法

關於XMLSchema約束的一些總結。

在學習XML約束的時候DTD約束還比較易懂(也可能是錯覺),但是Schema約束的名稱空間、引入,Schemalocation等比較難懂,總結一下最近自己檢視其他專家的部落格琢磨出來的東西 <?xml version="1.0" encoding="UTF-8"?> <xsd:sch

【轉】XMLSchema名稱空間詳解---例項篇

上文把XML和Schema的名稱空間的一些相關內容進行了詳細介紹,下面通過例子來具體瞭解:     例一:重點理解名稱空間的相關概念。    下面的例子是一個XML Schema檔案,名為"note.xsd" <?xml version="1.0"?>&

【轉】XMLSchema名稱空間詳解

XML和Schema具有無關平臺,技術廠商,簡單,規範統一等特點,極具開放性,所以使用極為廣泛,而且使用簡單,在XML和Schema和,個人認為比較不好理解的一點是其名稱空間問題,在這篇部落格裡詳細進行理解。     名稱空間是W3C推薦標準提供的一種統一命名XML文件中的元素

不認識spring xml配置檔案dtdxsd型別,血與淚的教訓啊

今天在初次使用spring原始碼的時候,在spring4.2中使用了xsd型別的配置檔案,導致一直解析配置檔案出錯: 找不到元素 'beans' 的宣告 後來從原始碼工程的test/sources目錄中copy新的dtd格式,該巴改巴就成功了。真是汗啊(⊙﹏⊙)b 記住了,

【黑馬Android】(16)XML/DTD/Sax解析/Schema語法簡介

Xml 概述     Java,跨平臺的開發語言。     Xml,跨平臺的傳輸資料。 Xml語法 標籤語言,類似html。 Xml亂碼問題。 1.文件宣告     用來宣告xml的基本屬性,用來指揮解析引擎如何去解析當前xml     通常一個xml都要包含並且只能包

XML中的SchemaDTD

DTD和Schema兩者都是對XML文件做進一步的限制。 DTD的概念 DTD的作用是定義XML的合法構建模組,它使用一系列的合法元素來定義文件結構。 作用: 1、定義XML文件的結構 2、為XML文件提供語法與規則 3.、內容既可以定義在XML文件之內,也可以定義在XML

XMLSchema中xmlns,targetNamespacexsi:schemaLocation的關係作用

XML的名稱空間:在w3c的官方說法中,名稱空間提供了避免元素命名衝突的作用,即相同的元素名稱表示不同含義的情況。這裡就不再舉例詳細說明了,在網上很容易找到。如果要避免重名的衝突,那很明顯的,在xml文件中就可以出現多個不同的名稱空間。名稱空間的語法:xmlns:namesp

XMLSchema名稱空間詳解(轉載)

http://blog.csdn.net/wanghuan203/article/details/9203621 http://blog.csdn.net/wanghuan203/article/details/9204337

XML的約兩種約束——DTDSchema

在XML技術裡,可以編寫一個文件來約束一個XML文件的書寫規範,這稱之為XML約束。 常用的約束技術XML DTD ;XML Schema。 XML Schema 也是一種用於定義和描述 XML 文件結構與內容的模式語言,其出現是為了克服 DTD 的侷限性 XML Sch

XMLSchema名稱空間詳解---例項篇

上文把XML和Schema的名稱空間的一些相關內容進行了詳細介紹,下面通過例子來具體瞭解:     例一:重點理解名稱空間的相關概念。     下面的例子是一個XML Schema檔案,名為"not

JAVA Web開發之XML基礎DTD約束

語法格式:    <!ENTITY % 實體名稱 "實體內容" > 引用方式: %實體名稱; 舉例1:   <!ENTITY % TAG_NAMES "姓名 | EMAIL | 電話 | 地址">       <!ELEMENT 個人資訊 (%TAG_NAMES; | 生日)&g

在Eclipse中匯入dtdxsd檔案,使XML自動提示

DTD 型別約束檔案     1. Window->Preferences->XML->XML Catalog->User Specified Entries視窗中,選擇Add 按紐     2.在Add XML Catalog Entry 對話方塊中選擇或輸入以下內容:       

16.XML語法、CDATA、約束(DTDSchema)講解

 xml主要用來描述資料,比如配置檔案,網路之間傳輸資料等,並且在android中也經常用xml來佈局,,接下來便來學習xml常用的東西 1.XML語法 xml語法分為:  1.1 文件宣告 必須位於文件第一行,用來聲明當前版本、編碼格式以及standlane,如果沒有編碼格式

XML NodeElement

訪問 數據 etc file 空白 cep comm 樹的遍歷 exc 1.元素(Element)和結點(Node)的區別,元素是一個小範圍的定義,必須是含