002 DTD和schema约束

=================

DTD作用便是约束xml,可以单独写一个dtd文件,也可以xml里
一个xml只能指定一个DTD,但是可以指定多个schema,schema也是一种约束
这样如果写的xml没有根据约束走,就会提示出错,在eclipse里会有x出现
    
如果是网络的dtd, PUBLIC就是代表网络上的   UNKNOWN是dtd的名称 ,unknown.dtd是dtd的路径
<<!DOCTYPE stus PUBLIC "//UNKNOWN/" "unknown.dtd">

如果是本地的dtd,直接写路径即可
<<!DOCTYPE stus SYSTEM "_003_DTD和schema语法.dtd">

如果是本页面写
<!DOCTYPE stus[
<!ELEMENT stus (stu)>               代表stus有1个子标签,如果有多个相同的stu, stus (stu)+ 即可,+代表1个或多个,是正则
<!ELEMENT stu (name,age)>      代表stu有2个子标签,顺序必须相同,如果中间是| 就是2个当中有一个,但不能有2个
<!ELEMENT name (#PCDATA)>   #PCDATA 代表文本,也就是随便写
<!ATTLIST stu  id CDATA "#IMPLIDE">     !ATTLIST 元素名称 属性名称 属性类型 默认值  这个是约束属性的
#REQUIRED      属性值是必需的
#IMPLIED        属性不是必需的
#FIXED value    属性值是固定的

这里DTD只做简单的使用,DTD教程 http://www.runoob.com/dtd/dtd-tutorial.html

<!DOCTYPE stus[
<!ELEMENT stus (stu)*>      
<!ELEMENT stu (name , age)> 
<!ELEMENT name (#PCDATA) >
<!ELEMENT age (#PCDATA) >
<!ATTLIST stu  id  CDATA "#IMPLIDE" >
]>

<stus>
		<stu id="10086" >
				<name>李四</name>
				<age>18</age>
		</stu>
		<stu id="10086" >
				<name>张三</name>
				<age>19</age>
		</stu>
</stus>

schema约束语法

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

<!-- xmlns  名称空间,命名空间 -->
<!-- targetNamespace 目标名称的空间,下面定义的元素都与这个名称空间绑定 -->
<!-- elementFormDefault  元素的格式化情况 -->


<element name="teachers">
		<!--代表复杂元素 -->
		<complexType>
				<!-- 	代表是一个有序元素,且teacher能出现俩次 maxOccurs="2"-->
				<sequence >
					<element name="teacher">
						<!-- 这是一个复杂元素-->
						<complexType>
											<!-- 代表这是一个有序的元素 -->
											<sequence>
													<!-- 下面2个都是简单元素 -->
													<element name="name" type="string"></element>
													<element name="age" type="int"></element>
											</sequence>
									</complexType>
					 </element>
				</sequence>
		</complexType>
</element>
</schema>

在xml里引入

<!-- 这个要写 -->
<teachers
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://www.example.org/_004_Schema"
	xsi:schemaLocation="http://www.example.org/_004_Schema _004_Schema.xsd"
>
		<teacher>
				<name>哈哈哈</name>
				<age>19</age>
		</teacher>
</teachers>

上面2种约束,都只是了解即可,可以做一个简单的约束就行了,因为前期都是用的别人的约束

猜你喜欢

转载自blog.csdn.net/yzj17025693/article/details/82823050
002