1.schema约束

  (1)dtd语法:<!ELEMENT 元素名称 约束>

  (2)schema符合xml的语法,xml语句

  (3)一个xml文件中只能有一个dtd,但是可以有多个schema,多个schema是使用名称空间区分(相当于java中的包名)

  (4)dtd里面有PCDATA类型,但是在schema里面可以支持更多的数据类型

      比如 年龄 只能是整数,在schema可以直接定义一个整数

  (5)schema语法更加复杂,所以schema目前不能代替dtd

2.schema快速入门

  (1)创建一个schema文件  后缀名是 .xsd

    注意:根节点是<schema>,并且schema文件也是一个xml文件

  (2)在schema文件中定义了一些属性(如果用Eclipse工具会自动帮你写上)

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/1"
xmlns:tns="http://www.example.org/1"
elementFormDefault="qualified">
</schema>

    xmlns="http://www.w3.org/2001/XMLSchema"

      - 表示当前xml文件是一个schema约束文件(这个属性的值是确定的,不能改变,这个就是一个标志)

    targetNamespace="http://www.example.org/1"

      - 定义schema地址,被约束文件可以通过这个地址引入使用

      - 格式:一般是使用域名加时间(http://www.xxx.cn/20181111),这样是为了防止地址名字一样

    xmlns:tns="http://www.example.org/1"

      - 这个删除

    elementFormDefault="qualified"

  (3)定义schema文件

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/1"
elementFormDefault="qualified">
<element name="persion">
<complexType>
<sequence>
<element name="name" type="string"></element>
<element name="age" type="int"></element>
</sequence>
</complexType>
</element>
</schema>

     - 复杂元素:

      <element name="persion">
          <complexType>
             <sequence>     
             </sequence>
          </complexType>
       </element> 

     - 简单元素

      <element name="name" type="string"></element>
       <element name="age" type="int"></element>

     - 解读

      <sequence> 表示按顺序的(也就是xml文件中元素定义,只能按照这个顺序定义,否则报错)

      name="age" 表示xml元素的标签名为age

      type="string" 表示数据类型

3.xml文件引入schema文件

<?xml version="1.0" encoding="UTF-8"?>
<persion xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.example.org/1"
xsi:schemaLocation="http://www.example.org/1 1.xsd"
>
<name></name>
<age></age>
</persion>

  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    - 表示这是一个被约束的xml文件(标志)

    - :xsi  这个是别名,为了区分下面的xmlsn属性

  xmlns="http://www.example.org/1"

    - 这个就是引入schema文件,这个值就是schema的地址(包名)

  xsi:schemaLocation="http://www.example.org/1 1.xsd"

    - schema地址 空格 schema路径

4. 元素约束(复杂元素的指示器)   

<sequence> : 表示元素的出现顺序

<any> : 表示任意元素

<choice> : 元素只能出现其中的一个

maxOccurs="unbounded" : 表示元素的出现次数(unbounded表示无限)

<element name="age" type="string" maxOccurs="3"></element>

<all> : 元素只能出现一次

<element name="persion">
<complexType>
<all>
<element name="name" type="string"></element>
<element name="age" type="string"></element>
</all>
</complexType>
</element>

5.约束元素属性

  <attribute> : 这个可以定义属性的约束,但是只能定义复杂元素

    - 写在<complexType>标签里面

<element name="persion">
<complexType>
<sequence>
<element name="name" type="string"></element>
<element name="age" type="string"></element>
</sequence>
<attribute name="id" type="int" use="required"></attribute>
</complexType>
</element>

  解读:<attribute name="id" type="int" use="required"></attribute>

  name="id" : 属性名字

  type="int": 属性值的数据类型

  use="required" 是否一定要定义这个属性

     - required  表示一定

     - Prohibited 特性无法使用

     - Optional 特性是可选的并且可以具有任何值。 这是默认值

6.使用2个schema文件约束

1.xsd

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/one"
elementFormDefault="qualified">
<element name="persion">
<complexType>
<sequence>
<element name="name" type="string"></element>
<element name="age" type="string"></element>
</sequence>
</complexType>
</element>
</schema>

2.xsd

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/two"
elementFormDefault="qualified">
<element name="name" type="int"></element>
</schema>

xml文件

<?xml version="1.0" encoding="UTF-8"?>
<persion xmlns="http://www.example.org/one"
xmlns:two="http://www.example.org/two"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/one one.xsd http://www.example.org/two two.xsd"> <two:name>12</two:name>
<name>张三</name>
<age>180</age>
</persion>

5.xml约束技术--------schema的更多相关文章

  1. xml约束技术之dtd

    DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块.这篇文章作简单介绍下DTD的用法.想学习完整的请点击下面w3c的教程. 1.DTD官方教程 ##2.xml约束技术: DTD约束:语法相 ...

  2. 2.xml约束技术----------dtd约束

    1.xml的约束 (1)为什么需要定义约束了 比如现在定义一个person的xml文件,只想要这个文件里面保存人的信息,比如name age等,但是如果在xml文件中写了一个元素<猫>,发 ...

  3. javaweb学习总结十四(xml约束之Schema)

    一:schema约束简单介绍 1:xml Schema的定义以及优缺点 2:xml schema入门 3:命名空间 这里http://www.itcast.cn 并没有什么具体的意义,只是命名而已. ...

  4. XML约束技术

    为了使XML文档规范化,对XML文档的书写进行约束 XML DTD XML文档(test.xml) <?xml version="1.0" encoding="ut ...

  5. xml约束之schema

    使用名称空间引入Schema : 通常需要在Xml文档中的根结点中使用schemaLocation属性来指定. <itcast:书架 xmlns:itcast="http://www. ...

  6. javaweb学习总结八(xml约束DTD)

    一:XML约束概念 xml约束:可以编写一个文档来约束xml文件的书写规范. xml语言格式比较严谨,不可能让程序员随意编写,所以必须要有约束. 二:常用的xml约束技术 1:DTD,document ...

  7. XML约束——Schema约束

    XML Schema 也是一种用于定义和描述 XML 文档结构与内容的模式语言,其出现是为了克服 DTD 的局限性 XML Schema VS DTD: •XML Schema符合XML语法结构. • ...

  8. Eclipse引入自定义XML约束文件(DTD,SCHEMA)问题

    Eclipse引入自定义XML约束文件(DTD,SCHEMA)问题 1:说明 使用Eclipse 编写xml文件的约束文件的,包括DTD约束文件,Schema约束文件的时候, 我们也需要接受eclip ...

  9. JAVA基础学习之XMLCDATA区、XML处理指令、XML约束概述、JavaBean、XML解析(8)

    1.CDATA区在编写XML文件时,有些内容可能不想让解析引擎解析执行,而是当作原始内容处理.遇到此种情况,可以把这些内容放在CDATA区里,对于CDATA区域内的内容,XML解析程序不会处理,而是直 ...

随机推荐

  1. Beyond Compare4 激活

    当你使用过一段时间后会提示有问题,需要激活或者什么. 解决办法: 找到这个路径并删除其下Beyond Compare 4文件夹即可正常使用. C:\Users\******\AppData\Roami ...

  2. Tensorflow | 基本函数介绍 简单详细的教程。 有用, 很棒

     http://blog.csdn.net/xxzhangx/article/details/54606040 Tensorflow | 基本函数介绍 2017-01-18 23:04 1404人阅读 ...

  3. 44 答疑(三)--join的写法/Simple nested loop join的性能问题/Distinct和group by的性能/备库自增主键问题

    44 答疑(三) Join的写法 35节介绍了join执行顺序,加了straight_join,两个问题: --1 如果用left join,左边的表一定是驱动表吗 --2 如果两个表的join包含多 ...

  4. selenium验证码处理之cookie登录

    在实际测试中会经常见到登录操作需要验证码验证登录 常见验证有以下几种: 验证码登录 图片识别   图片滑块识别验证   4.简单验证码计算 针对上面的登录验证解决办法有以下几种: 1.让开发去掉验证码 ...

  5. 毕业之后de经历

    毕业之后 2016年7月,我大学毕业了.7月3号到7月6号,我陆续用我的小行李箱,在半夜12点左右,把我的生活用品拉出宿舍,大汗淋漓之后,我就在晚上12点多,找个奶茶店买一杯芒果冰沙.白天要去厦门的一 ...

  6. MongoDB查询系统

    首先,我们先向集合(collections)中添加测试文档(documents).如下: > for(i=1;i<=5;i++) db.test.insert({x:i,y:i*i,z:6 ...

  7. [常用类]时间内Date、SimpleDateFormat、Calendar类

    Date类的概述是util包下的,不能导入sql包的.* 类 Date 表示特定的瞬间,精确到毫秒. *构造方法 * public Date() * public Date(long date) 如果 ...

  8. Untiy3D的游戏物体的实例和刚体的使用

    一,如下代码, GameObject b = GameObject.Instantiate(bullet, transform.position, transform.rotation) as Gam ...

  9. nginx入门(一)

    什么是nginx? nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5 ...

  10. 前端与后端数据交互的方式之ajax

    前端与后端数据交互的方式之Ajax 对于前端学习而言,CSS+HTML+JavaScript的学习在自我学习的情况下掌握也不是很难,但是想要实现前后端的数据交互在没有指导的情况下学习会是一头雾水.接下 ...