1. 程式人生 > >xml簡介與使用

xml簡介與使用

cda 模型 spa enc archetype 簡介 基於 efi 嚴格

Xml是什麽?

XML:可擴展標記語言

1.與HTML相似,HTML註重頁面·展示

2.xml註重於數據的保存

3.無需預編譯

4.符合w3c的標準

可擴展:可以自定義

標記:計算機所能認知的信息符號

xml的組成部分:

1.文檔聲明 <?xml version="1.0" encoding="UTF-8"?>

2.元素 <p></p>

3.屬性 <p id="haha"></p>

4.註釋 解釋說明 <!-- vfgfh-->

5.特殊字符

6.CDATA區域

xml解析器不會處理,而是當成字符串原樣輸出

<![CDATA[xml內容]]>

xml中的註意點:

1. xml文件中只能有一個根節點

2.節點要成對出現,有開始有閉合

3.節點必須正確嵌套

4.嚴格區分大小寫

dom,HTML 都是類似於一個倒掛的樹,我們把倒掛的樹稱之為===》dom樹

DOM:(Doucument Object Model)文檔對象模型

DOM模型:

技術分享圖片

解決創建maven慢的情況

archetypeCatalog=internal

Key 和value

解析xml文件的方式:

  1. DOM:基於xml文檔樹結構的解析,把xml文件中內容都讀取到內存中,比較占內存,消耗資源多。
  2. SAX:基於事件的解析,消耗資源小
  3. JDOM:針對於Java的特定的模型 滿足2 8原則
  4. DOM4J:for(4)JDOM的一個分支,源碼開放,性能優異,功能強大

DTDDocument Type Definition(文檔類型定義)

1. 規範編碼

  1. 可以讓瀏覽器正常的顯示

<!ELEMENT school (grade+)>

ELEMENT:元素,關鍵字

School:元素名稱

Grade:子元素或者元素類型 CDATA PCDATA (Parse)解析數據,不包含子元素

():用來給元素分組

+ :該對象最少出現一次

* 0到多次,可有可無,並且可以多次

?:出現或者不出現,出現的話只能出現一次

, :元素出現的順序

| :兩者必須出現一個

DTD文檔使用方式:

2.DTD分為外部DTD和內部DTD兩種:

1)使用內部DTD格式:

<!DOCTYPE 根元素名稱 [

<!ELEMENT 子元素名稱 (#PCDATA) >

]>

2)引用外部DTD格式:

<?xml version="1.0" encoding="gb2312">

<!DOCTYPE 根元素名稱 SYSTEM “outDtd.dtd”>

<根元素名稱>

...

</根元素名稱>

---------------

引用外部DTD時,要在DOCTYPE中使用關鍵詞SYSTEM或PUBLIC ,後者是已經被認可的文件。

通常引用自己寫的dtd文件使用SYSTEM關鍵詞

---------------

*************************************************************************************************************************

3.DTD對元素聲明

<!ELEMENT 元素名 元素內容 >

ELEMENT 關鍵字,表示對元素類型進行聲明

元素名 為當前指定元素名稱

元素內容可分為:EMPTY、子元素型、混合型、ANY和#PCDATA 5種

元素內容類型:

1)EMPTY 該元素只可能有屬性而不會有元素內容。

<!ELEMENT element-name EMPTY>

實例:

<br/>

2)ANY 可以包含DTD中定義的其他任何元素或已編譯的字符數據,包括PCDATA、元素或元素與PCDATA的混合內容。

<!ELEMENT element-name ANY >

3)#PCDATA 不包含其他子元素而只能有文本數據,文本數據可以是普通字符、CDATA段中的內容、字符引用和實體引用。

<!ELEMENT element-name (#PCDATA) >

4)子元素型 分為3種:序列:<!ELEMENT 根元素名稱(a,b,c,d ..)> , 選擇<!ELEMENT 根元素名稱 (a|b|c|d..) > 混合<!ELEMENT 根元素名稱((a|b),(c|d))>

5)混合型 既可以包含子元素又可以包含文本數據<!ELEMENT 根元素名 (#PCDATA | 子元素)* >

?字符:它說明元素可以出現0次或1次。

* 字符:它說明元素可以不出現,或出現1次或多次。
+ 字符:它說明元素必須出現至少一次,或者說可以出現一到多次

如:<!ELEMENT 根元素名稱(a+,b?,c*,d ..)>

DTD對屬性聲明

<!ATTLIST 元素名 屬性名 屬性類型 屬性限定條件>

---------------------------------------------------------

屬性類型(常見):

CDATA 字符數據,即沒有標記的文本

枚舉 備選屬性值的值列表

ID 該屬性在文檔中具有唯一性

IDREF 文檔中元素的ID類型屬性的值

IDREFS 由空格分隔的元素的多個ID

ENTITY 在DTD中聲明的實體名稱

ENTITIES 在DTD中聲明的由空格分隔的多個實體的名稱

NMTOKEN XML名稱記號

NMTOKENS 由空格份額表格的多個XML名稱記號

NOTATION 在DTD中聲明的記法的名稱

----------------------------------------------------------

屬性限定條件(常見):

#REQUIRED 元素的每個實例必須具有該屬性

#IMPLIED 元素實例不必包含該屬性

#FIXED+固定值 屬性值被指定為固定值,且用戶不能改變

默認值 如果元素中不包含該屬性的屬性值,那麽默認值將作為屬性值

實體聲明與引用

實體分為以下幾種

1.普通實體與參數實體

1)普通實體:

<!ENTITY name "text" >

name:實體引用的名稱

"text":實體的內容

引用方式:&name;

<p>&name;</p>

2)參數實體:

<!ENTITY % name "text" >

text為參數實體內容,其中不能包含如:>,<,&,‘,",等特殊字符,這些字符的使用可以用特有的字替代

引用方式為 : %name;

2.內部實體與外部實體

內部實體如上,,

外部實體:

<!ENTITY name PUBLIC FRI "URI" >

PUBLIC格式:實體內容是被某一個領域所認可的文件

SYSTEM:通常自己寫的用這個

FRI:Formal Public Identifier 為正式公用標識符,全球唯一

xml簡介與使用