且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

xml学习4-dtd

更新时间:2022-08-13 08:05:50

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)>
<!ELEMENT name (#PCDATA)>
]>
<employee>
<name>xiaowang</name>
<salary way="cash"></salary>
</employee>

 

ID 这个类型用于 唯一的标识xml中的某个元素,这样的属性 每个元素的属性 都不恩能够相同  。

 

 

3、DTD的实体引用 就是像html中的转义字符一样使用 ,只不过这个实体引用时我们自己定义的 ,

实体是用于定义引用普通文本或特殊字符的快捷方式的变量。

实体引用是对实体的引用。

实体可在内部或外部进行声明。

一个内部实体声明

语法:

<!ENTITY 实体名称 "实体的值">

例子:

DTD 例子:

<!ENTITY writer "Bill Gates">
<!ENTITY copyright "Copyright W3School.com.cn">

XML 例子:

<author>&writer;&copyright;</author>

注释: 一个实体由三部分构成: 一个和号 (&), 一个实体名称, 以及一个分号 (;)。

一个外部实体声明

语法:

<!ENTITY 实体名称 SYSTEM "URI/URL">

例子:

DTD 例子:

<!ENTITY writer SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">
<!ENTITY copyright SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">

XML 例子:

<author>&writer;&copyright;</author>