有效的XML文档:有效的XML除了要满足XML规范外,还要满足相应DTD和Schema定义的元素规则。
有效的XML一定是格式良好的,但格式良好的XML不一定是有效的
---------------------
DTD:
<?xml version="1.0" encoding="GB2312" ?>
<!DOCTYPE 家庭 [ <!--DOCTYPE定义根元素:家庭-->
<!ELEMENT 家庭 (人+,家电*)> <!--ELEMENT表示描述元素:()表示定义元素的子元素-->
<! ELEMENT 人 (#PCDATA)> <!--#PCDATA表示"人"元素,标签中间的内容为文本-->
<!ELEMENT 家电 EMPTY> <!--EMPTY表示"家电"元素为空元素-->
<!ATTLIST 人 <!--ATTLIST 表示定义元素的属性>
名字 CDATA #REQUIRED <!--CDATA 表示属性的内容为文本-->
性别 (男|女) #REQUIRED <!--#REQUIRED表示该属性必须书写-->
年龄 CDATA #REQUIRED
爱好 CDATA #IMPLIED <!--#IMPLIED表示该属性可有可无-->
>
<!ATTLIST 家电
名称 CDATA #REQUIRED
数量 CDATA #REQUIRED
说明 CDATA #IMPLIED
>
]>
------------------------------------------------------------------------------
XML解析技术:
1.文档对象模型(DOM),一种基于树结构的API;整个XML文档必须在内存中解析和储存;客户端应用程序就可以随机访问这些对象;大型文档则会造成内存紧张
2.XML简单API(SAX),一种事件驱动API,提供一种用于解析XML文档的事件驱动模型;使用回调机制将事件通知应用程序;特点:不必将整个文件加载到内存中,占用内存少;不能对文档进行随机访问;SAX时只读的;文档只能遍历一次
有效的XML一定是格式良好的,但格式良好的XML不一定是有效的
---------------------
DTD:
<?xml version="1.0" encoding="GB2312" ?>
<!DOCTYPE 家庭 [ <!--DOCTYPE定义根元素:家庭-->
<!ELEMENT 家庭 (人+,家电*)> <!--ELEMENT表示描述元素:()表示定义元素的子元素-->
<! ELEMENT 人 (#PCDATA)> <!--#PCDATA表示"人"元素,标签中间的内容为文本-->
<!ELEMENT 家电 EMPTY> <!--EMPTY表示"家电"元素为空元素-->
<!ATTLIST 人 <!--ATTLIST 表示定义元素的属性>
名字 CDATA #REQUIRED <!--CDATA 表示属性的内容为文本-->
性别 (男|女) #REQUIRED <!--#REQUIRED表示该属性必须书写-->
年龄 CDATA #REQUIRED
爱好 CDATA #IMPLIED <!--#IMPLIED表示该属性可有可无-->
>
<!ATTLIST 家电
名称 CDATA #REQUIRED
数量 CDATA #REQUIRED
说明 CDATA #IMPLIED
>
]>
------------------------------------------------------------------------------
XML解析技术:
1.文档对象模型(DOM),一种基于树结构的API;整个XML文档必须在内存中解析和储存;客户端应用程序就可以随机访问这些对象;大型文档则会造成内存紧张
2.XML简单API(SAX),一种事件驱动API,提供一种用于解析XML文档的事件驱动模型;使用回调机制将事件通知应用程序;特点:不必将整个文件加载到内存中,占用内存少;不能对文档进行随机访问;SAX时只读的;文档只能遍历一次