写XML文档,所有出现的自定义标记都要在DTD中声明。元素(element)需要声明,属性(attribute)需要声明,实体(entity)需要声明。这三种标记,声明的格式基本相同都是用“<!>”这种形式。
元素(element)声明:
例如:<!ELEMENT from(#PCDATA)>
属性(attribute)声明:
例如:<!ATTLIST payment type CDATA “check”>
实体(entity)声明:
例如:<!ENTITY writer “张三”>
元素的灵活声明上篇已经说明,今天详细讲属性(attribute)的声明。属性声明重点要明白属性值的类型。
属性值(attitude value)的类型有四种:默认值(default),固定值(fixed),必须值(required),不是必须值(implied)。下面举例这四种属性的声明格式。
一、属性值为默认值举例:
<!ATTLIST square width CDATA“0”>
这个例子声明,正方形宽度默认为零。如果XML文档不写属性,文档默认属性值为零。
在XML文档应用举例:
<square width=“200”/>
二、属性值为必须填写举例:
在XML文档应用举例:
<square width=“200”/>
但是下面就是非法的。
<square />
按标记required属性值的要求,在XML文档中必须加属性。
三、属性值可有可无应用举例:
<!ATTLIST square width CDATA #IMPLIED>
在XML文档应用举例:
<square width=“200”/>
但是下面不写属性也可以使用。
<square />
按标记imlied属性值的要求,在XML文档中可以灵活使用属性。
四、属性值固定应用举例:
在XML文档中使用举例:
<company address=“广州五山路80-1号”/>
按这个标记要求,公司地址只能是唯一的,写别的地址是非法的。
五、属性值是枚举类型举例:
<!ATTLISTpayment type(cash|check)“cash”>
在XML文档中使用举例:
<payment type=“check”/>
也可以写作
<payment type=“cash”/>
这枚举类型可以写多个,如一周七天等等,非常实用。
这里还要提示大家,属性名称可以自己定义如本例“type”,在DTD中还有十一个内部定义的属性类型。抄录如下:(使用方法与CDATA的方式是一样的。)
CDATA:值为字符数据(character data);
(en1|en2…):值为枚举序列的一个值。只能是其中的一个值。
ID:值为唯一的id。
IDREF:值为另外一个元素的id。
IDREFS: 值为其他元素id的列表。
NMTOKEN:值为合法的 XML 名称。
NMTOKENS:值为合法的 XML 名称的列表。
ENTITY:值是一个实体。
ENTITIES:值是一个实体列表。
NOTATION:此值是符号的名称。
xml:值是一个预定义的 XML 值。
以上十一个标记一定要清晰明白,这是属性类型名称,不是属性值。
北荒客
2020.2.27










网友评论