Javaweb学习笔记——schema约束

简介: XML Schema是一种用于定义和描述XML文档结构与内容的模式语言,它的出现克服了DTD的局限性。

Schema约束


1、什么是Schema约束


XML Schema是一种用于定义和描述XML文档结构与内容的模式语言,它的出现克服了DTD的局限性。


那么XML Schema有哪些显著优点呢?这里我们通过以下比较来看看。


XML Schema与DTD的比较:


  • DTD采用的是非XML语法格式,缺乏对文档结构、元素、数据类型等全面的描述。XML

Schema采用的是XML语法格式,而且它本身也是一种XML文档,所以XML Schema语法格式比DTD更好理解。


  • XML有非常高的合法性要求,虽然DTD和XML Schema都用于对XML文档进行描述,都被用做验证


  • XML合法性的基础。但是,DTD本身合法性的验证必须采用另外一套机制,而XML Schema则采用与XML文档相同的合法性验证机制。


  • XML Schema对名称空间支持非常好,DTD几乎不支持名称空间。


  • DTD支持的数据类型非常有限,XML Schema支持更多的数据类型,包括用户自定义的数据类型。


  • DTD定义约束的能力非常有限,无法对XML实例文档作出更细致的语义限制,而XML

Schema定义约束的能力非常强大,可以对XML实例i文档作出细致的语义限制。


XML Schema的功能比DTD强大很多,但相应的语法也比DTD复杂很多。


2、名称空间


一个XML文档可以引入多个约束文档,但是,约束文档中的元素或属性都是自定义的,所以在XML文档中,极有可能出现代表不同含义的同名元素或者属性,导致名称发生冲突。为此,在XML文档中,提供了名称空间,它可以唯一标识一个元素或者属性。


2.1名称空间的声明


名称空间的声明就是在XML实例文档中为某个模式文档的名称空间指定一个临时的简写名称,它通过一系列的保留属性来声明,名字必须是以xmlns或者xmlns:作为前缀。

声明的语法格式如下:


<元素名 xmlns:prefixname=“URI”>


元素名指的是在哪一个元素上声明名称空间,在这个元素上声明的名称空间适用于声明它的元素和属性,以及该元素中嵌套的所有元素及其属性。


xmlns:prefixname指的是该元素的属性名,对应的值是一个URI引用,用来标识该名称空间的名称。


如果有两个URI并且其组成的字符完全相同,就可以认为它们标识的是同一个名称空间。


3、引入Schema文档


3.1使用名称空间引入XML Schema文档


通过属性xsi:schemaLocation来声明名称空间的文档,xsi:schemaLocation属性是在标准名称空间http://www.w3.org/2001/XMLSchema-instance中定义的。


第一个URI是名称空间的名称,第二个URI是文档的位置。


4、Schema语法


任何语言都有一定的语法,Schema也不例外。接下来,让我们一起来了解Schema语法吧~


4.1元素定义


元素定义的语法格式如下:


element用于声明一个元素

xxx指的是元素的名称

yyy指元素你的数据类型




XML中常用的内建的数据模型:


  • xs:string:表示字符串类型
  • xs:decimal:表示小数类型
  • xs:integer:表示整数类型
  • xs:boolean:表示布尔类型
  • xs:date:表示日期类型
  • xs:time:表示时间类型


4.2属性的定义


属性定义的语法格式如下:

xxx指的是属性名称,yyy指的是属性的数据类型。其中,属性的常用数据类型与元素相同,都使用的是XML Schema中内建的数据类型。


<xs:attribute name=“xxx” type=“yyy”/>


4.3简单类型


简单类型使用xs:simpleType元素来定义。如果想对现有元素内容的类型进行限制,则需要使用xs:restriction元素。


xs:minlnclusive和xs:maxlnclusive元素对值进行限定,可以限定值的范围。


xs:enumeration元素对一组值的限定:如果希望将XML元素的内容限制为一组可接受的值,可以使用枚举约束。


xs:pattern元素对一系列值的限定:如果希望把XML元素的内容限制定义为一系列可使用的数字或者字母,可以使用模式约束。


xs:restriction元素对空白字符的限定:空白字符比较特殊,如果需要对空白字符进行处理,可以使用whiteSpace元素。


whiteSpace元素有三个属性值可以设定,即preserve、replace、collapse。

preserve:不对元素中的任何空白字符进行处理

replace:移除所有的空白字符

collapse:将所有的空白字符缩减为一个单一字符。


4.4复杂类型


除简单类型之外的其他类型都是复杂类型,在定义复杂类型时,需要使用xs:complexContent元素来定义。


复杂类型的元素可以包含子元素和属性,这样的元素称为复合元素。


在定义复合元素时,如果元素的开始标记和结束标记之间只包含字符数据内容,那么这样的内容是简易内容,需要使用xs:simpleContent元素来定义。


反之,元素的内容都是复杂内容,需要使用xs:complexContent元素来定义。


