XML约束

一、约束

  约束:规定 xml 文档的书写规则

  要求

    1、能够在 xml 中引入约束文档

    2、能够简单的读懂约束文档

  分类

    1、DTD:一种简单的约束技术(后缀.dtd)

    2、Schema:一种复杂的约束技术(后缀.xsd)

二、DTD 约束

  1、引入 dtd 文档到 xml 文档中

    •  内部 dtd:将约束规则定义在 xml 文档中
    • 外部 dtd:将约束规则定义在外部的 dtd 文件中
      •  外部本地文件:<!DOCTYPE 根标签名 SYSTEM "dtd文件的位置">
      • 外部网络文件:<!DOCTYPE 根标签名 PUBLIC "dtd文件名字" "dtd文件的位置URL">

  2、案例

   student.dtd 约束

 <!-- 一个根元素,叫students,里面可以有0-n个student-->
<!ELEMENT students (student*) >
<!-- 一个student 里面有 name,age,sex,三个标签,且书写按照顺序-->
<!ELEMENT student (name,age,sex)>
<!-- name 里面存放数据-->
<!ELEMENT name (#PCDATA)>
<!-- age 里面存放数据-->
<!ELEMENT age (#PCDATA)>
<!-- sex 里面存放数据-->
<!ELEMENT sex (#PCDATA)>
<!-- student 标签有一个number属性,是作为id属性,而且是必须有的-->
<!ATTLIST student number ID #REQUIRED>

  student.xml 文件

 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE students SYSTEM "student.dtd"> <!--<!DOCTYPE students [ // 也可以这样引入约束 <!ELEMENT students (student+) >
<!ELEMENT student (name,age,sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ATTLIST student number ID #REQUIRED> ]>-->
<students> <student number="s001">
<name>zhangsan</name>
<age>abc</age>
<sex>hehe</sex>
</student> <student number="s002">
<name>lisi</name>
<age>24</age>
<sex>female</sex>
</student> </students>

三、Schema

  1、引入约束文件

    (1)填写 xml 文档的根元素

    (2)引入 xsi 前缀

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

    (3)引入 xsd 文件命名空间

xsi:schemaLocation="http://www.itcast.cn/xml  student.xsd"

    (4)为每一个xsd约束声明一个前缀,作为标识

xmlns="http://www.itcast.cn/xml" 

  2、案例

    student.xsd 约束文件

 <?xml version="1.0"?>
<xsd:schema xmlns="http://www.itcast.cn/xml"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.itcast.cn/xml" elementFormDefault="qualified">
<!-- 里面有一个根元素students,类型为自定义-->
<xsd:element name="students" type="studentsType"/>
<!-- 自定义的 students 类型复杂类型-->
<xsd:complexType name="studentsType">
<!-- 属性是有序的 -->
<xsd:sequence>
<!-- 子标签为 student,类型为自定义,最少一个,最多无限-->
<xsd:element name="student" type="studentType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<!-- 自定义student类型 复杂类型-->
<xsd:complexType name="studentType">
<!-- 各个属性都是有序的 -->
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="age" type="ageType" />
<xsd:element name="sex" type="sexType" />
</xsd:sequence>
<!-- student 标签有一个number属性,自定义类型,必须有 -->
<xsd:attribute name="number" type="numberType" use="required"/>
</xsd:complexType>
<!-- 自定义简单类型 -->
<xsd:simpleType name="sexType">
<!-- 里面的值为字符串,切取值有限制-->
<xsd:restriction base="xsd:string">
<xsd:enumeration value="male"/>
<xsd:enumeration value="female"/>
</xsd:restriction>
</xsd:simpleType>
<!-- 自定义简单类型-->
<xsd:simpleType name="ageType">
<!-- 里面的值为整形,取值范围 0-256 -->
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="256"/>
</xsd:restriction>
</xsd:simpleType>
<!-- 自定义简单类型-->
<xsd:simpleType name="numberType">
<!-- 里面的值为字符串,切以heima开头,后面跟4位数字-->
<xsd:restriction base="xsd:string">
<xsd:pattern value="heima_\d{4}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>

  student.xml

 <?xml version="1.0" encoding="UTF-8" ?>
<!--
1.填写xml文档的根元素
2.引入xsi前缀. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3.引入xsd文件命名空间. xsi:schemaLocation="http://www.itcast.cn/xml student.xsd"
4.为每一个xsd约束声明一个前缀,作为标识 xmlns="http://www.itcast.cn/xml" -->
<students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.itcast.cn/xml"
xsi:schemaLocation="http://www.itcast.cn/xml student.xsd" >
<student number="heima_0001">
<name>tom</name>
<age>18</age>
<sex>male</sex>
</student> </students>

XML 约束的更多相关文章

  1. XML约束之DTD

    XML文件的约束:什么叫约束呢?顾名思义,就是对xml文件的内容进行按照既定规则的限制.我们知道,因为xml文件的标签是可以自定义的,而往往我们用xml文件都是为了表达一定的数据集合(即小型的数据库) ...

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

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

  3. XML约束——DTD约束

    参考: 方立勋老师的讲课视频.   什么是XML约束 •在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束. 为什么需要XML约束 常用的约束技术 •XML DTD • ...

  4. 二、XML约束

    XML约束有dtd约束和Schema约束两种 dtd约束:可以在xml内部写dtd约束也可以在xml中引用外部dtd文件 book.dtd<!ELEMENT 书架 (书+)>    < ...

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

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

  6. JavaBean 内省API BeanUtils工具 泛型 xml xml约束

    1 什么是JavaBean?有何特征? 1)符合特定规则的类    2)JavaBean分二类:     a)侠义的JavaBean         .私有的字段(Field)         .对私 ...

  7. XML约束

    XML约束--能够看懂约束内容,根据约束内容写出符合规则的xml文件. DTD约束 1)导入dtd方式 内部导入 <!DOCTYPE note [ <!ELEMENT note (to,f ...

  8. XML约束(3)

    本节要点: 了解XML的约束模式 了解DTD 了解Schema 1 了解XML的约束模式 计算机程序在处理XML文档之前,必须能够解析出XML文档的内容中各个元素的相关信息.将解析出来的信息再交给下游 ...

  9. xml约束的概念

    1 xml 约束的概念 XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML ...

  10. xml约束技术之dtd

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

随机推荐

  1. [转]ProxmoxVE 干掉 VMware

    很久没有写这种通俗易懂的文章了,不是我愤世嫉俗,而是因为确实太为那些花大价钱购买VMware的冤大头鸣不平. 确实VMware在虚拟化市场占有率非常高,技术也非常成熟,用户使用起来很方便,但是如果你是 ...

  2. Java URLDecoder和URLEncoder对中文进行编码和解码

    URLDecoder类包含一个decode(String s,String enc)静态方法,它可以将application/x-www-form-urlencoded MIME字符串转成普通字符串: ...

  3. 如何SpringBoot项目改为外置Tomcat启动

    正常情况下,我们开发 SpringBoot 项目,由于内置了Tomcat,所以项目可以直接启动,部署到服务器的时候,直接打成 jar 包,就可以运行了 (使用内置 Tomcat 的话,可以在 appl ...

  4. JdkDynamicAopProxy 拦截器链的获得与递归执行

    JdkDynamicAopProxy类的invoke方法 1.获得拦截器链 List<Object> chain = this.advised.getInterceptorsAndDyna ...

  5. gradle 使用maven repository 的设置

    repositories {    //Maven中心库(http://repo1.maven.org/maven2)    mavenCentral() //本地库,local repository ...

  6. Eclipse导入工程提示“No projects are found to import”

    如果发现导入工程的时候,出现"No projects are found to import" 的提示,首先查看项目目录中是否有隐藏文件.project,还有目录结构也还要有一个隐 ...

  7. spring boot集成mybatis分页插件

    mybatis的分页插件能省事,本章记录的是 spring boot整合mybatis分页插件. 1.引入依赖 <!-- 分页插件pagehelper --> <dependency ...

  8. [译]在你的GitHub主页固定仓库

    原文来源:https://github.blog/2016-06-16-pin-repositories-to-your-github-profile/ 您现在可以在GitHub主页上展示最能代表您工 ...

  9. sqlyog 社区版

    https://github.com/webyog/sqlyog-community/wiki/Downloads

  10. java日历类(calendar),可输出年月日等等,以及和Date相互转化

    日历创建对象: Calendar类为抽象类,不可实例化 方式一: 父类引用指向类对象 Calendar  cal = new GregorianCalendar(); 方式二: Calendar ca ...