xml reference dtd or xsd

DTD现在用得已经很少了,但是还是有用得地方,如果用的是外部的DTD时,我们需要在我们的xml文件里面通过publicid或者systemid指向这个dtd资源,尤其在需要做验证的时候非常重要。对外部dtd引用的格式一般有下面几种

# <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.1//EN" "docbook.dtd">

public分两部分,前面是id,后面是能locate到的url,id的格式一般是

prefix//owner-identifier//text-class text-description//language//display version

<!DOCTYPE book SYSTEM "customdocbook.dtd">

system会直接的指向locate url

xsd是现在用得比较多的方式,xsd是dtd的代替者,官方的理由是:

XML Schema 可针对未来的需求进行扩展 

XML Schema 更完善,功能更强大 

XML Schema 基于 XML 编写 

XML Schema 支持数据类型 

XML Schema 支持命名空间 

其中指出dtd是不支持命名空间的,所以在引用外部的xml schema的时候跟dtd的引用方式是有一些不一样的

<?xml version="1.0" encoding="GB2312"?>
<book xmlns="http://www.sunxin.org/book"   ①
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  ②
xsi:schemaLocation="http://www.sunxin.org/book http://www.sunxin.org/ 
book.xsd">  ③
<title>《Struts 2深入详解》</title>
<author>孙鑫</author>
</book>

上面是一个例子,xsi:schemaLocation就是对xsd的引用,他是有一对中间用空格隔开的字符串表示的,前面是命名空间,后面是可以定位的url,如果还有别的引用,就在后面继续用空格隔开,再接一对这样的字符串就可以了

猜你喜欢

转载自bkhh.iteye.com/blog/1885349