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

一、属性的声明:
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型的字符串,不同的字符串都在一个引号中,彼此用空格隔开。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值