XML入门基础
学习XML的时候,我们自然而然的就想起了HTML,HTML在前面的博客已经做了介绍,下面主要是介绍XML的相关基础。 一、XML? HTML(HyperTextMarkupLanguage)超文本标记语言,是用来描述网页文档的一种语言。 XML(EXtensibleMarkupLanguage)是一种类似HTML的可扩展标记语言,但是它不是用来显示数据的,而是用来包含和传输数据。一般用来配置文件,携带方面。
1.世界上任何事物都是变化发展的——XML发展历史:
2.XML与HTML的差异:
3.XML的树状结构
从上面的实例我们可以看出,XML的组成包括:声明、标签(尖括号)、元素(根元素、父元素、子元素)等等。XML文档中的元素形成一颗文档树。这棵树从根部开始,并扩展到树的最低端。好处是:结构清晰、易于读取、处理、添加和修改子节点。
4.XML构建模块——元素、属性、实体、PCDATA、CDATA
(1)元素
(2)属性
(3)实体 实体是用于定义引用普通文本或特殊字符的快捷方式的变。 实体引用是对实体的引用,为了避免把字符数据和标签中需要用到的一些特殊符号相混淆。
在XML中有5个被预定义的实体引用: 注释:在XML中仅有字符:“<"和”&“是非法的。省略号、引号和大于号是合法的,但是把它们替换为实体引用是一个好习惯。通常来说,所有XML文档中的文本均会被解析器解析。只有CDATA区段(CDATA section)中的文本会被解析器忽略。
(4)CDATA CDATA指的是不应由XML解析器解析的文本数据(UCDATAUnparsed Character Data)。 在 XML 元素中,"<" 和 "&" 是非法的。"<" 会产生错误,因为解析器会把该字符解释为新元素的开始。 "&" 也会产生错误,因为解析器会把该字符解释为字符实体的开始。CDATA 部分由 "<![CDATA[" 开始,由 "]]>" 结束。 关于 CDATA 部分的注释: CDATA 部分不能包含字符串 "]]>"。也不允许嵌套的 CDATA 部分。 标记 CDATA 部分结尾的 "]]>" 不能包含空格或折行。 (5)PCDATA
PCDATA 指的是被解析的字符数据(Parsed Character Data)。 XML 解析器通常会解析 XML 文档中所有的文本。 当某个 XML 元素被解析时,其标签之间的文本也会被解析,所以非法的XML 字符必须被替换为实体引用(entity reference)。 5、XML语法规则:
上面介绍了XML相关的语法结构以及语法规则。但是这些都是由谁来定义和提供的呢?XML文档是一种结构化的标记文档,其文档的规范性由:DTD (Document Type Definition)和Schema两种方式进行制定 。
二、DTD
1.定义、用途?
文档类型定义(DTD)定义XML文件的结构,为XML文件提供语法与规则;内容既可以定义在XML文件中,也可以定义在XML文件外,使用XML进行数据交换的行业或组织可定义自己的DTD,DTD对于XML是可选内容。
为什么要使用DTD呢?
为了正确交换数据,XML需要确定的结构,所以通过DTD,每一个XML文件可携带一个又关其自身格式的描述;独立的团体可一致的使用某个标准的DTD来交互数据;使用DTD来验证外部接受到的数据或是验证自身的数据。
2.DTD结构
(1)元素
在一个DTD中元素声明使用下面的语法:
<!ELEMENT 元素名称 类别>或者<!ELEMENT 元素名称(元素内容)>
例如:<!ELEMENT 书名(#PCDATA)><!ELEMENT计算机书籍 (书名,价格,简要介绍)>
a.空元素声明:
<!ELEMENT 元素名称 EMPTY>
例如:<!ELEMENT br EMPTY>
b.带有任何元素的声明:
<!ELEMENT 元素名称 ANY>
例如:<!ELEMENT note ANY>
c.带有子元素的声明:
<!ELEMENT 元素名称 (子元素名称1,子元素名称2...)>
例如:<!ELEMENT note (to,from,heading,body)>
注释:当子元素按照由逗号分隔开的序列进行声明时,这些子元素必须按照相同的顺序出现在文档中。在一个完整的声明中,子元素也必须被声明,同时子元素也可拥有子元素。
d.声明只出现一次的元素:
<!ELEMENT 元素名称 (子元素名称)>
例如:<!ELEMENTnote (message)>
e.声明最少出现一次的元素
<!ELEMENT 元素名称 (子元素名称+)>
例如:<!ELEMENT note (message+)>
<!ELEMENT 元素名称 (子元素名称*)> 例如:<!ELEMENT note (message*)>
g.声明出现零次或一次的元素
<!ELEMENT 元素名称 (子元素名称?)>
例子:<!ELEMENT note (message?)>
h.声明“非.../既...”类型的内容
<!ELEMENT 元素名称(子元素名称|子元素名称2)>
例子:<!ELEMENT note (to,header,(message|body))>
i.声明混合型的内容
<!ELEMENT元素名称(#PCDATA|子元素名称)*>
例如:<!ELEMENTnote (#PCDATA|to|from|header|message)*>
(2)属性
在DTD中,属性通过ATTLIST来进行声明
语法:
<!
ATTLIST
元素名称 属性名称 属性类型 默认值>
例如:<!ATTLISTpayment type CDATA "cash">
属性类型:
默认值:
(3)实体
是用于定义引用普通文本或特殊字符的快捷方式的变量 实体引用是对实体的引用 实体可在内部或外部进行声明
a.内部实体声明的语法: <!ENITY 实体名称 “实体的值”> 例子:<!ENITY writer "Bill Gates"> <!ENTITY copyright "Copyright W3School.com.cn">
b.外部实体声明的语法:
<!ENITY 实体名称 SYSTEM "URI/URL">
例如:
<!ENTITY writer SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">
三、Schema技术
1.定义、作用?
Schema是用来描述XML文档的结构,是基于XML的DTD替代者,XML Schema 语言也可作为 XSD(XML Schema Definition)来引用。使用Schema可保护数据通信。
2.Schema是DTD的继任者
总结:XML是一种可扩展的标记语言,DTD是一种保证XML文档格式正确的有效方法,可以通过比较XML文档和DTD文件来看XML文档是否符合规范,元素和标签是否正确。一个DTD文档包含:元素、元素间关系的定义规则,元素可使用的属性,可使用的实体或符号规则。Shcema模式,是DTD的继任者,比DTD的功能更为强大。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |