- 注册时间
- 2008-9-13
- 最后登录
- 1970-1-1
- 在线时间
- 0 小时
- 阅读权限
- 200
- 积分
- 0
- 帖子
- 24482
- 精华
- 4
- UID
- 9
|
XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。 2 R3 \ m" u' `, D4 T/ ~. D5 L4 a
! [6 @8 n3 H! k5 A* H XML实例8 A( f% n6 m- C' T( o. L( D
8 T9 _$ ^! ]; _ h5 X <?xml version="1.0" encoding="ISO-8859-1"?>6 h: S N4 z# X
) M; `- l, I h: A7 D5 v) Q" T& g
<bookstore>
+ V+ a. d$ R. Y4 |& d
% k8 |( J9 h J n <book catalog="Programming">
" ]& l% g6 H, ]8 x, P( _
% b! F, ~7 r, m/ N; Y' M <title lang="en">C++ Programming Language</title>8 M, p- A' W' |
! P$ X; c b2 o, i3 S0 u- C7 \9 h <author>Bjarne Stroustrup</author>6 {4 a# ^' I* T9 ]6 w, v8 b
) b: m9 O1 o, {
<year>1998</year>, \* D- t. `+ X$ o* h
# E& W8 \2 n. m. O7 M <price>98.0</price># Y+ m0 Y, h# m/ c* R' v
; r; ^3 k: ^' T# H4 i) n
</book>
; z8 ~; w. |' z3 L: J: X2 U" \! g \( ?4 E
<book catalog="Networking">
" b. u, m9 y" R& P; S1 c! F" y# L- I0 l6 F! J# O. A% A4 h
<title lang="en">TCP/IP Illustrated</title>. J4 \- x: R/ G
% y9 d4 u2 A9 d: w. x3 v9 G1 B
<author>Richard Stevens</author>% l/ k. z1 _" n2 @$ H* E
, {' _3 @' E' z: _- Z0 S" Y% u <year>1996</year>
6 i' i U \, ^% } y+ `. p1 [! E, n" D% d, a
<price>56.0</price>" d' C: R& A2 U$ V) K' w
& m( B$ F" \- y" S6 U( H* w: h </book>9 w+ y3 r: ~) {) q: |9 r
. ~/ w+ z) E5 x" u. S# P. p
</bookstore>, s' H. A( a+ J0 e
1 e$ L7 S7 `8 o$ j. E( h; j3 D2 U
XML与Access,Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,XML仅仅是展示数据。事实上XML与其他数据表现形式最大的不同是:他极其简单。这是一个看上去有点琐细的优点,但正是这点使XML与众不同。 , v. w! s1 F- a# M
2 F, h4 |7 u2 m" q+ Q XML与HTML的设计区别是:XML是用来存储数据的,重在数据本身。而HTML是用来定义数据的,重在数据的显示模式。! ^( f. l f! j1 s0 S
n( W( Q! z1 K8 r+ y/ B
XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows、Mac OS, Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析他,并以XML格式输出结果。
( @4 U9 Q4 D. J( P" X* v6 a) o
4 o% Z) K! A; }6 X m7 [ 为了使得SGML显得用户友好,XML重新定义了SGML的一些内部值和参数,去掉了大量的很少用到的功能,这些繁杂的功能使得SGML在设计网站时显得复杂化。XML保留了SGML的结构化功能,这样就使得网站设计者可以定义自己的文档类型,XML同时也推出一种新型文档类型,使得开发者也可以不必定义文档类型。
7 f. j g' T! H: u2 D6 f, p/ h
6 C! A1 T c! V4 Z 因为XML是W3C制定的,XML的标准化工作由W3C的XML工作组负责,该小组成员由来自各个地方和行业的专家组成,他们通过email交流对XML标准的意见,并提出自己的看法 (www.w3.org/TR/WD-xml)。因为XML 是个公共格式, (它不专属于任何一家公司),你不必担心XML技术会成为少数公司的盈利工具,XML不是一个依附于特定浏览器的语言- y+ ~3 O' Y/ X K1 A- \
! G6 x P# w M. F XML英文解释 l2 T7 a+ v) m/ F7 ^4 Q
9 X: E f: @4 h, ` The Extensible Markup Language (XML) is a general-purpose specification for creating custom markup languages.It is classified as an extensible language, because it allows the user to define the mark-up elements. XML's purpose is to aid information systems in sharing structured data, especially via the Internet, to encode documents, and to serialize data; in the last context, it compares with text-based serialization languages such as JSON and YAML.XML began as a simplified subset of the Standard Generalized Markup Language (SGML), meant to be readable by people via semantic constraints; application languages can be implemented in XML. These include XHTML,RSS, MathML, GraphML, Scalable Vector Graphics, MusicXML, and others. Moreover, XML is sometimes used as the specification language for such application languages.XML is recommended by the World Wide Web Consortium (W3C). It is a fee-free open standard. The recommendation specifies lexical grammar and parsing requirements.
( O/ }: }& j. N% {[编辑本段]
3 x! q1 d* u$ [3 j2 y# aXML历史 XML是从1996年开始有其雏形,并向 W3C(全球信息网联盟)提案,而在1998二月发布为W3C的标准(XML1.0)。 XML的前身是SGML(The Standard Generalized Markup Language),是自IBM从60年代就开始发展的 GML(Generalized Markup Language)标准化后的名称。 / L( _% \4 s. \" Z) z2 H$ @
7 i8 q) K% E" D7 ]
GML的重要概念:
4 {. t0 K+ T6 o* z" d( J. u: T# p/ T4 a8 i' s6 a4 X/ t, Q
文件中能够明确的将标示与内容区隔;所有文件的标签使用方法均一致.
$ h6 i l4 u: K7 r4 c! g. [8 j7 P5 c) @& v/ q; ~
1978年,ANSI将GML加以整理规范,发布成为SGML,1986年起为 ISO 所采用(ISO 8879),并且被广泛地运用在各种大型的文件计划中,但是SGML是一种非常严谨的文件描述法,导致过于庞大复杂(标准手册就有500多页),难以理解和学习,进而影响其推广与应用。 & q, g5 e; s# V& F" R+ F% K
- M& B4 i! v6 w. N J4 X- y; f: s
于是,人们对SGML进行了简化衍生出 HTML。HTML 简单,在初期没有任何定义文档外观的相关方法,仅用来在浏览器里显示网页文件。而后,随着因特网的发展,人们为了控制其文件样式,扩充了描述如何显现数据的卷标。在 Netscape 与 Microsoft 之间的浏览器大战后, HTML 标准权威性遭受重大的考验,所幸,到了HTML 4.0时,W3C 又恢复了其地位。
# R O; O; T5 X7 D" l
; m$ k* e5 }; v 同时W3C意识到HTML的原则: & w1 G' c+ w0 I
" z$ u r/ S* w# R- F; D6 ` 不能解决所有解释数据的问题 - 像是影音文件或化学公式、音乐符号等其它型态的内容。
; `/ }7 |& X9 S5 z0 b* `8 j$ ^1 n8 G% Z5 Q7 K8 v( w) w
效能问题 - 需要下载整份文件,才能开始对文件做搜寻的动作。 . g9 A- H; s/ F* O' U( m- N6 I* f
e! u1 e3 w/ p8 z$ T! b
扩充性、弹性、易读性均不佳。
5 Z' z7 K/ L2 G/ ^4 |' o4 o& u; j+ |8 L6 \( J0 D
为了解决以上问题,专家们使用SGML精简制作,并依照HTML的发展经验,产生出一套使用上规则严谨,但是简单的描述数据语言:XML。 XML是在一个这样的背景下诞生的——是不是能有一个更中立的方式,让消费端自行决定要如何消化、呈现从服务端所提供的信息?
1 w; n( l& R) |/ i# M) a1 A7 Q0 [6 K: P( A0 T* _4 Z. C! ]' `- }5 z/ i
而XML目的即在于提供一个对信息能够做精准描述的机制,藉以弥补 HTML 太过于表现导向的特质。
3 ^: J' g* a6 t2 w! @% k6 z0 x[编辑本段]
6 c! M# K. |3 j: c作用 丰富文件(Rich Documents)- 自定文件描述并使其更丰富 * U: ~0 H' i8 q, M. H7 T
9 B& O# |4 s2 P) ~* n: f1 q& i
属于文件为主的XML技术应用 % T' k7 _5 M2 N- g( E K
0 L# W: g2 K1 o 标记是用来定义一块数据应该如何呈现 . V. e* X: D) n9 Y
* H4 L9 X4 O# o9 H 解释数据(Metadata)- 描述其它文件或在线信息 , g: f: o1 i. B7 z
Y) L6 D( x e* B$ c
属于数据为主的XML技术应用 * M2 A" o8 y+ d1 m# ]9 s; Y
" r' |9 K: E* S s
标记是用来说明一块资料的意义
- m, j8 t1 B& K/ E [3 ?) {/ y& P2 z/ ~* b' H
组态档案(Configuration Files)- 描述软件的组态参数 5 b; O& @! B% [6 I% p
[编辑本段]- v- `& q1 [8 B3 V$ k
简明语法 SGML常用来定义针对HTML的文档类型定义(DTD),同时它也常用于编写XML的DTD。SGML的问题就在于,它允许出现一些奇怪的语法,这让创建HTML的解析器成为一个大难题:
' ]3 H) K1 s( E0 }8 n2 }: Q! e P4 W y! F) j
1 某些起始标签不允许出现结束标签,例如HTML中<img>标签。包含了结束标签就会出现错误。! R$ k9 R3 w9 W: Y) h7 a
- q; ~6 H5 l ]: j l5 @9 k# ? 2 某些起始标签可以选择性出现结束标签或者隐含了结束标签
& g$ x4 A; m8 j0 Z7 q# Q. T7 O6 ]! _, u! S$ Z* I3 V
3 某些起始标签要求必须出现结束标签,例如HTML中<script>标签。; {4 f' ^4 J6 _9 d( |) V
! t) N' n. F2 F" Y
4 标签可以以任何顺序嵌套。即使结束标签不按照起始标签的逆序出现也是允许的,例如,This is a sample string是正确的。1 O$ c0 U% {/ T- R% b1 d' {
" s) r# U; E3 g4 e" `
5 某些特性要求必须包含值,例如<img src="picture.jpg">中的src特性。2 N1 }6 A. @; y3 q* Z( C* |
4 s6 k+ z* n% G 6 某些特性不要求一定有值,例如中的nowrap特性。9 {4 w* a1 v. W% S
. k# ?! r/ p7 Z7 n+ i
7 定义特性的两边有没有加上双引号都是可以的,所以<img src="picture.jpg">和<img src=picture.jpg>都是允许的。
! a% S& _, Q7 ^, X9 S! J& j7 m, E( t1 @5 [9 Y
这些问题使建立一个SGML语言的解析器变成了一项艰巨的任务。判断何时应用以上规则的困难导致了SGML语言的定义一直停滞不前。以这些问题作为出发点,XML逐渐步入我们的视野。4 p# Q, L* W6 R; S' r
! _6 M0 V3 q* k: D/ W+ q
XML去掉了之前令许多开发人员头疼的SGML的随意语法。在XML中,采用了如下的语法:4 L8 l# I: F5 j
: ?8 q3 a, B- J7 }, @* Y
1 任何的起始标签都必须有一个结束标签。
' a% s1 }0 @. r( o. m1 R! E5 p% }/ _( t5 s6 p' d* B
2 可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于符号之前紧跟一个斜线(/),例如<tag />。XML解析器会将其翻译成<tag></tag>。
$ O8 [( e) H5 a6 i" `9 Q2 ~+ S# n! s. A( t/ r6 Z* a5 y
3 标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签,例如this is a sample string。这好比是将起始和结束标签看作是数学中的左右括号:在没有关闭所有的内部括号之前,是不能关闭外面的括号的。
' O- i. K* L& F- g; e% f9 m9 D3 v+ G
4 所有的特性都必须有值。
+ l/ I; w# @6 A; f ?
7 d$ b- b' B' \% j 5 所有的特性都必须在值的周围加上双引号。8 q. q5 o0 |& j; G$ p
( I3 D( }0 d4 {0 s2 ?$ m
这些规则使得开发一个XML解析器要简便得多,而且也除去了解析SGML中花在判断何时何地应用那些奇怪语法规则上的工作。仅仅在XML出现后的前六年就衍生出多种不同的语言,包括MathML、SVG、RDF、RSS、SOAP、XSLT、XSL-FO,而同时也将HTML改进为XHTML。
9 d1 O0 F# K; I9 Y3 \- P3 s# b- y8 s% t o& V
如果需要关于SGML和XML具体技术上的对比,请查看W3C的注解,位于:http:///TR/NOTE-sgml-xml.html% q2 M. L5 M5 I) S" i+ s/ j0 R
# k2 g& }6 {* g2 z7 t7 o9 j7 V! X6 N4 X
如今,XML已经是世界上发展最快的技术之一。它的主要目的是使用文本以结构化的方式来表示数据。在某些方面,XML文件也类似于数据库,提供数据的结构化视图。这里是一个XML文件的例子:* d" w7 A* H" @( Z! ?
+ _: V0 C& a3 A: A) j. g. Q
/ Y8 h5 @/ z. [- o
' G5 ?% k; z; u3 T/ \7 p; ]
[编辑本段]7 l. {+ x1 |% D3 \
文档结构 每个XML文档都由XML序言开始,在前面的代码中的第一行便是XML序言,<?xml version="1.0"?>。这一行代码会告诉解析器和浏览器,这个文件应该按照前面讨论过的XML规则进行解析。第二行代码,<books>,则是文档元素(document element),它是文件中最外面的标签(我们认为元素(element)是起始标签和结束标签之间的内容)。所有其他的标签必须包含在这个标签之内来组成一个有效的XML文件。XML文件的第二行并不一定要包含文档元素;如果有注释或者其他内容,文档元素可以迟些出现。
( G N! P6 ~* k: m# ~' t
7 f8 |+ y; Z7 f! _+ f, _ 范例文件中的第三行代码是注释,你会发现它与HTML中使用的注释风格是一样的。这是XML从SGML中继承的语法元素之一。9 j' k0 n! O8 q4 F# r: B
- w; [3 Y* w& M& j5 H
页面再往下的一些地方,可以发现<desc>标签里有一些特殊的语法。<![CDATA[ ]]>代码用于表示无需进行解析的文本,允许诸如大于号和小于号之类的特殊字符包含在文本中,而无需担心破坏XML的语法。文本必须出现在<![CDATA[和]]>之间才能合适地避免被解析。这样的文本称为Character Data Section,简称CData Section。4 d' ~5 {2 F" D$ Z% X! e
( o. _8 W- n V. c5 M q8 Z$ f
下面的一行就是在第二本书的定义之前的:1 o7 |/ L9 Q' |
8 O& G1 A" {6 h n
<?page render multiple authors ?>
. Z. W+ K; y7 ~6 X; x W7 ?- u- b9 Q4 h+ c# v5 j2 R# E+ a+ }5 n# {
虽然它看上去很像XML序言,但实际上是一种称为处理指令(processing instruction)的不同类型的语法。处理指令(以下简称PI)的目的是为了给处理页面的程序(例如XML解析器)提供额外的信息。PI通常情况下是没有固定格式的,唯一的要求是紧随第一个问号必须至少有一个字母。在此之后,PI可以包含除了小于号和大于号之外的任何字符串序列。 6 [) n8 d; c2 Q" A: A7 G
[编辑本段]
7 I/ G2 {7 ?4 T. s3 XXML文档有效性 结构良好的XML文档
+ L8 u, ?" C6 }$ z; z- B) Z; k) Q$ ?" V# d
如果某个文档符合XML语法规范,那么我们就说这个文档是“结构良好”的文档。使用本书讲到的XMLSpy 2006工具就可以测试某文档是否为结构良好的XML文档。
" h r$ U( S% g3 B- U" {9 K; I: R( K3 |, U
有效的XML文档
N+ p% C- u) N1 { n- X& m+ |& F4 E, u+ f! t
所谓有效的XML文档是指通过了DTD的验证的,具有良好结构的XML文档,在此大家要明白XML文档可分为结构良好的XML文档和有效的XML文档,以及他们之间的关系。即具有结构良好的XML文档并不一定就是有效的XML文档,反之一个有效的XML文档必定是一个结构良好的XML文档。
6 R2 ~% p P- K5 d* C( B8 p[编辑本段]* ~( r8 V; Q7 s1 e
XML文档对网站的重要性 《互联网论坛收录开放协议》是搜索引擎制定的网站内容收录标准,可在网站跟目录制作成遵循此开放协议的XML格式的网页供搜索引擎索引,将网页信息主动、及时地告知各大搜索引擎。 采用了《互联网论坛收录开放协议》,就相当于网页被搜索引擎订阅,通过搜索引擎平台,网民将有可能在更大范围内更高频率地访问到您的网站,进而为您的网站带来潜在的流量。6 E$ E) ]' O9 C$ l- t2 t
# U: ]) A+ ^5 P3 G 以百度搜索引擎为例,将制作好的XML文件命名为sitemap_baidu.xml上传到您网站根目录下,并保证文件所在的url地址能够被百度spider正常访问。例如,网站为post.baidu.com,则将xml文件上传至post.baidu.com/sitemap_baidu.xml 6 t) ] {6 @3 D" U, ~. e
+ ^1 k: I0 n1 \8 A0 T/ U8 f 当百度spider发现了xml文件后,会根据上面提供的参数自动对xml文件进行更新,并抓取高质量的内容。
4 H" F5 `. d, _- v[编辑本段]
1 e$ ]! M$ E) RXML和HTML的差异 XML和HTML的不同可以归纳为3点:
1 ?2 a2 H* W0 p/ J
6 X& e; a2 f1 N ① XML扩展性比HTML强! D q0 Z( F* ]+ W
7 _6 Y, E @& e3 f! A
XML(Extensible Markup Languages)是扩展标记语言的英语缩写,他可以创建个性化的标记语言,可以称之为元语言。XML的标记语言可以自定义,这样可以提供更多的数据操作,而不像HTML一样,只能局限于按一定的格式在终端显示出来。HTML的功能只有浏览器放入显示和打印,仅仅适合静态网页的要求。$ l9 j8 Y* H0 T* I. p4 k
8 D! @9 X3 l1 }/ P. O5 c( ~ ② XML的语法比HTML严格3 Z* q0 L3 [/ x/ ~/ F6 X7 V9 W2 V
7 x+ [* B8 _ J
由于XML的扩展性强,它需要稳定的基础规则来支持扩展。它的严格规则为:1 o0 m) v" R& t! ?
- a9 \! J9 w( ]4 m& w
1、起始和结束的标签相匹配3 ~ x4 }0 u- I
6 I6 O9 n5 P/ R! a, t. ?
2、嵌套标签不能相互嵌套+ B# I# x, v; W% C# I
8 ]0 s0 J( g$ d9 w
3、区分大小写
7 W; E' d8 F4 i0 q2 c3 I" M& N+ y2 v
相对应XML的严格规则,HTML语言并没有规定标签的绝对位置,也不区分大小写,而这些全部由浏览器来完成识别和更正。/ N# ]/ w' v6 l! \% H4 p0 A
# _& G, v+ U) J) G ③ XML与HTML互补- H( |0 z* g+ R. n Y
2 j9 j- v h( d6 d9 \5 k% Q
XML可以获得应用之间的相应信息,提供终端的多项处理要求,也能被其他的解析器和工具所使用,在现阶段,XML可以转化成相应的HTML,来适应当前浏览器的需求。 |
|