【XML】—— 约束

【XML】—— 约束

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

在这里插入图片描述

作为框架的使用者(程序员):

  • 能够在 XML 中引入约束文档
  • 能够简单的读懂约束文档

分类:

  • DTD:一种简单的约束技术
  • Schema:一种复杂的约束技术

一、DTD 约束

参考:https://www.w3cschool.cn/dtd/

什么是 DTD

DTD(Document Type Definition),文档类型定义,用来约束 XML 文档。规定 XML 文档中的元素的名称,子元素的名称及顺序,元素的属性等。

重点掌握

开发过程中,我们很少自己编写 DTD 约束文档,通常情况下我们都是通过框架提高的 DTD 约束文档,编写对应的 XML 文档。
例如:常用的使用 DTD 约束文档的框架为 struts2、hiberate等。

web-app_2_3.dtd

<?xml version="1.0" encoding="UTF-8"?>
<!--
	模拟servlet2.3规范,如果开发人员需要在xml使用当前DTD约束,必须包括DOCTYPE。
	格式如下:
	<!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">
-->
<!ELEMENT web-app (servlet*,servlet-mapping* , welcome-file-list?) >
<!ELEMENT servlet (servlet-name,description?,(servlet-class|jsp-file))>
<!ELEMENT servlet-mapping (servlet-name,url-pattern+) >
<!ELEMENT servlet-name (#PCDATA)>
<!ELEMENT servlet-class (#PCDATA)>
<!ELEMENT url-pattern (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT jsp-file (#PCDATA)>

<!ELEMENT welcome-file-list (welcome-file+)>
<!ELEMENT welcome-file (#PCDATA)>

<!ATTLIST web-app version CDATA #IMPLIED>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">
<web-app version="1.0">
	<servlet>
		<servlet-name></servlet-name>
		<servlet-class></servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name></servlet-name>
		<url-pattern></url-pattern>
	</servlet-mapping>
	<welcome-file-list>
		<welcome-file></welcome-file>
	</welcome-file-list>
</web-app>

引入 dtd 文档到 xml 文档中:

  • 内部dtd:将约束规则定义在 xml 文档中,只对当前 XML 有效。
  • 外部dtd:将约束的规则定义在外部的 dtd 文件中
    • 本地:<!DOCTYPE 根标签名 SYSTEM "dtd文件的位置">,DTD 文档存在本地系统上,公司内部项目使用。
    • 网络:<!DOCTYPE 根标签名 PUBLIC "dtd文件名字" "dtd文件的位置URL">,一般都由框架提供。(推荐使用)

例子:
在这里插入图片描述

DTD 语法(了解)

元素声名:
在这里插入图片描述

在这里插入图片描述

属性声名:
在这里插入图片描述

在这里插入图片描述

二、Schema 约束

什么是 Schema

在这里插入图片描述
与DTD一样,要求可以通过schema约束文档编写xml文档。常见使用schema约束的框架有Spring等。

web-app_2_5.xsd

<?xml version="1.0" encoding="UTF-8"?>
<!-- 
	模拟servlet2.5规范,如果开发人员需要在xml使用当前Schema约束,必须包括指定命名空间。
	格式如下:
	<web-app xmlns="http://www.example.org/web-app_2_5" 
			xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
			xsi:schemaLocation="http://www.example.org/web-app_2_5 web-app_2_5.xsd"
			version="2.5">
-->
<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" 
	targetNamespace="http://www.example.org/web-app_2_5"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:tns="http://www.example.org/web-app_2_5" 
	elementFormDefault="qualified">
	
	<xsd:element name="web-app">
		<xsd:complexType>
			<xsd:choice minOccurs="0" maxOccurs="unbounded">
				<xsd:element name="servlet">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="servlet-name"></xsd:element>
							<xsd:element name="servlet-class"></xsd:element>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="servlet-mapping">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="servlet-name"></xsd:element>
							<xsd:element name="url-pattern" maxOccurs="unbounded"></xsd:element>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="welcome-file-list">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="welcome-file" maxOccurs="unbounded"></xsd:element>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
			</xsd:choice>
			<xsd:attribute name="version" type="double" use="optional"></xsd:attribute>
		</xsd:complexType>
	</xsd:element>
</xsd:schema>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://www.example.org/web-app_2_5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.example.org/web-app_2_5 web-app_2_5.xsd"
	version="2.5">

	<servlet>
		<servlet-name>helloServlet</servlet-name>
		<servlet-class>xxxxxxxxxx</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>helloServlet</servlet-name>
		<url-pattern>/hello</url-pattern>
	</servlet-mapping>
</web-app>

步骤:

  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

命名空间(语法)

什么是命名空间

在这里插入图片描述

约束文档和 XML 关系

在这里插入图片描述

声名命名空间

在这里插入图片描述

其他介绍

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42112635/article/details/86593341
今日推荐