复合元素有4种基本类型:空元素、包含其它元素的元素、仅包含文本的元素、包含元素和文本的元素


总结


以上就是今天学习的内容啦,分享给大家~


咱们下期再见噢~

相关文章
|
4月前
|
JavaScript Java 大数据
基于JavaWeb的销售管理系统设计系统
本系统基于Java、MySQL、Spring Boot与Vue.js技术,构建高效、可扩展的销售管理平台,实现客户、订单、数据可视化等全流程自动化管理,提升企业运营效率与决策能力。
|
7月前
|
Java API 微服务
2025 年 Java 从入门到精通学习笔记全新版
《Java学习笔记:从入门到精通(2025更新版)》是一本全面覆盖Java开发核心技能的指南,适合零基础到高级开发者。内容包括Java基础(如开发环境配置、核心语法增强)、面向对象编程(密封类、接口增强)、进阶技术(虚拟线程、结构化并发、向量API)、实用类库与框架(HTTP客户端、Spring Boot)、微服务与云原生(容器化、Kubernetes)、响应式编程(Reactor、WebFlux)、函数式编程(Stream API)、测试技术(JUnit 5、Mockito)、数据持久化(JPA、R2DBC)以及实战项目(Todo应用)。
402 5
|
4月前
|
小程序 Java 知识图谱
Java 学习笔记 —— BMI & BMR 计算器
这是一个使用 Java 编写的 BMI 与 BMR 计算器小程序,可输入年龄、性别、身高和体重,计算身体质量指数(BMI)和基础代谢率(BMR),并输出健康评估结果。通过该项目,掌握了 Java 的输入处理、数据验证、条件判断、数学运算及格式化输出等基础知识,是 Java 初学者的理想练习项目。
|
10月前
|
存储 Java
# 【Java全栈学习笔记-U1-day02】变量+数据类型+运算符
本篇笔记主要围绕Java全栈学习的第二天内容展开,涵盖了变量、数据类型、运算符以及Scanner类的应用。首先介绍了变量的概念与命名规范,以及如何定义和使用变量;接着详细讲解了Java中的基本数据类型,包括整型、浮点型、字符型、布尔型等,并通过实例演示了数据类型的运用。随后,深入探讨了各类运算符(赋值、算术、关系、逻辑)及其优先级,帮助理解表达式的构成。最后,介绍了如何利用Scanner类实现用户输入功能,并通过多个综合示例(如计算圆面积、购物打折、变量交换及银行利息计算)巩固所学知识。完成相关作业将进一步加深对这些基础概念的理解与实践能力。
199 13
|
4月前
|
Java
Java 数组学习笔记
本文整理Java数组常用操作:遍历、求和、查找、最值及二维数组行求和等典型练习,涵盖静态初始化、元素翻倍、去极值求平均等实例,帮助掌握数组基础与应用。
|
6月前
|
SQL 前端开发 Java
JavaWeb 学习日记案例详解及 javaweb 完整项目案例实战指南
本文介绍了一个基于Spring Boot的JavaWeb企业员工管理系统完整案例,涵盖部门管理、员工管理、登录、异常处理、事务管理及AOP等核心功能实现,结合CSDN相关技术文章,提供详细技术方案与应用实例,适合JavaWeb开发者学习与参考。
315 0
|
10月前
|
开发框架 Java 开发工具
【Java全栈学习笔记-U1-day01】Java介绍
本笔记整理了Java学习的基础内容,涵盖程序理解、Java语言特性、JDK安装与配置、Java程序开发工具及编写步骤。重点介绍了Java程序的基本结构、编译和运行过程,以及输出语句的使用。通过实例演示了IDEA创建Java程序的方法,并强调了编码规范和注意事项。适合初学者复习和交流学习。 主要内容: 1. 理解程序:计算机组成、程序定义。 2. 简介:Java语言特点、技术平台、JDK作用。 3. 编写Java程序:编写、编译、运行步骤,基本结构。 4. 输出语句 5. DEA使用:新建工程、保存位置、文件介绍、新建类。 6. 扩展:注释、代码规范、大小写敏感、缩进等。
|
12月前
|
前端开发 Java 数据库连接
【潜意识Java】深度解读JavaWeb开发在Java学习中的重要性
深度解读JavaWeb开发在Java学习中的重要性
234 4
|
前端开发 Java 应用服务中间件
Javaweb学习
【10月更文挑战第1天】Javaweb学习
128 2
|
Java 数据库连接 API
Spring 框架的介绍(Java EE 学习笔记02)
Spring是一个由Rod Johnson开发的轻量级Java SE/EE一站式开源框架,旨在解决Java EE应用中的多种问题。它采用非侵入式设计,通过IoC和AOP技术简化了Java应用的开发流程,降低了组件间的耦合度,支持事务管理和多种框架的无缝集成,极大提升了开发效率和代码质量。Spring 5引入了响应式编程等新特性,进一步增强了框架的功能性和灵活性。
264 0