xml(2)
来源:互联网 发布:心知天气~查气压 编辑:程序博客网 时间:2024/05/18 02:45
Xml(2)
一,DTD是一套关于标记的语法规则,它定义了文档的逻辑结构,规定了文档中所使用的元素、实体、元素的属性、元素与实体之间的关系。DTD告诉你可以在哪些文档中使用哪些标记,各标记出现的次序,哪些标记出现在哪些标记中,哪些标记有属性等等。
DTD是XML文件的验证机制,定义好DTD,就可以使用XML解析器对编写好的XML文档进行DTD检查,判断XML文档内容是否为有效的XML文档内容。
二.使用DTD的好处
用DTD提供统一格式。
用DTD验证数据有效性
根据DTD编写文档样式单
三.导入DTD
Ø 内部DTD
<? xml version=”1.0” encoding=”GB2312” standalone=”yes” ?>
<! DOCTYPE 根元素名称 [
<! ELEMENT 子元素名称 (#PDATA)>
]>
Ø 外部DTD
<!DOCTYPE 根元素名 SYSTEM " DTD-URL ">
<!DOCTYPE Book SYSTEM “http://www.crazyit.org/dtd/book.dtd”>
Ø 公用DTD
<!DOCTYPE 根元素名 PUBLIC " DTD-NAME “ “DTD-URL”>
四DTD对元素的声明
1. 格式
<!ELEMENT 元素名 元素内容>
Ø 元素声明以“<!”开始,以“>”结束
Ø 元素声明指令“ELEMENT”为关键字,必须大写
Ø 元素名:为当前元素指定的元素名称
Ø 元素内容: 元素名后面的内容用来指定元素的内容类型,它可以分为EMPTY(空)、子元素类型,混合型、ANY(任意)和#PCDATA 5种类型。
空元素型:<!ELEMENT 元素名 EMPTY>
任意元素型:<!ELEMENT 元素名 ANY>
字符串型:<!ELEMENT 元素名 #PCDATA>
混合内容元素:<!ELEMENT 父元素名 (#PCDATA|子元素1|子元素2|子元素3…..)*>
注意:
Ø #PCDATA必须放在最前面
Ø #PCDATA和各子元素之间只能用竖线(|)分割
Ø 子元素1,子元素2和子元素3之间的竖线(|)并不是表示互斥,而只是表 示这些元素能无序的重复出现,而且次数不受限制
Ø 不要试图在各个子元素之后添加?,*。+等表示频率的修饰符
五DTD对属性的声明
<! ATTLIST 元素名 属性名 属性类型 [属性限定条件] [默认值]>
对属性的限定条件
v #REQUIRED: 必须的属性,意味着必须为该元素提供该属性
v #IMPLIED: 该属性是可有可无的
v #FIXED: 该属性的值是固定的,定义是必须制定固定值。使用该元素时无需为其分配该属性,XML处理器会自动为给属性增加固定值
七.定义属性的类型
属性类型
含义
CDATA
值为字符串数据
(en1|en2|..)
此值是枚举列表中的一个值
ID
该属性值必须是有效地标识符,在XML文档时唯一的
IDREF
值为另外一个元素的 id属性值
IDREFS
值必须引用自多个已经有的ID属性值,多个ID属性值用空格隔开
NMTOKEN
值为合法的 XML 名称
NMTOKENS
值为多个合法的 XML 名称的列表
ENTITY
值是一个外部实体,如图片支持
ENTITIES
值是一个实体列表,多个实体之间以空格隔开
NOTATION
该属性值是在DTD中声明过的符号,这个是过期的,不要使用
八.字符类型
CDATA 是简单的纯文本字符类型,是最常用的类型,将简单的文本用做属性值。可以包括任何字符串,但不允许使用“<”,“>”,“&”,“””,“‘”。如果需要使用必须使用实体引用。属性值和元素内容都可以是文本类型,但是定义的方法不同
<! ATTLIST Student name CDATA #REQUIRED>
九.枚举类型
<?xml version="1.0" encoding="GB2312"?>
<!ELEMENT 购物车 (肉* , 水果*)>
<!ELEMENT 肉 EMPTY>
<!ELEMENT 水果 EMPTY>
<!ATTLIST 肉 类型 (鸡肉|牛肉|猪肉|鱼肉) #REQUIRED>
<!ATTLIST 水果 类型 (苹果|梨|桔子) #REQUIRED>
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE 购物车 SYSTEM "enumerated.dtd">
<购物车>
<肉 类型="猪肉"/>
<肉 类型="鸡肉"/>
<水果 类型="苹果"/>
<水果 类型="梨"/>
</购物车>
十.ID、IDREF、IDREFS类型
1.ID类型
<?xml version="1.0" encoding="GB2312"?>
<!ELEMENT beans (bean|object)*>
<!ELEMENT bean (property*)>
<!ELEMENT object EMPTY>
<!ELEMENT property EMPTY>
<!ATTLIST bean id ID #REQUIRED>
<!ATTLIST object id ID #REQUIRED>
<!ATTLIST property name CDATA #REQUIRED>
<!ATTLIST property ref IDREF #IMPLIED>
<!ATTLIST property set IDREFS #IMPLIED>
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE beans SYSTEM "idandidref.dtd">
<beans>
<bean id="chin"/>
<object id="cat"/>
<object id="_jerfied-cat"/>
<bean id="foo">
<property ref="chin" name="man"/>
</bean>
<bean id="bar">
<property set="cat _jerfied-cat" name="pet"/>
</bean>
</beans>
十一。实体的定义
所谓实体引用就是用一个字符串代替另一个字
符串。定义实体有如下作用:
Ø 提高代码的服用,方便修改,维护XML文档
Ø 使用某些特殊的符号,这些特殊的符号可能会使XML解析器混淆
Ø 减少字符输入量,如果某个字符串特别长,而且需要经常使用,则可以定义为实体
1. 普通实体定义
普通实体是在XML文档里使用的实体,语法如下
<! ENTITY 实体名 “实体值”>
使用实体的语法如下:
&实体名;
2. 参数实体
<! ENTITY % 实体名 “实体值”>
%实体名;
3. 外部普通实体
<! ENTITY 实体名 SYSTEM “实体值所在文件的URI”>
<! ENTITY 实体名 PUBLIC “公用实体标识名” “实体值所在文件的URI”>
- xml 2
- XML(2)
- xml(2)
- xml(2)
- XML-2
- xml/2
- XML--2
- XML(2)
- XMl 2
- XML (2)
- xml(2)
- XML(2)----XML的基本常识
- XML教程(2)--XML元素与XML属性值
- python3.2 读写 xml( xml.etree.ElementTree,xml.dom )
- [XML学习笔记][2]XML的使用
- XML入门(2)-XML文档规则
- XML入门指南(2)如何使用XML
- XML简明教程(2)什么是XML文档
- EDID在HDMI高清设备中的应用说明
- 开发者可轻易发现网页代码漏洞——Google发布Chrome扩展DOM Snitch
- 00072.Oracle还原表空间切换
- 设置tab的格式
- 浏览器不缓存
- xml(2)
- 打印ibatis执行时的sql
- 百度地图API之ItemizedOverlay的使用(Android)
- 引用参数
- 一个ActionScript3.0的类工具ClassUtil
- 00073.Oracle手工创建数据库
- Android 启动环境配置
- Graphics之AlphaBitmap
- 淘宝2012鄙视题(看看大家现在的实力)