天天看點

xml學習4-dtd

1、DTD元素的定義

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

<!--*表示0或者多個  +表示至少要有一個  ?表示0個或者一個 内容模型  |表示隻能包含分隔開中的一個

 ,表示序列  下面是DTD元素的聲明     #PCDATA 表示字元資料   EMPTY表示 空元素     ANY 表示該元素可以包含

任意類型的字元資料和子元素,隻要符合xml規則就行。在實際使用時候應該避免使用ANY  明确的DTD 有助于我們了解文檔

<!ELEMENT  employee (#PCDATA | name*)> 表示混合元素 就是employee中既可以包含子元素 也可以包含文本 但是必須是0個或者多個*

下面是DTD 元素定義

-->

<!DOCTYPE company[

<!ELEMENT company (employee)>                                       //表示compant元素下包含 employee元素

<!ELEMENT employee (name,age,sex,salary,interest*)>   //employee元素包含  name  age sex  salary  interest元素   interest元素可以使 0個或者多個

<!ELEMENT salary (cash | credit_card)>                         //salary 方式有  cash  或者 credit_card中的一種

<!ELEMENT cash (#PCDATA)>                                          //cash 包含的資料是字元一下雷同

<!ELEMENT credit_card (#PCDATA)>  

<!ELEMENT name (#PCDATA)>

<!ELEMENT age (#PCDATA)>

<!ELEMENT sex (#PCDATA)> 

<!ELEMENT interest (#PCDATA)> 

 ]>

 <company>

 <employee>

    <name>zhangsan</name>  

    <age>15</age>

    <sex>男</sex>

    <salary>

    <credit_card>2000</credit_card>

    </salary>

    <interest>basketball</interest>

    <interest>football</interest>

    <interest>volleyball</interest>

 </employee> 

 </company>

2、DTD元素的定義  DTD屬性用來限制xml屬性

DTD元素采用

<!ATTLIST  元素名

屬性名1  CDATA   #REUIRED        //屬性必須設定

屬性名2  CDATA   #IMPLIED   //表示屬性可以設定也可以不設定   #FIXED表示值固定 不能設定

>

如下 :

<!ATTLIST  employee

name   CDATA   #REQUIRED    //name值必須被設定 

sex     CDATA  "女"                     //使用預設值 可以設定或者不設定

age   CDATA  #FIXED  "15"      //值是固定的不可以設定

interest   CDATA   #IMPLIED   //愛好可有可無 

元素的類型 :我們知道CDATA表示 字元型那麼  ENUMRATED 枚舉類型用什麼表示呢?

(a |  b | c | d)  這就表示枚舉類型 。

<!ATTLIST  emploree

name  (a | b | c | d)  "a"

> 

下面是一個應用

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE  employee[ 

<!ELEMENT employee (name,salary)>

<!ATTLIST salary way (check|cash) #REQUIRED>

<!ELEMENT salary (#PCDATA)>

]>

<employee>

<name>xiaowang</name>

<salary way="cash"></salary>

</employee>

ID 這個類型用于 唯一的辨別xml中的某個元素,這樣的屬性 每個元素的屬性 都不恩能夠相同  。

3、DTD的實體引用 就是像html中的轉義字元一樣使用 ,隻不過這個實體引用時我們自己定義的 ,

實體是用于定義引用普通文本或特殊字元的快捷方式的變量。

實體引用是對實體的引用。

實體可在内部或外部進行聲明。

DTD 例子:

XML 例子:

注釋: 一個實體由三部分構成: 一個和号 (&), 一個實體名稱, 以及一個分号 (;)。