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:书架>
原文地址:https://www.cnblogs.com/nicker/p/6439465.html