Javaweb学习笔记——schema约束

哈喽大家好,这里是Java框架学习笔记专栏第一期
本期内容——schema约束
笔者还是菜菜,还请大家多多指教呀~



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指元素你的数据类型

<xs:element name=“xxx” type=“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:minlnclusivexs: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种基本类型:空元素、包含其它元素的元素、仅包含文本的元素、包含元素和文本的元素


总结

以上就是今天学习的内容啦,分享给大家~
咱们下期再见噢~

  • 18
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 31
    评论
JSP(JavaServer Pages)是一种服务器端的动态网页开发技术,它可以将 Java 代码嵌入 HTML 页面中,从而实现动态网页的生成。 JSP 的基本原理是将 JSP 页面翻译成 Servlet,在服务器端执行 Servlet 代码,再将执行结果返回给客户端。因此,我们在使用 JSP 开发网页时,需要先了解 Servlet 的相关知识。 JSP 的语法基本上就是 HTML 标签加上 Java 代码。以下是一些基本的 JSP 标签: 1. <% ... %>:嵌入 Java 代码,可以用于定义变量、写循环、判断语句等。 2. <%= ... %>:输出 Java 代码的执行结果。 3. <%-- ... --%>:注释,不会被翻译成 Servlet。 4. <jsp:include ... />:包含其他 JSP 页面或 HTML 页面。 5. <jsp:forward ... />:将请求转发到其他资源(JSP 页面、Servlet 或 HTML 页面)。 6. <jsp:useBean ... />:创建 JavaBean 对象。 7. <jsp:setProperty ... />:为 JavaBean 对象设置属性。 8. <jsp:getProperty ... />:取得 JavaBean 对象的属性值。 在 JSP 页面中,我们还可以使用 EL 表达式和 JSTL 标签库来简化代码编写,提高开发效率。 EL(Expression Language)表达式是一种简化的表达式语言,可以用于取值、赋值、计算等操作。例如,${name} 表示取得名为 name 的变量的值。 JSTL(JavaServer Pages Standard Tag Library)是一套标签库,提供了循环、条件判断、格式化、国际化等常用功能的标签。例如,<c:forEach> 标签可以用于循环遍历集合,<c:if> 标签可以用于条件判断。 除了以上标签库,JSP 还支持自定义标签库。我们可以通过编写标签处理器来扩展 JSP 的功能。 JSP 的优点是可以将 Java 代码嵌入 HTML 页面中,使得网页的开发更加灵活和方便。但是,由于 JSP 页面需要翻译成 Servlet,因此会增加服务器的负担和响应时间。此外,JSP 页面中夹杂着 Java 代码,也不利于代码的维护和调试。因此,在开发大型网站时,建议使用 MVC 设计模式,将业务逻辑和视图分离,使得代码更加清晰和易于维护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

颜颜yan_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值