XML--约束模式
XML 的约束模式
XML 文档仅是格式良好还不够,其中的内容还必须满足某些条件的约束限制。在这些条件下,需要定义一套规则来对 XML 文档中的内容作出限制,这套定义的规则就是 XML 文档 的约束模式。 约束模式定义了 XML 文档中允许出现的元素名,元素中的属性,内容的类型,以及元素之间的嵌套关系和出现顺序 1 XML 的约束模式语言 1)XML DTD 2)XML Schema 满足正确的语法并不代表XML是有效的,只能说是正确的。如果使XML有效必须依赖于DTD或是Schema 1.1 XML DTD(Document Type Definition) a)用来描述文档的结构: 2)元素与元素之间的关系 3)属性(ATTLIST)的定义规则 4)可使用的实体(ENTITY)或是可使用的符号(NOTATION)规则 b)XML与DTD之间的关系: 1)类与对象之间的关系 2)数据库表与数据记录的关系 3)有了DTD每个XML文件可以有属于自己的格式 4)有了DTD不同的XML文件可以使用同一种格式 5)有了DTD可以校验一个外部的XML文件是否符合格式 c)DTD文档的声明与引用 1) 内部DTD <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE book [ <!ELEMENT book (author,content)> <!ELEMENT author (#PCDATA)> <!ELEMENT content (#PCDATA)> ]> <book> <author>ivan</author> <content>hello everyone</content> </book> 2) 外部DTD(推荐这种) <!ELEMENT book (author,content)> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE book SYSTEM "dtd_1.dtd"> <book> <author>ivan</author> <content>hello everyone</content> </book> 3)内部外部DTD d)元素的语法: <!ELEMENT name type>Type可选项: 1) EMPTY 该元素不能包含子元素和文本,但可以有属性(空元素) 2) ANY 该元素可以包含任何在DTD中定义的元素内容(非常少用没啥实际意义) 3) #PCDATA parsed character data可解析的字符数据(使用最多) 4)纯元素类型 只包含子元素并且这些元素外没有文本(使用最多) 5)混合类型 包含子元素和文本的混合体(很少用) 例: c)修饰符号: 1) () 用来给元素分组 2) | 在列出的对象中选择一个 3) + 该对象至少出现一次,可以出现多次(即1次或是多次) 4) * 该对象允许出现零次,也可以出现多次(即0次或是多次) 5) ? 该对象可以出现,但只能出现一次(即0次或是1次) 6) , 该对象必须按指定顺序出现 <!ELEMENT book ((id|author),content)> e)属性的语法 <!ATTLIST 元素名称 属性名称 属性类型 属性特征> 例: 属性类型: 1)CDATA character data字符数据(常用) 2)ID 表示该属性的取值必须是唯一的(常用)<!ATTLIST title id ID #REQUIRED> 3)IDREF 属性的值指向文档中其它地方声明的值 4) IDREFS 同IDREF。区别在于可以用空格分隔来引用多个。 5) NMTOKEN 是CDATA的一个子集。表示属性必须是英文字母、数字、句号、破折号、下划线、冒号、属性值不能有空格 6) NMTOKENS 属性值可以有空格 7) ENUMERATED 属性特点: 2)#IMPLIED 可以有 3)#FIXED 属性的值必须是指定的固定值 <!ATTLIST users company CDATA #FIXED "IBM"> 4)为属性提供一个默认值 <!ATTLIST users company CDATA "IBM"> f)实体的语法 a)内部实体<!ENTITY 实体名 “值”> 单一的值 b)外部实体<!ENTITY 实体名 SYSTEM “值”> 文件里的值 <!ENTITY writer "ivan"> <content>&writer;</content>2)参数实体: <!ENTITY % address "country,city"> <!ELEMENT book (author,content,%address;)> <!ELEMENT author (#PCDATA)> <!ELEMENT content (#PCDATA)> <!ELEMENT country (#PCDATA)> <!ELEMENT city (#PCDATA)> <book> <author>ivan</author> <content>hello everyone</content> <country>china</country> <city>beijing</city> </book>DTD 的局限性 1)DTD不遵守XML语法(写XML文档实例时候用一种语法,写DTD的时候用另外一种语法) 2)DTD数据类型有限(与数据库数据类型不一致) 3) DTD不可扩展 4) DTD不支持命名空间(命名冲突) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |