2.XML约束:
2.1 引入
XML语法:规范的XML文件的基本编写规则。(有w3c组织制定的)
XML约束:规范XML文件数据内容格式的编写规则。(由开发者自定义)
2.2 XML约束的技术
DTD约束:语法相对简单,功能相对简单,学习成本相对低
Schema约束:语法相对复杂,功能相对复杂,学习成本相对高(名称空间)
2.3 DTD约束
1)导入DTD方式
a)内部导入
<?xmlversion="1.0"?>
<!DOCTYPEnote[
<!ELEMENTnote(to,from,heading,body)>
<!ELEMENTto(#PCDATA)>
<!ELEMENTfrom(#PCDATA)>
<!ELEMENTheading(#PCDATA)>
<!ELEMENTbody(#PCDATA)>
]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend</body>
</note>
b)外部导入
i.本地文件系统:
<!DOCTYPEnoteSYSTEM"note.dtd">
ii.公共的外部导入:
PUBLIC"文件名">//文件名一般是在互联网上的如:”http://gz.itcast.dtd”
2)DTD语法:
约束标签
<!ELEMENT 元素名称 类别> 或<!ELEMENT 元素名称 (元素内容)>
类别:
空标签:EMPTY,表示元素一定是空元素。<!ELEMENT 元素名称 EMPTY>
普通字符串:(#PCDATA),表示元素内容一定是普通字符串(不能包含子标签)
任何内容:ANY,表示元素的内容可以是任意内容(包含子标签)
(元素内容):
顺序问题:
<!ELEMENT 元素名称 (子元素名称1,子元素名称2,...)>:按顺序出现子标签
次数问题:
标签:必须且只出现一次
标签+:表示至少出现一次
标签*:表示0次或多次
标签?:表示0次或1次
约束属性:
默认值:
#IMPLIED 属性不是必须的
#FIXED value 属性值是固定的
属性类型:
CDATA:表示普通字符串
(en1|en2|...):表示任选其中的一个值
ID:表示在一个XML文档中该属性值必须唯一,值不能以数字开头
约束文件:note.dtd
<!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 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>原文链接:https://www.f2er.com/xml/294558.html