您的位置:首页 > 其它

[XML]学习笔记(三)——DTD属性的声明及类型

2016-03-28 20:55 441 查看
一、属性的声明:

a) 任何标记的属性都必须在DTD文档中进行声明,都要通过关键字

<!ATTLIST elem_nameattr_name attr_type default_value>


定义。

b) 所有标记的属性,即便是同名属性,都要在各个标记中声明。

如publisher中有address属性,person中也有address属性,则需要分别在两个标记中进行声明。

c) 可以多次为一个标记声明不同的属性。

如book有language和publisher两个属性,可以声明为

<!ATTLIST book language CDATA “english”>
<!ATTLIST book publisher CDATA “tsinghua”>


也可以同时依次为一个标记声明多个属性。

如:
<!ATTLIST book language CDATA “english” publisher CDATA “tsinghua“>


(不提倡使用)

d) attr_type的四种类型:

i. 默认属性值,不指定;

ii. #REQUIRED——属性值必须指定;

iii. #IMPLIED——属性值可选用或不用;

iv. #FIXED——属性值可以没有,但如果有则必须和指定值保持一致。

e) e.g.

test328.dtd

<?xmlversion="1.0" encoding="UTF-8"?>
<!ELEMENT books (book*)>
<!ELEMENT book(name|author|price)*>
<!ATTLIST book languageCDATA #FIXED "english">
<!ATTLIST book publisherCDATA #REQUIRED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT author(#PCDATA)>
<!ELEMENT price(#PCDATA)>


test328.xml

<?xmlversion="1.0" encoding="UTF-8"?>
<!DOCTYPE books SYSTEM"test328.dtd">
<books>
<book language="english" publisher="ecnu">
<name>xml programming</name>
<author>Jason</author>
<price>$100</price>
</book>
</books>


二、 属性的内容类型

a) CDATA型:该类型的属性值不能含有“<”和“””,但实体可以出现在该字符串中;

b) Enumerated型:必须从枚举过的数据类型中选取,如(true|false);

c) ID型:要求文档中所有标记ID类型的属性值一定不能相同;

d) ENTITY型:用于标识外部不可解析的实体,如二进制文件;

e.g.(会报错?)

<?xmlversion="1.0" encoding="UTF-8"?>
<!DOCTYPE books [
<!ELEMENT books (book)*>
<!ELEMENT book (#PCDATA)>
<!ATTLIST book pic ENTITY#REQUIRED>
<!ENTITY pic1 SYSTEM"haha.jpg">
<!ENTITY pic2 SYSTEM"monkey.jpg">
]>
<books>
<book pic="&pic1;">haha</book>
<book pic="&pic2;">monkey</book>
</books>


e) ENTITIES型:与ENTITY类似,但其指定的是一个实体序列,如多张图片,多个音频等。

e.g.(会报错?)

<?xmlversion="1.0" encoding="UTF-8"?>
<!DOCTYPE books [
<!ELEMENT books (book)*>
<!ELEMENT book (#PCDATA)>
<!ATTLIST book pic ENTITIES #REQUIRED>
<!ENTITY pic1 SYSTEM "haha.jpg">
<!ENTITY pic2 SYSTEM "monkey.png">
]>
<books>
<book pic="&pic1; &pic2;">haha</book>
</books>


f) NOTATION型:对于不可解析的实体,为了将其展现出来或进行应用,通过该关键字告诉用什么样的软件进行支持。

如:dtd中声明

<!NOTATION JPG SYSYEM “c:/mspaint.exe”>
<books>
<book pic="&pic1; &pic2;" display=”JPG”>haha</book>
</books>


g) IDREF型:用于表示XML文档中标记之间关系的一种类型,其值必须是文档中被定义好的某一标记的ID类型的属性值。

如:

<?xmlversion="1.0" encoding="UTF-8"?>
<!DOCTYPE books [
<!ELEMENT books (book)*>
<!ELEMENT book (#PCDATA)>
<!ATTLIST book isbn ID#REQUIRED>
<!ATTLIST book lastversionIDREF #IMPLIED>
]>
<books>
<book isbn="P301">haha</book>
<book isbn="P103" lastversion="P301">HA</book>
</books>


h) IDREFS型:类似于IDREF,但可以引用多个ID,多个ID之间用空格隔开。

i) NMTOKEN型:限制作为其值的属性类型,规定了一种合法的命名机制,必须由英文字母、数字、“.”、“_”和“-”组成,不能包括空格。

e.g.

<?xmlversion="1.0" encoding="UTF-8"?>
<!DOCTYPE books [
<!ELEMENT books (book)*>
<!ELEMENT book (#PCDATA)>
<!ATTLIST book isbn ID#REQUIRED>
<!ATTLIST book referencesIDREFS #IMPLIED>
<!ATTLIST book publisherNMTOKEN #IMPLIED>
]>
<books>
<book isbn="P301">haha</book>
<book isbn="P302">HA</book>
<book isbn="P103" references="P301 P302" publisher="Tsinghua_University">A</book>
</books>


j) NMTOKENS型:能够给一个标记赋予几个满足NMTOKEN型的字符串,不同的字符串都在一个引号中,彼此用空格隔开。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: