XML 指可扩展标记语言(EXtensible Markup Language)。 XML 是一种很像HTML的标记语言。 XML 的设计宗旨是传输数据,而不是显示数据。 XML 标签没有被预定义。您需要自行定义标签。 XML 被设计为具有自我描述性。 XML 是 W3C 的推荐标准。
xml用于做配置文件!
xml编写语法
语法类似HTML! 只是标签自定义! 1.创建一个xml文件!后缀名 .xml 2.xml文件中的第一行应该添加版本号 <?xml version="1.0" encoding="UTF-8" ?> 3.标签名严格区分大小写 4.<开始标签> 文本内容/子标签 </结束标签> 5.xml只能有一个根标签! 6.标签内部可以有文本内容和子标签!但是要求包裹了子标签 那么就应该包裹子标签的开始和结束标签! 7.开始标签内部也可以编写属性 <标签名 属性名="属性值" 属性名="属性值" 注意属性名自定义! 8.可以编写空标签 <br /> 9.注释写法 <!-- --> 10.支持转移符 > < 特殊符号容易被识别成xml的标签! 影响整个xml显示! 11. <![CDATA[ 内容不编译 ]]>
XML约束
XML 的设计宗旨是传输数据,为了方便解析,给xml添加约束!
约束 的细节:
标签名称 标签出现的次数!标签出现的位置!标签的属性名称!标签属性名出现的情况
html = xml + 约束;
xml的约束两种:
1.DTD 约束:优点:DTD语法极其简单! 缺点:约束不够详细!不能约束文本内容!
约束标签的名称!出现的位置!标签出现的次数!属性名称!属性出现的情况
2.SCHEMA 约束 :约束的能力非常强大,可以对XML实例文档作出细致的语义限制
比 DTD支持更多的数据类型,并支持用户自定义新的数据类型
名称空间支持得非常好
dtd约束文件
被引入的dtd约束文件stu.dtd
声明一个XML元素——<!ELEMENT 元素名称 元素类型>
符号表示元素出现的次数:
+: 一次或多次
?: 0次或一次
*: 0次或多次
通过ATTLIST为其设置属性
<!ATTLIST element-name attribute-name attribute-type attribute-value>
attribute-type: CDATA (表示属性值为普通文本字符串)
<!ATTLIST author period CDATA> 它表示在author这个标签中,period属性应该是字符类型。
attribute-value:
#REQUIRED:必须设置该属性
#FIXED:说明该属性的取值固定为一个值
# IMPLIED:可以设置也可以不设置
直接使用默认值:在 XML 中可以设置该值也可以不设置该属性值。若没设置则使用默认值
<!ELEMENT students (student)* >
<!ELEMENT student (name|age)* >
<!ELEMENT name (#PCDATA) > //#PCDATA表示在<name>和</name>标签之间可以插入字符或者子标签
<!ELEMENT age (#PCDATA) >
<!ATTLIST name id ID #REQUIRED >
<!ATTLIST age type (老年|中年|青年|骚年) "骚年">
引入dtd文件的xml的文件:stu.xml
引入dtd文件<students>
<student>
<age type="中年"></age>
<name id="aa"></name>
<name id="ccc"></name>
</student>
</students>
SCHEMA约束
<student>
<name class="aaa"></name>
<name class="cccc"></name>
<age xx="xxxx"></age>
</student>
XML Schema文档声明的元素绑定到一个名称空间上,以后XML文件就可以通过这个URI(即名称空间)来告诉解析引擎,xml文档中编写的元素来自哪里,被谁约束。
Schema 文件自身就是一个XML文件,但它的扩展名通常为.xsd。扩展名:后缀名 (来自URI即网络或本地)
Schema 为模式文档(约束文档),遵循这个文档书写的xml文件称之为实例文档(上面是约束文档下面是实例文档)
以后XML文件就可以通过这个URI(即名称空间)来告诉解析引擎,xml文档中编写的元素来自哪里,被谁约束。在XML Schema中,每个约束模式文档都可以被赋以一个唯一的名称空间,名称空间用一个唯一的URI(Uniform Resource Identifier,统一资源标识符)表示。
Schema约束文档:book.xsd文件:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www. itcast.cn"
elementFormDefault="qualified">
引入Schema约束文档的book.xml文件:
<itcast:书架 xmlns:itcast="http://www.itcast.cn" // 只是分配一个名字无实意
//固定写法
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
// 第一个值是需要使用的名称空间。第二个值是供命名空间使用的XML Schema的位置 使用空格分开(cn book)
xsi:schemaLocation=“http://www.itcast.cn book.xsd"> //约束的具体位置
</itcast:书架>
URI:http://www.itcast.cn根本没有指向任何文件,只是一个分配的名字
xmlns:xsi:声明XML Schema实例名称空间并将xsi前缀与该名称空间绑定,这样模式处理器就可以识别xsi:schemaLocation属性。XML Schema实例名称空间的前缀通常使用xsi。
如果没有那句话,下边的xsi:schemaLocation这个属性不起作用
框架中的schema