XML知識點滴 7

2021-08-29 15:16:01 字數 4348 閱讀 2776

xml

知識點滴(7)

屬性列表宣告

n在元素開始標籤的名稱和「

>

」符號之間可以插入屬性列表(

attribute list)。

n屬性可以為空,不包含任何內容(如:屬性名稱

=」」),但等號和引號不能省略。 n

除了可以使用空格將屬性值隔開,也可以使用換行符或製表符。 n

屬性在屬性列表中出現的順序對於

xml分析器而言是不重要的。在設計

xml應用程式的時候,程式**最好不要依賴於屬性的出現順序。 n

在屬性列表中,不允許出現完全相同名稱的屬性。 n

屬性用於將名字

-值對與元素進行關聯。屬性說明只能在開始標籤和空元素標籤中出現。屬性列表宣告詳細說明了與給定元素型別相關聯的每乙個屬性的名字,資料型別和預設值(如果有的話)。 n

屬性列表宣告的語法如下:

元素名屬性名屬性型別

預設宣告

>

元素名是屬性所屬的元素名字,屬性是屬性的命名,屬性型別則用來指定該屬性是屬於

哪種型別,共有十種型別,預設宣告用於說明在元素中該屬性是否必須出現,如果不是必須出現,那麼當該屬性沒有出現時,

xml處理器應該如何處理。 n

預設宣告可以有四種預設設定。

#required

、#implied

、#fixed

預設值、只有預設值。 n

#required

關鍵字required

說明必須為元素提供該屬性。 n

#implied

關鍵字implied

說明元素可以包含該屬性,也可以不包含該屬性。 n

#fixed

預設值

關鍵字fixed

預設值,說明乙個固定的屬性預設值,文件的編寫者不能修改該屬性的

值。如果元素中不包含這個屬性,

xml處理器將以宣告的預設值向應用程式報告該屬性。 n

只有預設值 與

fixed

預設值一樣,如果元素不包含該屬性,

xml處理器將以宣告的預設值向應

用程式報告該屬性。不同的是,這種宣告方式屬性的值是可以改變的。

屬性型別

n在屬性列表宣告時,總共有十種屬性型別可以選擇,分別是:

cdata

、enumerate、id

、idref

、idrefs

、entit

、entities

、nmtoken

、nmtokens

、notation。

ncdata

這是最常用的一種屬性型別,表明屬性值為字元資料,與元素內容說明中的

#pcdata

相同。如果屬性值需要出現小於號(

<

)和雙引號(

」),可以通過預定義實體引用或字元引用的方式插入小於號、大於號和雙引號。如果包含的和號(

&)不是字元或實體引用的起始定界符,也必須使用預定義實體引用或者字元引用的方式插入。 n

列舉型別

在宣告屬性時,可以限制屬性的取值只能從乙個列表中選者,這類屬性屬於列舉型別。列舉型別的屬性有時候很有用的,例如:

person

元素有乙個

***屬性,我們希望這個屬性取值只能是

male

或female

,在宣告屬性時,將這兩個值放到圓括號中,並用豎線(

|)分隔,如下所示:

person *** (male|female) #required>

列表中的可選屬性值,不用加雙引號(

」)或單引號(

』),但是在給屬性賦值時,需要帶上雙引號或單引號。另外要注意的是,在給屬性賦值時,不僅必須使用列舉型別宣告中的可選值,而且還要注意屬性的大小寫,

male

、male

、female

、female

等都是無效的。 n

id、idref

、idrefs 1)

乙個id

型別的屬性值唯一標識

xml文件中的乙個元素。 2)

乙個id

型別的屬性值必須遵守

xml名稱定義的規則,以字母、下劃線開頭,名稱中可以包含字母、數字、下劃線以及其他在

xml標準中允許的字元,名稱中不能帶有空格。 3)

乙個元素只能有乙個

id型別的屬性,

id型別的屬性必須設定為

#implied

或者#required

,因為id

型別屬性的每乙個取值都是用來標識乙個特定元素,為

id型別的屬性提供預設值,特別是固定的預設值是毫無意義的。

<?

xmlversion

="1.0"

encoding

="gb2312"?>

doctype

company[

element

company

(employee*)>

element

employee

(name)>

element

name

(#pcdata)>

attlist

employee

snid #required>

]>

<

company

>

<

employeesn=

"e-200402100001">

<

name

>

張三name

>

employee

>

<

employeesn=

"e-200402100006">

<

name

>

李四name

>

employee

>

company

>

nidref

型別的屬性值為同一文件中的另乙個元素的

id型別的屬性值,而這另乙個元素的

id型別的屬性值必須是已經存在的。 n

利用id

和idref

這兩種型別的屬性,我們可以在兩個物件之間建立一種關聯關係。

<?

xmlversion

="1.0"

encoding

="gb2312"?>

doctype

company[

element

company

(employee*)>

element

employee

(name)>

element

name

(#pcdata)>

attlist

employee

snid #required>

attlist

employee

manager

idref #implied>

]>

<

company

>

<

employeesn=

"e-200402100001">

<

name

>

張三name

>

employee

>

<

employeesn=

"e-200402100006"

manager

="e-200402100001">

<

name

>

李四name

>

employee

>

<

employeesn=

"e-200402100002"

manager

="e-200402100001">

<

name

>

王五name

>

employee

>

company

>

n如果乙個屬性需要引用文件中多個

id屬性的屬性值,那麼可以把它宣告為具有

idrefs

型別。idrefs

型別的屬性值是一系列以空格分隔的

id型別的屬性值,而且必須與文件中已有的

id型別屬性值相匹配。

<?

xmlversion

="1.0"

encoding

="gb2312"?>

doctype

library[

element

XML知識點滴 11

xml 知識點滴 11 小結 nxml 部分 xml 主要用於表示資料,其格式的要求比 html 更加嚴格。xml文件的邏輯結構主要包括 xml宣告 文件型別宣告 元素 注釋和處理指令幾個部分。如果乙個文件符合 xml規範中定義的所有正確性的約束,並且在文件中直接或間接引用的每乙個已分析實體都是格式...

Perl知識點滴

函式多返回值 v1 abc v2 bcd v3,v4 upcase v1,v2 sub upcase return wantarray parms parms 0 print v3,v4 取得陣列長度 a 1,2,3 my alen a print alen aa 1,111 2,2222 3,33...

Linux 知識點滴

linux的原作者是誰?linus torvalds,托瓦茲.作業系統應該包括哪兩個部分?乙個是 核心與其提供的介面工具 另乙個是 利用核心提供的介面工具所開發出來的軟體 linux的發展分為兩種版本,哪兩種?穩定版本的偶數版,如2.6.x,適合與商業與家用環境使用 發展中版本的奇數版,適合開發特殊...