XML

XML介绍
XML 可扩展标记语言
它是一种定义数据格式的一种语言,它定义了数据的传输保存的格式
它是纯文本的,带有自我说明的,具有结构性层次感的语言.
<?xml version="1.0" encoding="GBK" ?> //预声明
<paper subject="corejava" limiTime="10"> //头标签 及其属性,它是整个文档的根元素
<question score="5" answer="B"> //子标签 及其属性 跟元素下的子元素
<title>下面哪个不是java的关键字:</title> //<>...</> 标签对之间的部分: 元素内容
<isbn number="1112-23-4232" /> 标签中没有任何内容的  空标签
<!-- I am comment --> //注释说明
<option>A: class</option>
<option>B: foreach</option>
<option>C: while</option>
<option>D: implements</option>
</question>
<question score="5" answer="B">
<title>下面哪个不是java的关键字:</title>
<option>A: for</option>
<option>B: implement</option>
<option>C: each</option>
<option>D: final</option>
</question>
</paper> //尾标签
结构良好的XML
预声明:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>//说遵循的版本号为1.0 所使用的字符集为UTF-8 默认是UTF-8
//这个文档时独立的文档 默认值是no
//不独立的意思:它是作为其他的xml文档的一部分存在的
<?xml ......  ?> //预说明格式
<!-- ..... --> //注释说明格式
一个xml只能有一个跟元素,元素内部可以包含子元素 和 文本数据 ,元素还可以包含属性,属性是包含在元素的头标签内部
属性的书写方式为属性名=属性值的形式
规则:
1.单一元素规则
2.标签规则:所有元素都包含头标签和尾标签<...></...>,属性写在头标签内部.
空元素指没有任何子信息的标签头标签和尾标签可缩写为<... />的形式
3.嵌套规则:内部元素的尾标签必须在外部元素的尾标签出现前出现.不允许交叉嵌套
4.命名规则:标签名必须字母或下划线开头,后边可以跟字母,数字,点,连接符-,下划线
           标签名大小写敏感,标签不能包含空白字符,标签不能以w3c xml 等保留关键字开头
5.属性说明:所有的属性都要用单引号或双引号包起来
特殊字符特殊写法:
< =  &lt;
> = &gt;
" = &quot;
' = &apos;
& = &amp;
<![CDATA[.......]]>  cdata指令块, 里边不需要考虑特殊字符的转义,所见即所得
DTD
DTD 用来规范xml的格式
<!ELEMENT elementName(contentModel)> 元素声明 元素名称(可包含的元素及内容)
contentModel:
元素的定义:
EMPTY 空的 <!ELEMENT elementName EMPTY>
ANY 任意 <!ELEMENT elementName ANY>
Elements包含子元素 <!ELEMENT elementName (a,b)> 需要依次出现a b 这个子元素而且按着先a后b的顺序
<!ELEMENT elementName (a|b)> a b 中任选一个出现 不能同时出现也不能都不出现
<!ELEMENT elementName (a)> 必须出现一次,也只能出现一次
<!ELEMENT elementName (a)+> 出现1~n次
<!ELEMENT elementName (a)*> 出现0~n次
<!ELEMENT elementName (a)?> 出现0~1次
<!ELEMENT elementName (#PCDATA)>只包含文本 不再包含子元素
Mixed 混合型 <!ELEMENT elementName (#PCDATA|eleName)*>
属性的定义:
<!ATTLIST elementName
attributeName attributeType attributeDefault
.......
attributeName attributeType attributeDefault>
属性类型的划分:
CDATA 普通的文本数据,可以包含空格(不以空格来分隔)
NMTOKEN,NMTOKENS 满足命名规范的文本段,文本段是以空格分隔的
ID 该属性的值在元素中是唯一标识,这个值也要满足命名规范
IDREF,IDREFS 这个属性的值必须是文档中某一个ID类型属性的值,相当于这个ID的外键一样
ENTITY,ENTITYS 该属性必须是某一个实体
NOTATION 该属性必须是个引用的声明
enumerated 该属性的值必须是某几个值之一
如: <!ELEMENT student (#PCDATA)>
<!ATTLIST student name ID #REQUIRED>
属性的缺省类型:
#REQUIRED 该属性必须有
#IMPLIED 该属性可有可无
attribute-value 给该属性一个默认值 默认值为attribute-value
#FIXED value 该属性的值为固定的 value
如何把DTD写如入到xml文档中
<!DOCTYPE rootElement [...(declarations)...]> //DTD和XML写在一个文件中
<!DOCTYPE rootElement SYSTEM "dtd的路径"> //DTD与XML不在一个文件中
3.xml的名称空间的概念
名称空间的意义:
用于处理在一个XML文件里,同名的元素的冲突,我们可以把同名的元素放在不同的名称空间里,名称空间就像JAVA的包.
如何声明:
1.直接声明使用:<books:book xmlns:books="http://www.library.con/books">哈利波特</books:book>
元素的同标签的位置,就像根元素的属性一样<xmlns:名称空间前缀="名称空间的URI,它是该名称空间的唯一标识" />
2.缺省声明使用:<book xmlns="http://www.library.com/books">哈利波特</book>
它默认作用于当前这一层元素及其内部的子元素之上.但它只能作用在元素上 但不会作用于属性上
4.熟悉xml的schema语法
DTD用来定义xml文档基本格式,它的定义比较粗,比如他能定义一个元素里只能放文本,但却不能定义这个文本只是数值型文本
schema本身是个xml文档,它可以更准确的定义被定义的xml
规则:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="quantity" type="xs:nonNegativeInteger">
//元素名为quantity 类型为非负整数
</xs:schema> //必须在特定的名称空间下而且跟节点必须是schema
语法:
简单类型: 该元素不包含子元素也没有属性
<element name="color">
<SimpleType>
<restriction base="string">
<enumeration value="red" />
<enumeration value="green" />
<enumeration value="blue" />
</restriction>
</SimpleType>
</element>
复合类型:该元素包含子元素或有属性
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="quantity">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:nonNegativeInteger">
......内容扩展了基本类型
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>

<xs:attribute name="name" type="xs:string" use="optional " /> //属性  optional 可选的属性
<sequence>
//.....顺序出现
<element name="sample" type="xs:string" minOccurs="2" maxOccurs="5">
//子元素sample类型为string最少出现2次最多5次
</sequence>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.tarena.com.cn/xml" elementFormDefault="qualified"> attributeFormDefault="qualified">
</xs:schema>

<?xml version="1.0"?>
<quantity xmlns="http://www.tarena.com.cn/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.tarena.com.cn/xml http://www.tarena.com/Schemas/schema.xsd">25</quantity>
5.如何用java解析xml文档
SAX
DOM
document object model

你可能感兴趣的:(数据结构,xml,D语言)