一、XML的概述(了解)
* eXtensible Markup Language 可扩展标记语言
* 宗旨是传输数据,而非显示数据。
* XML标签没有被预定义,需要用户自行定义标签。
* XML技术是W3C组织(WorldWideWeConsortium万维网联盟)发布的,目前遵循的是W3C组织于2000年发布的XML1.0规范。
* 作用: a. 传输数据
b. 配置文件(主要用途)
二、XML的语法(掌握)
* <?xml version=“1.0”?> 文档声明必须出现在第一句
* 一个标签有如下两种书写形式:
包含标签主体:<mytag>some content</mytag>不含标签主体:<mytag/>
* 一个XML文档必须有且仅有一个根标签
* XML中不会忽略主体内容中出现的空格和换行。
* 严格区分大小写
* <!--这是注释-->
* CDATA : 把标签当做普通文本内容;
<![CDATA[
<itcast>www.itcast.cn</itcast>
]]>
<?xml version = "1.0" ?>
<中国>
<首都>北京</首都>
</中国>
未写encoding属性:
encoding属性:告诉浏览器 解码的时候采用什么来解码
三、XML的约束(看懂即可,掌握引入外部约束文件的语句)
* DTD约束(不够严谨)
(Document Type Definition)文档类型定义
*分类:
格式良好的XML:遵循XML语法的XML有效的XML:遵循约束文档的XML
约束文档定义了在XML中允许出现的元素名称、属性及元素出现的顺序等等。
注意:dtd文档必须用utf-8编码格式保存
* 校验XML的有效性* 非校验解析器 参见validator.html* 校验解析器
* DTD 文件的引入:
当引用的DTD文档在本地时,采用如下方式:<!DOCTYPE 根元素 SYSTEM “DTD文档路径”>当引用的DTD文档在公共网络上时,采用如下方式:
<!DOCTYPE 根元素 PUBLIC “DTD名称” “DTD文档的URL”>eg : <!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd">
* DTD文件的语法
在DTD文档中使用ELEMENT关键字来声明一个XML元素。如果子元素用逗号分开,说明必须按照声明顺序去编写XML文档。如果子元素用“|”分开,说明任选其一用+、*、?来表示元素出现的次数
定义属性:
<!ATTLIST 元素名
采用IE内置的解析器来验证xml文件的正确性:属性名1 属性值类型 设置说明属性名2 属性值类型 设置说明>
book.xml:
<?xml version = "1.0" ?>
<!DOCTYPE 书架 SYSTEM "book.dtd">
<书架>
<书>
<书名>葵花宝典</书名>
<作者>安倍晋三</作者>
<售价>100</售价>
</书>
<书>
<书名>金瓶梅</书名>
<作者>安倍晋四</作者>
<售价>50</售价>
</书>
</书架>
book.dtd:
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>
vaidator.html:
<body>
<script type="text/javascript">
<!--
var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
xmldoc.validateOnParse = "true";
xmldoc.load("book.xml");
var reason = xmldoc.parseError.reason;
var line = xmldoc.parseError.line ;
document.write(line + ":" + reason) ;
//-->
</script>
</body>
* Schema约束(严谨,结构清晰)
掌握如何引入一个schema文件
* 名称空间 : 指的是一个环境,所用的标签来自于哪个环境定义的。* 掌握引用schema文件:
xml中引入schema约束的步骤:
1、查看schema文档,找到根元素,在xml中写出来
<?xml version="1.0" encoding="UTF-8"?><书架></书架>
2、根元素来自哪个名称空间。使用xmlns指令来声明
名称空间是在schema中定义的,就是targetNamespace的值
<?xml version="1.0" encoding="UTF-8"?><itcast:书架 xmlns:itcast="http://www.itcast.com/book"></itcast:书架>
3、引入的名称空间根哪个xsd文件对应?
使用schemaLocation来指定:两个取值:第一个为名称空间 第二个为xsd文件的路径
<?xml version="1.0" encoding="UTF-8"?><itcast:书架 xmlns:itcast="http://www.itcast.com/book"
schemaLocation="http://www.itcast.com/book book.xsd">
</itcast:书架>
4、schemaLocation哪里来的?它来自一个标准的名称空间,直接复制黏贴即可.
<?xml version="1.0" encoding="UTF-8"?>
<itcast:书架 xmlns:itcast="http://www.itcast.com/book"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.itcast.com/book book.xsd">
</itcast:书架>
5、只要以上4部搞好了,对于子标签myeclipse就有提示了