xml--约束
对于一般的开发人员来说:能根据约束文件来写出符合规则的xml文件即可。
xml语法和xml约束:
XML语法: 规范的xml文件的基本编写规则。(由w3c组织制定的)
XML约束: 规范XML文件数据内容格式的编写规则。(由开发者自行定义)
注意:xml约束是是用来定义数据内容格式的,并且是开发者自行定义。
常用的约束技术:
DTD约束:语法相对简单,功能也相对简单。学习成本也低。
Schema约束:语法相对复杂,功能也相对强大。学习成本相对高!!!(名称空间)
注意:具体的Schema约束可以参照w3school中的文档。
DTD约束:
文件后缀:xxx.dtd.
导入方式:
1)导入dtd的方式
<1>内部导入
<!DOCTYPE> 标签名 [条件]>
1 <!DOCTYPE note [ 2 <!ELEMENT note (to,from,heading,body)> 3 <!ELEMENT to (#PCDATA)> 4 <!ELEMENT from (#PCDATA)> 5 <!ELEMENT heading (#PCDATA)> 6 <!ELEMENT body (#PCDATA)> 7 ]>
<2>外部导入
1>本地文件系统导入
<!DOCTYPE> 标签名 SYSTEM 本地dtd文件路径>
1 <!DOCTYPE note SYSTEM "note.dtd">
2>公共外部导入
<!DOCTYPE> 标签名 PUBLIC 文件路径>
1 <!DOCTYPE 根元素 PUBLIC "http://gz.itcast.cn/itcast.dtd">
2)DTD语法
约束标签
<!ELEMENT 元素名称 类别> 或 <!ELEMENT 元素名称 (元素内容)>
类别:
空标签: EMPTY。 表示元素一定是空元素。
普通字符串: (#PCDATA)。表示元素的内容一定是普通字符串(不能含有子标签)。
任何内容: ANY。表示元素的内容可以是任意内容(包括子标签)。
元素内容:
顺序问题:
<!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>: 按顺序出现子标签
次数问题:
标签 : 必须且只出现1次。
标签+ : 至少出现1次
标签* : 0或n次。
标签? : 0 或1次。
约束属性
<!ATTLIST 元素名称 属性名称 属性类型 默认值>
默认值:
#REQUIRED 属性值是必需的
#IMPLIED 属性不是必需的
#FIXED value 属性不是必须的,但属性值是固定的
属性类型:控制属性值的
CDATA :表示普通字符串
en1|en2|..): 表示一定是任选其中的一个值
ID:表示在一个xml文档中该属性值必须唯一。值不能以数字开头
Schema约束:
文件后缀:xxx.xsd
Schema中用的最多的就是名称空间(nameSpace)。在xml中定义名称空间的关键字是:xmlns;定义名称空间别名的Schema地址的关键字是:schemaLocation。
原理图如下:
targetNamespace元素用于指定schema文档中声明的元素属于哪个名称空间。
代码示例:
book.xsd文件
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 3 targetNamespace="http://www. itcast.cn" 4 elementFormDefault="qualified"> 5 <xs:element name='书架' > 6 <xs:complexType> 7 <xs:sequence maxOccurs='unbounded' > 8 <xs:element name='书' > 9 <xs:complexType> 10 <xs:sequence> 11 <xs:element name='书名' type='xs:string' /> 12 <xs:element name='作者' type='xs:string' /> 13 <xs:element name='售价' type='xs:string' /> 14 </xs:sequence> 15 </xs:complexType> 16 </xs:element> 17 </xs:sequence> 18 </xs:complexType> 19 </xs:element> 20 </xs:schema>
xml文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <itcast:书架 xmlns:itcast="http://www.itcast.cn" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xsi:schemaLocation="http://www.itcast.cn book.xsd"> 6 7 <itcast:书> 8 <itcast:书名>JavaScript网页开发</itcast:书名> 9 <itcast:作者>张孝祥</itcast:作者> 10 <itcast:售价>28.00元</itcast:售价> 11 </itcast:书> 12 </itcast:书架>