DTD约束
什么是DTD?
DTD(Document Type Definition),文档类型定义,用来约束XML文档。规定XML文档中元素的名称,子元素的名称及顺序,元素的属性等。
DTD约束长什么样?
xml如何引用DTD约束?
1.内部DTD,在XML文档内部嵌入DTD,只对当前XML有效。
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <!DOCTYPE web-app [ ... //具体的语法 ]> <web-app> </web-app>
2.外部DTD—本地DTD,DTD文档在本地系统上,公司内部自己项目使用。
<?xml version="1.0" encoding="utf-8" standalone="no" ?> <!DOCTYPE web-app SYSTEM "web-app_2_3.dtd"> <web-app> </web-app>
3.外部DTD—公共DTD,DTD文档在网络上,一般都有框架提供。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> </web-app>
Schema约束
什么是Schema?
Schema是新的XML文档约束;
Schema要比DTD强大很多,是DTD 替代者;
Schema本身也是XML文档,但Schema文档的扩展名为xsd,而不是xml。
Schema 功能更强大,数据类型更完善
Schema 支持名称空间
如何引用Schema约束?
引入Schema的命名空间
<web-app xmlns="http://www.example.org/web-app_2_5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/web-app_2_5 web-app_2_5.xsd" version="2.5">
什么是命名空间?
如果一个XML文档中使用多个Schema文件,而这些Schema文件中定义了相同名称的元素时就会出现名字冲突。
所以名称空间就是用来处理元素和属性的名称冲突问题,与Java中的包是同一用途。