昨天简单介绍了xml的理解与定义。今天我讲一下在我们编写xml的同时应该注意的问题。我们说过HTML与XML不同。HTML是用来显示数据,而XML是用来保存数据。
当我们命名XML标记时要注意以下几点:
1、元素必须闭合,根元素只能有一个;
2、标记必须以英文字母或下划线作为开头,如果在XML声明中把encoding属性值设置为“gb2312”,那么也可以使用中文开头;
3、xml标记名严格区分大小写;
4、标记名不可以以XML三个字母为开头(不论大小写)
5、除了开始字符外,其它字符必须是英文、数字、下划线、连接线和点。例如:<abc> <_xy> <书名> <Hell-OK>
在我们规定DTD规范,语法为:
<!DOCTYPE 根元素名称[
<!ELEMENT 元素名称 类型>
......................
]>
其中类型分为:
EMPTY:空元素;
ANY:任何内容,可以为空;
PCDATA:文本(不能使用特殊符号&<>'");
CDATA:把内容当作字符来显示;
(子元素列表):逗号分隔,严格按照声明顺序来使用相应的子元素
(子元素?):表示该子元素可以出现 0~1次;
(子元素+):表示该子元素可以出现1~无数次;
(子元素*):表示该子元素可以出现0~无数次;
(子元素1|子元素2):表示可以出现子元素1或子元素2其中一个;
(子元素1,(子元素2,子元素3)?):()表示分组,该组出现0~1次,严格按照声明先后顺序
我们在定义标记时还可以给它们定义属性:<book name="" size="">。我们定义了属性要在DTD规范里面要声明一下。
语法:
<!ATTLIST 元素名
属性名1 类型 默认值
.............
>
例如:<!ATTLIST input
name CDATA "wanghao"
type (text|radio|submit|checkbox) #REQUIRED
alt (text|radio|submit|checkbox) #IMPLIED
value CDATA #FIXED "abc"
classname IDREFS #IMPLIED
>
CDATA : 表示值为字符,默认值表示未赋值时自动给定的值;
(en1|en2):枚举类型,表示只能从给定集合选择对应值;
ID:表示值为唯一ID;
IDREF:参照已存在ID;
IDREFS:值为一个或多个参照已存在ID,多个参数中间用空格隔开;
实体规则:声明并引用普通字符或特殊字符的快捷方式的变量
语法:<!ENTITY 实体名 “值”> 例如:<!ENTITY abc "wanghao">
引用:&实体名;