XML约束--DTD约束

前端之家收集整理的这篇文章主要介绍了XML约束--DTD约束前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

2.XML约束:@H_403_3@

2.1 引入@H_403_3@

XML语法:规范的@H_403_3@XML@H_403_3@文件的基本编写规则。(有@H_403_3@w3c@H_403_3@组织制定的)@H_403_3@

XML约束:规范@H_403_3@XML@H_403_3@文件数据内容格式的编写规则。(由开发者自定义)@H_403_3@

2.2 XML约束的技术@H_403_3@

DTD约束:语法相对简单,功能相对简单,学习成本相对低@H_403_3@

Schema约束:语法相对复杂,功能相对复杂,学习成本相对高(名称空间)@H_403_3@

2.3 DTD约束@H_403_3@

1)导入@H_403_3@DTD方式@H_403_3@

a)内部导入@H_403_3@

<?@H_403_3@xml@H_403_3@version@H_403_3@=@H_403_3@@H_301_72@"1.0"@H_403_3@?>@H_403_3@

<!@H_403_3@DOCTYPE@H_403_3@note@H_403_3@[

<!ELEMENT@H_403_3@note@H_403_3@(to@H_403_3@,@H_403_3@from@H_403_3@,@H_403_3@heading@H_403_3@,@H_403_3@body@H_403_3@)>@H_403_3@

<!ELEMENT@H_403_3@to@H_403_3@(#PCDATA)@H_403_3@>@H_403_3@

<!ELEMENT@H_403_3@from@H_403_3@(#PCDATA)@H_403_3@>@H_403_3@

<!ELEMENT@H_403_3@heading@H_403_3@(#PCDATA)@H_403_3@>@H_403_3@

<!ELEMENT@H_403_3@body@H_403_3@(#PCDATA)@H_403_3@>@H_403_3@

]>@H_403_3@

<@H_403_3@note@H_403_3@>@H_403_3@

<@H_403_3@to@H_403_3@>@H_403_3@Tove@H_403_3@</@H_403_3@to@H_403_3@>@H_403_3@

<@H_403_3@from@H_403_3@>@H_403_3@Jani@H_403_3@</@H_403_3@from@H_403_3@>@H_403_3@

<@H_403_3@heading@H_403_3@>@H_403_3@Reminder@H_403_3@</@H_403_3@heading@H_403_3@>@H_403_3@

<@H_403_3@body@H_403_3@>@H_403_3@Don't forget me this weekend@H_403_3@</@H_403_3@body@H_403_3@>@H_403_3@

</@H_403_3@note@H_403_3@>@H_403_3@

b)外部导入@H_403_3@

i.本地文件系统:@H_403_3@

<!@H_403_3@DOCTYPE@H_403_3@@H_403_3@note@H_403_3@@H_403_3@SYSTEM@H_403_3@@H_403_3@"note.dtd"@H_403_3@>@H_403_3@

ii.公共的外部导入:@H_403_3@

PUBLIC@H_403_3@"@H_403_3@文件名@H_403_3@@H_403_3@"@H_403_3@>@H_403_3@//文件名一般是在互联网上的如:@H_403_3@@H_403_3@”@H_403_3@http://gz.itcast.dtd@H_403_3@”@H_403_3@

2)DTD语法:@H_403_3@

约束标签@H_403_3@

<!ELEMENT 元素名称 类别@H_403_3@> @H_403_3@或@H_403_3@<!ELEMENT @H_403_3@元素名称 @H_403_3@(@H_403_3@元素内容@H_403_3@)>@H_403_3@

类别:@H_403_3@

标签:@H_403_3@EMPTY,表示元素一定是空元素。@H_403_3@<!ELEMENT @H_403_3@元素名称 @H_403_3@EMPTY>@H_403_3@

普通字符串:@H_403_3@(#PCDATA),表示元素内容一定是普通字符串(不能包含子标签)@H_403_3@

任何内容:@H_403_3@ANY,表示元素的内容可以是任意内容(包含子标签)@H_403_3@

(元素内容@H_403_3@)@H_403_3@:@H_403_3@

顺序问题:@H_403_3@

<!ELEMENT 元素名称 @H_403_3@(@H_403_3@子元素名称@H_403_3@1,@H_403_3@子元素名称@H_403_3@2,...)>:@H_403_3@按顺序出现子标签@H_403_3@

次数问题:@H_403_3@

标签:必须且只出现一次@H_403_3@

标签@H_403_3@+:表示至少出现一次@H_403_3@

标签@H_403_3@*:表示@H_403_3@0@H_403_3@次或多次@H_403_3@

标签?:表示@H_403_3@0次或@H_403_3@1@H_403_3@次@H_403_3@

约束属性:@H_403_3@

<!ATTLIST 元素名称 属性名称 属性类型 默认值@H_403_3@>@H_403_3@

默认值:@H_403_3@

#required 属性值是必须的@H_403_3@

#IMPLIED 属性不是必须的@H_403_3@

#FIXED value 属性值是固定的@H_403_3@

属性类型:@H_403_3@

CDATA:表示普通字符串@H_403_3@

(en1|en2|...):表示任选其中的一个值@H_403_3@

ID:表示在一个@H_403_3@XML@H_403_3@文档中该属性值必须唯一,值不能以数字开头@H_403_3@

@H_403_3@

约束文件:note.dtd@H_403_3@

<!ELEMENT note (to?,from*,heading+,body)>
<!ELEMENT to       (#PCDATA)>
<!ELEMENT from     (#PCDATA)>
<!ELEMENT heading  (#PCDATA)>
<!ELEMENT body     (#PCDATA)>
<!ATTLIST to name CDATA #required><!--设置标签to必须要有name属性-->
<!ATTLIST from name CDATA #IMPLIED><!--设置标签from标签有name属性,但是非必须的-->
<!ATTLIST heading name CDATA #FIXED "标题"><!--设置标签heading标签有name属性,但是是非必须的,但如果写了,其值必须是固定的-->

根据约束文件写的XML文件:note.html

<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
	<to name="abc">Tove</to>
	<from>Jani</from>
	<heading>Reminder</heading>
	<body>Don't forget me this weekend</body>
</note>

猜你在找的XML相关文章