<span style="font-size:14px;">1.什么是xml文件的约束</span>
什么是XML约束?在一个XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束。
2.为什么需要约束
在xml文件中,如果不加以约束,则计算机无法理解,或者也会出现很多不必要的错误,比如书的名字,书的名字只能是唯一的一个,同样书的价格也是同样唯一的,其次,在有的时候限定了数目的多少,例如,一个项目中规定多少个成员,不能超过也不能少于,再次,对于一些枚举类型中,只能选择某些特定的选项,而这些选择都可以再xml约束文件中给出,这样就能毕业在计算机读取的过程中读到无法识别的选项。总之,约束能带来很多的方便,不仅是对于计算机的阅读而言,同时对于编程人员的编写代码也非常有益。
3.常用的两种约束
xml dtd
xml Schema
4. DTD的内容
(1) DTD 即document type definition,称之为文档类型定义,文件类型为 文件名.dtd,Schema比DTD约束更加升级,能避免DTD的很多缺陷。
DTD实际上可以看作一个或多个XML文件的模板,这些XML文件中的元素、元素的属性、元素的排列方式/顺序、元素能够包含的内容等,都必须符合DTD中的定义。XML文件中的元素,即我们所创建的标记,是根据我们应用的实际情况来创建的。想要创建一份完整性高、适应性广的DTD是非常困难的,因为各行各业都有他们自己的行业特点,所以DTD通常是以某种应用领域为定义的范围,如:医学、建筑、工商、行政。DTD定义的元素含盖范围越广泛,那么就越复杂。引入约束的两种方式:(以DTD为例)
第一种,DTD文件作为一个单独的文件编写,在xml文件中引入
在某一文件夹中新建一个文件以.dtd结尾,例如新建book.dtd
<span style="font-size:14px;">文件清单:book.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE 书架 SYSTEM "book.dtd">
<书架>
<书>
<书名>Java就业培训教程</书名>
<作者>张孝祥</作者>
<售价>39.00元</售价>
</书>
<书>
<书名>JavaScript网页开发</书名>
<作者>张孝祥</作者>
<售价>28.00元</售价>
</书>
</书架>
</span>
<span style="font-size:14px;"><pre name="code" class="plain">文件清单:book.dtd
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)></span>
第二种,直接在xml文件中编写
<span style="font-size:14px;"><pre name="code" class="plain"><pre name="code" class="plain"><?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE 书架 [
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>
]>
<书架>
<书>
<书名>Java就业培训教程</书名>
<作者>张孝祥</作者>
<售价>39.00元</售价>
</书>
</书架>
</span>
(2)外部和内部编写dtd约束,区别就是在内部时需要增加[ ],而在外部引用中,需要标注引用,<!DOCTYPE 书架 SYSTEM "book.dtd">其他的类似。对于属性的说明,+代表一个或者多个,必须存在,?表示0个或1个,*表示0个或多个。
(3)属性设置:
#REQUIRED:必须设置该属性
#IMPLIED:可以设置也可以不设置
#FIXED:说明该属性的取值固定为一个值,在 XML 文件中不能为该属性设置其它值。但需要为该属性提供这个值
直接使用默认值:在 XML 中可以设置该值也可以不设置该属性值。若没设置则使用默认值。