[XML]学习笔记(三)——DTD属性的声明及类型
2016-03-28 20:55
441 查看
一、属性的声明:
a) 任何标记的属性都必须在DTD文档中进行声明,都要通过关键字
定义。
b) 所有标记的属性,即便是同名属性,都要在各个标记中声明。
如publisher中有address属性,person中也有address属性,则需要分别在两个标记中进行声明。
c) 可以多次为一个标记声明不同的属性。
如book有language和publisher两个属性,可以声明为
也可以同时依次为一个标记声明多个属性。
如:
(不提倡使用)
d) attr_type的四种类型:
i. 默认属性值,不指定;
ii. #REQUIRED——属性值必须指定;
iii. #IMPLIED——属性值可选用或不用;
iv. #FIXED——属性值可以没有,但如果有则必须和指定值保持一致。
e) e.g.
test328.dtd
test328.xml
二、 属性的内容类型
a) CDATA型:该类型的属性值不能含有“<”和“””,但实体可以出现在该字符串中;
b) Enumerated型:必须从枚举过的数据类型中选取,如(true|false);
c) ID型:要求文档中所有标记ID类型的属性值一定不能相同;
d) ENTITY型:用于标识外部不可解析的实体,如二进制文件;
e.g.(会报错?)
e) ENTITIES型:与ENTITY类似,但其指定的是一个实体序列,如多张图片,多个音频等。
e.g.(会报错?)
f) NOTATION型:对于不可解析的实体,为了将其展现出来或进行应用,通过该关键字告诉用什么样的软件进行支持。
如:dtd中声明
g) IDREF型:用于表示XML文档中标记之间关系的一种类型,其值必须是文档中被定义好的某一标记的ID类型的属性值。
如:
h) IDREFS型:类似于IDREF,但可以引用多个ID,多个ID之间用空格隔开。
i) NMTOKEN型:限制作为其值的属性类型,规定了一种合法的命名机制,必须由英文字母、数字、“.”、“_”和“-”组成,不能包括空格。
e.g.
j) NMTOKENS型:能够给一个标记赋予几个满足NMTOKEN型的字符串,不同的字符串都在一个引号中,彼此用空格隔开。
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型的字符串,不同的字符串都在一个引号中,彼此用空格隔开。
相关文章推荐
- Nginx+keepalived主从双机热备自动切换架构
- Java中的内部类
- 单词翻转
- centos6.5上面HTOP实战!!! 推荐
- 44. Wildcard Matching
- 偷来的git操作命令
- SQL Server关于星期的处理(日期处理)
- 文件的内容操作
- 使用Timer和ScheduledThreadPoolExecutor执行定时任务
- 单链表 --- 冒泡排序 约瑟夫环
- Apache Arrow源码分析(二)——类型的封装
- rabbitmq—镜像队列
- 转载一篇优秀的关于python的字典的文章
- 比较分析与数组相关的sizeof和strlen
- document对象
- OpenCV Hog+SVM 学习
- Android合理的使用闪屏
- 第五周项目4长方柱类
- 收集的安全网站【公司】
- 集合