您的当前位置: > 乐天堂官网 >

DTD文件对XML标记属性的约束:

日期:2017-06-16 17:52 来源:未知 作者:admin

DTD文件对XML标记属性的约束:

DTD文件对XML标记属性的约束是通过<ATTLIST>声明,声明格式为:

<!ATTLIST 标记名称

属性名称 属性类型 默认值情况

属性名称 属性类型 默认值情况

...

>

1) 对属性类型的约束:

① CDATA:该属性的值可以是任何一个字符串,但是不能包含特殊字符,特殊字符必须使用字符引用或实体引用。

例如;

Dtd:

<!ELEMENT 联系人 (姓名*) >

<!ELEMENT 姓名 (#PCDATA) >

<!ATTLIST 姓名 电话 CDATA #REQUIRED

email CDATA #REQUIRED

住址 CDATA #IMPLIED >

Xml:

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

<!DOCTYPE 联系人 SYSTEM "CDAtAdtd.dtd" >

<,乐天堂;联系人>

<姓名 电话="10821028" email="QuickLu@126.com">

陆伟的简要地址

</姓名>

<姓名 电话="10821028" email="QuickLu@126.com" 住址="园岭新村">

陆伟的详细地址

</姓名>

</联系人>

② Enumerate:该属性只可以取枚举的值,Enumerate不是关键字,其格式是将属性的值用“|”隔开。

例子:

Dtd:

<!ELEMENT 学生 (姓名)* >

<!ELEMENT 姓名 (#PCDATA) >

<!ATTLIST 姓名 性别 (男|女) #REQUIRED >

Xml:

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

<!DOCTYPE 学生 SYSTEM "ENUMERATED,乐天堂.dtd">

<学生>

<姓名 性别="男">

张三

</姓名>

<姓名 性别="女">

李四

</姓名>

<姓名 性别="人妖">

陈五

</姓名>

</学生>

③ NMTOKEN/NMTOKENS:该属性类型为CDATA的一个子集,他的属性值不能包含ASCII码以外的字符,NMTOKEN不能包含空格而NMTOKENS可以。

例子:

Dtd:

<!ELEMENT 文件 (JAVA文件,XML文件) >

<!ELEMENT JAVA文件 (#PCDATA) >

<!ATTLIST JAVA文件 文件名 NMTOKEN #REQUIRED >

<,乐天堂;!ELEMENT XML文件 (#PCDATA) >

<!ATTLIST XML文件 文件名 NMTOKEN #REQUIRED >

Xml:

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

<!DOCTYPE 文件 SYSTEM "NMTOKEN.dtd">

<文件>

<JAVA文件 文件名="hello.java">

随便写

</JAVA文件>

<XML文件 文件名="first.xml">

<![CDATA[

<很虽百年啊>

]]>

</XML文件>

</文件>

④ ID:该属性类型的值具有专用型,即不允许其他类型相同的属性再使用这个属性值,注意属性值开头必须由下划线或字母组成,默认属性值必须为IMPLIED或者REQUIRED。

例子:

Dtd:

<!ELEMENT 出版社 (图书*) >

<!ELEMENT 图书 (名称*) >

<!ELEMENT 名称 (#PCDATA) >

<!ATTLIST 名称 ISDN ID #REQUIRED >

XML:

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

<!DOCTYPE 出版社 SYSTEM "ID.dtd">

<出版社>

<图书>

<名称 ISDN="ISBN.7-302-09606-1">

java基础教程

</名称>

<名称 ISDN="ISBN.7-302-09606-2">

XML基础教程

</名称>

</图书>

</出版社>

⑤ IDREF/IDREFS:该属性类型值取决于某个标记中ID类型属性的属性值,如果约束某个属性的属性值是其它若干个ID属性的属性值的组合,那么使用IDREFS。

例子1:

Dtd:

<!ELEMENT 电话本 (北京) >

<!ELEMENT 北京 (清华大学出版社,北京大学) >

<!ELEMENT 清华大学出版社 EMPTY >

<!ELEMENT 北京大学 EMPTY >

<!ATTLIST 北京 区号 ID #REQUIRED >

<!ATTLIST 清华大学出版社 区号 IDREF #REQUIRED 号码 CDATA #REQUIRED >

<!ATTLIST 北京大学 区号 IDREF #REQUIRED 号码 CDATA #REQUIRED >

Xml:

<?xml version="1.0" ?>

<!DOCTYPE 电话本 SYSTEM "IDREF.dtd" >

<电话本>

<北京 区号="_001">

<清华大学出版社 区号="_001" 号码="12345676"/>

<北京大学 区号="_001" 号码="12336476"/>

</北京>

</电话本>

例子2:

Dtd:

<!ELEMENT 清华大学出版社 (图书*,作者*) >

<!ELEMENT 图书 EMPTY >

<!ATTLIST 图书 ISBN ID #REQUIRED >

<!ELEMENT 作者 (#PCDATA) >

<!ATTLIST 作者 曾编图书 IDREFS #REQUIRED >

Xml:

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

<!DOCTYPE 清华大学出版社  SYSTEM "IDREFS.dtd" >

<清华大学出版社>

<图书 ISBN="a1234"/>

<图书 ISBN="b1235"/>

<图书 ISBN="a1264"/>

<图书 ISBN="d1324"/>

<作者 曾编图书="a1234 b1235 a1264 d1324">张三</作者>

<作者 曾编图书="a1234 b1235">李四</作者>

</清华大学出版社>

2) 对属性默认值的约束:

字符串:标记必须有属性,且有默认值:

① #IMPLIED:标记可以没有属性,没有默认值:

② #REQUIRED:标记必须有属性,没有默认值:

③ #FIXED "字符串":标记可以没有该属性,但如果有,必须使用固定属性值。

例子:

Dtd:

<!ELEMENT room (桌子)* >

<!ELEMENT 桌子 (#PCDATA) >

<!ATTLIST 桌子 

width CDATA "100" 

height CDATA "100"

length CDATA "100"

>

Xml:

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

<!DOCTYPE room SYSTEM "dtdFile.dtd">

<room>

<桌子 width="123" height="800" length="1024">

红桌子

</桌子>

<桌子>

大小如何??

</桌子>

</room>

热门推荐
随机推荐
最新文章