開發(fā)-課程講義第十三章.netxml_第1頁
開發(fā)-課程講義第十三章.netxml_第2頁
開發(fā)-課程講義第十三章.netxml_第3頁
開發(fā)-課程講義第十三章.netxml_第4頁
開發(fā)-課程講義第十三章.netxml_第5頁
已閱讀5頁,還剩108頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第十三章.NET

XML南航計算機(jī)科學(xué)與技術(shù)學(xué)院本部12-101xie

21.1

HTML的概念HTML(HyperText

Markup

Language)超文本標(biāo)記語言是

WWW

的描述語言,由Tim

Berners-lee提出。設(shè)計HTML語言的目的是為了能把存放在一臺電腦中的文本或圖形與另一臺電腦中的文本或圖形方便地聯(lián)系在一起,形成有機(jī)的整體,人們不用考慮具體信息是在當(dāng)前電腦上還是在網(wǎng)絡(luò)的其它電腦上。這樣,你只要使用鼠標(biāo)在某一文檔中點取一個圖標(biāo),Internet就會馬上轉(zhuǎn)到與此圖標(biāo)相關(guān)的內(nèi)容上去,而這些信息可能存放在網(wǎng)絡(luò)的另一臺電腦中。HTML

is

the

lingua

franca

for

publishing

hypertext

on

theWorld

Wide

Web.

It

is

a

non-proprietary

format

baseduponSGML,and

can

be

createdand

processed

by

a

wide

range

of

tools,

fromsimple

plain

text

editors

-

you

type

it

in

from

scratch-tosophisticated

WYSIWYG

authoring

tools.

HTML

uses

tags

such

as<h1>

and

</h1>

to

structure

text

into

headings,

paragraphs,

lists,hypertext

links

etc.HTML

2.0T.

Berners-Lee

and

D.

Connolly,

November

1995.HTML

3.2HTML

3.2

is

W3C's

specification

for

HTML,

developed

in

early

‘96

togetherwith

vendors

including

IBM, ,

Netscape

CommunicationsCorporation,

Novell,

SoftQuad,

Spyglass,

and

Sun

Microsystems.

HTML

3.2adds

widelyimages,

whiledeployed

features

such

as

tables,

applets

and

text

flow

aroundproviding

full

backwards

compatibility

with

the

existingstandard

HTML

2.0.The

HyperText

Markup

Language

(HTML)

is

a

simple

markup

language

usedto

create

hypertext s

that

are

portable

from

one

platform

to

another.HTML s

are

SGML s

with

generic

semantics

that

areappropriate

for

representing

information

from

a

wide

range

of

applications.HTML

3.2

aims

to

capture mended

practice

as

of

early

'96

and

as

suchto

be used

as

a

replacement

for

HTML

2.0

(RFC

1866).3III.HTML

4.0HTML

4.0

is

an

SGML

application

conforming

to

International

StandardISO

8879

--

Standard

Generalized

Markup

LanguageHyperText

Markup

Language

(HTML),

version

4.0,

is

the

publishinglanguage

of

the

World

Wide

Web.

In

addition

to

the

text,

multimedia,

andhyperlink

features

of

the

previous

versions

of

HTML,

HTML

4.0

supportsmore

multimedia

options,

scripting

languages,

style

sheets,

better

printingfacilities,

and s

that

are

more

accessible

to

users

with

disabilities.HTML

4.0

also

takes

great

strides

towards

the

internationalization

ofs,

with

the

goal

of

making

the

Web

truly

World

Wide.HTML

4.01

SpecificationW3C mendation

24

December

19994HTML文件是標(biāo)準(zhǔn)的ASCII文件,且其后綴名為htm或html的文件。HTML文件看起來象是加入了許多被稱為

簽(tag)的特殊字符串的普通文本文件。從結(jié)構(gòu)上講,HTML文件由元素(element)組成,組成HTML文件的元素有許多種,用于組織文件的內(nèi)容和指導(dǎo)文件的輸出格式。絕大多數(shù)元素是“容器”,

即它有起始標(biāo)記和結(jié)尾標(biāo)記。元素的起始標(biāo)記叫做起

簽(start

tag),元素結(jié)束標(biāo)記叫做結(jié)尾

簽(end

tag),在起始簽和結(jié)尾

簽中間的部分是元素體。

每一個元素都有名稱和可選擇的屬性,元素的名稱和屬性都在起始

簽內(nèi)標(biāo)明。<html><head>HTML文件頭</head><body>HTML文件體</body></html>HTML文件頭是一些對頁面整體進(jìn)行設(shè)置的參數(shù)和命令,以及相關(guān)的頁面注釋信息。而文件體則是實際要在頁面中表現(xiàn)的內(nèi)容。HTML文件中的標(biāo)記命令均以“<>”括住,大部分命令是成對出現(xiàn)的開關(guān)命令。起始命令為“<命令>”,而結(jié)束命令則為“</命令>”。HTML文件中的標(biāo)記命令對大小寫不敏感。5<HTML><HEAD><TITLE>HTML

Example</TITLE></HEAD><BODY bgcolor=

yellow><P>這是一HTML的測試文件</P></BODY></HTML>6HTML

缺乏語法檢查HTML缺乏結(jié)構(gòu)HTML不是面

象的HTML缺乏健壯的連接機(jī)制HTML是不可重用的HTML是不可擴(kuò)展的7置標(biāo)語言元置標(biāo)語言(Meta

Language)是一種能定義

的上層置標(biāo)語言,即用戶可以根據(jù)一定的規(guī)則和某些通用的原理來自己定義標(biāo)記,自己定義的標(biāo)記可在DTD中加以描述。也就是說,用戶自己可以通過元置標(biāo)語言制定一套自己的置標(biāo)語言。像SGML、XML等都是元置標(biāo)語言,而

HTML則不是元置標(biāo)語言,因為它規(guī)定了一套標(biāo)記,脫離這些規(guī)定的標(biāo)記,用戶就沒法使用。置標(biāo)語言:由一些特殊符號所組成,這些特殊符號通常為碼(code)或標(biāo)記(tag)。通過使用這些標(biāo)記來標(biāo)記你覺得有用的數(shù)據(jù)。通常,將置標(biāo)語言分為兩大類:特殊用途和一般用途的置標(biāo)語言。8特殊用途的置標(biāo)語言是指為了某些特定的應(yīng)用置標(biāo)語言必須要有一個標(biāo)準(zhǔn),用它來描述而制定的置標(biāo)語言。有效的標(biāo)記(比如<br>在HTML中是一個有效的標(biāo)記,而<rb>在HTML規(guī)范中則為無效標(biāo)記);其次還要有一個標(biāo)準(zhǔn)以描述每個標(biāo)記的具體含義(比如<br>在HTML規(guī)范中的含義是“當(dāng)前行的中斷”)。RTF(Rich

Text

Format)是專為寫字板(Word

Pad)所設(shè)計的置標(biāo)語言;HTML(Hyper

Text

Markup

Language)是為網(wǎng)頁所設(shè)計的置標(biāo)語言,并以瀏覽器為應(yīng)用

。XHTML是對HTML

4.01(并不完全兼容于XML)的重寫版,目的是兼容XML規(guī)范。MathML(Mathematical

Markup

Language)應(yīng)用于描述數(shù)學(xué)公式的數(shù)學(xué)置標(biāo)語言??梢詫?shù)學(xué)公式精確地顯示在瀏覽器上。SVG用于顯示矢量圖形的置標(biāo)語言。WML用于

上網(wǎng)的置標(biāo)語言。SMIL用于體現(xiàn)多

效果的置標(biāo)語言。OEB用于

的置標(biāo)語言。CML(Chemical

Markup

Language)用于描述化學(xué)的置標(biāo)語言。CML可描述分子與晶體結(jié)構(gòu)、化合物的光譜結(jié)構(gòu)等。9ebXML(

)是一個規(guī)范集,這些規(guī)范

共同實現(xiàn)了模塊化電子商務(wù)框架。ebXML

的構(gòu)想是實現(xiàn)一

個全球電子市場,其中,不同規(guī)模和不同地區(qū)的企業(yè)可以通過交換基于XML

的消息來合作和進(jìn)行商業(yè)活動。換句話說,”,即

常聽到的ebXML

希望成功實現(xiàn)“電子EDI。cnXML( /)是基于XML的電子商務(wù)交易標(biāo)準(zhǔn)語言,是與國際上各種版本的XML完全兼容并且符合 的電子商務(wù)語言規(guī)范,由

cnXML

制定。完整的cnXML規(guī)范包括一整套技術(shù),商務(wù)字典,服務(wù)的框架以及企業(yè)模型表述。其商務(wù)流程定義參照國際標(biāo)準(zhǔn)的OBI即模型。merceXML,它是由Ariba公司制定的一種基于XML規(guī)范,面向B2B模式電子商務(wù)交易的行業(yè)標(biāo)準(zhǔn)。10XML有兩個先驅(qū)——SGML和HTML,這兩個語言都是非常成

功的標(biāo)記語言,但是他們都在某些方面存在著與生俱來的缺陷。

XML正是為了解決它們的不足而誕生的。SGML的全稱是標(biāo)準(zhǔn)通用化標(biāo)記語言,它從80年代初開始使用。正如XML一樣,SGML也可用于創(chuàng)建成千上萬的標(biāo)記語言,它為語法標(biāo)記提供了異常強(qiáng)大的工具,同時具有極好的擴(kuò)展性,因此在分類和索引數(shù)據(jù)中非常有用。目前,SGML多用于科技文獻(xiàn)和辦公文件中。SGML非常之復(fù)雜,不僅如此,SGML非常昂貴。還有最關(guān)鍵的一點,幾個主要的瀏覽器廠商都明確支持SGML,這無疑是SGML在網(wǎng)上遇到的最大。HTML免費、簡單,而且它獲得了廣泛的支持。HTML最初于

1990年由CERN設(shè)計,它是一個非常簡單的SGML語言,可以方便普通人的使用。而正如設(shè)計之初所構(gòu)想的那樣,HTML現(xiàn)在在世界范圍內(nèi)得到了廣泛的應(yīng)用。111996年人們開始致力于描述一個標(biāo)記語言,它既具有SGML的強(qiáng)大功能W3C小組來從和可擴(kuò)展性,同時又具有HTML的簡單性。國際互聯(lián)網(wǎng)(World

Wide

Web

Consortium)決定專門成立一個SGML事此項工作,Sun公司的

Bosak擔(dān)任小組的指揮。SGML中所有非的、未被使用的和含義模糊的部分都被刪除,剩下的就成為短小精干的置標(biāo)工具——XML。對于XML的描述(由

TimBray和C.M.Sperberg-McQueen撰寫)只有26頁,而當(dāng)初的SGML的描述卻長達(dá)500頁之多,但SGML中所有的精華都被保留了下來。XML不斷發(fā)展演化,并且從CML和MathML中汲取了大量的經(jīng)驗。

1997年春天,可擴(kuò)展

語言XML草案已被擬定,到了1997年夏天,微軟也開始了關(guān)于通道描述格式CDF(Channel

Definition

Format)的定義工作,這應(yīng)該算是XML的第一個真正的應(yīng)用。W3C于1998年2月批準(zhǔn)了XML的1.0版本,一個嶄新而大有前途的語言誕生了。12自從XML誕生以來,又有一大批用XML定義的新的置標(biāo)語言隨之誕生,它們有的仍處在草案階段,還有一些已經(jīng)由W3C

成為正式標(biāo)準(zhǔn),開始在各個領(lǐng)域發(fā)揮著它們、同時也是XML的巨大優(yōu)勢。這其中包括前面說到的CML和MathML,還包括使用XML重新定義的XHTML,用于顯示矢量圖形的SVG,用于表現(xiàn)多 效果的SMIL,用于 的OEB,用于

上網(wǎng)的WML和HDML,面向電子商務(wù)的ebXML等。GML(1969)SGML(1985)HTML(1993)XML(1998)XHTMLSVGSMILHDMLOEB13XML應(yīng)該可以在互聯(lián)網(wǎng)上直接使用(就象HTML那樣好用)。XML應(yīng)該支持各種不同的應(yīng)用方式(不但包括瀏覽,還包括對內(nèi)容的分析)。XML應(yīng)該與SGML兼容。處理XML文件的應(yīng)用程序應(yīng)該容易編寫。XML中的可選特性的數(shù)量應(yīng)該減到最小,最好減至沒有(可選特性經(jīng)常造成 )。XML文件應(yīng)該具有良好的可讀性,并且比較清晰。用XML設(shè)計新的置標(biāo)語言應(yīng)該方便快捷。XML設(shè)計的置標(biāo)語言應(yīng)該正式、簡潔。XML文件應(yīng)該容易編制。14正象HTML一樣,可擴(kuò)展置標(biāo)語言XML(eXtensible

MarkupLanguage)也是一種置標(biāo)語言。它同樣依賴于描述一定規(guī)則的和能夠讀懂這些的應(yīng)用處理工具來發(fā)揮它的強(qiáng)大功能。關(guān)于此規(guī)范的正確題目,亦即XML的正確全名,應(yīng)該是

Extensible

MarkupLanguage,eXtensible

MarkupLanguage只不過是一個拼寫錯誤罷了。但是,現(xiàn)在簡寫XML不僅正確,而且正如它在Language的的標(biāo)題中一樣,是Extensible

Markup名稱。這個名稱和簡寫是由JamesClark最先,其它可供選擇的名稱還包括小型標(biāo)準(zhǔn)置標(biāo)語言

MGML

(Minimal

Generalized

Markup

Language),標(biāo)準(zhǔn)置標(biāo)語言的小型結(jié)構(gòu)MAGMA(Minimal

Architecture

For

GeneralizedMarkup

Applications),

以及互聯(lián)網(wǎng)置標(biāo)結(jié)構(gòu)語言SLIM(Structured

Language

for

Internet

Markup)。15XML是一種可擴(kuò)展的元標(biāo)記語言,集SGML和HTML的優(yōu)勢于一身,其設(shè)計目的是為了克服

HTML語言的缺陷,將網(wǎng)絡(luò)上傳輸?shù)奈臋n規(guī)范化,并賦予標(biāo)記一定的含義,同時,還保留了HTML所具有的簡捷、適于網(wǎng)絡(luò)傳輸和瀏覽的優(yōu)點。XML將數(shù)據(jù)本身與數(shù)據(jù)的顯示方法與處理分離開。XML描述的是數(shù)據(jù),可由任何的程序獲取處理它。因此,全球的開發(fā) 都將XML集成到自己的程序中來。16來說也XML可用于現(xiàn)有的Web協(xié)議(HTTP、MIME)和機(jī)制(URL)XML支持Web的各種不同應(yīng)用,并使用了一種類屬的方法使其具有可擴(kuò)展性XML與SGML兼容,大多數(shù)SGML應(yīng)用可以向XML轉(zhuǎn)化與HTML文檔一樣,XML文檔易于創(chuàng)建XML文檔內(nèi)容和結(jié)構(gòu)清晰易懂,所以即使對非專業(yè)易于閱讀和使用XML的設(shè)計嚴(yán)謹(jǐn),所以XML中標(biāo)記的信息可以很容易地被計算機(jī)程序所處理XML標(biāo)準(zhǔn)定義精煉,這就保證了其 和處理的速度17fclml.dtd:<?xml

version=“1.0”encoding=“GB2312”?><!ELEMENT

聯(lián)系人列表(聯(lián)系人)*><!ELEMENT

聯(lián)系人

(

,ID,公司,,,地址)><!ELEMENT

地址

(街道,城市,省份)><!ELEMENT

(#PCDATA)><!ELEMENT

ID

(#PCDATA)><!ELEMENT

公司(#PCDATA)><!ELEMENT<!ELEMENT(#PCDATA)>(#PCDATA)><!ELEMENT

街道

(#PCDATA)><!ELEMENT

城市(#PCDATA)><!ELEMENT

省份

(#PCDATA)>18client.xml<?xml

version

=

“1.0”

encoding=“GB2312”

standalone

=

“no”?><!DOCTYPE

聯(lián)系人列表

SYSTEM

“fclml.dtd”><?xml-stylesheet

type="text/xsl"

href="mystyle.xsl"?><聯(lián)系人列表><聯(lián)系人><

>

</

><ID>001</ID><公司>A公司</公司>><

>

</<

>(010)62345678</

><地址><街道>五街1234號</街道>市</城市></省份><城市><省份></地址></聯(lián)系人><聯(lián)系人><

>

</

><ID>002</ID><公司>B公司</公司><

>li@b</

><

>(021)87654321</

><地址><街道>

路9876號</街道><城市>

</城市><省份>

</省份></地址></聯(lián)系人></聯(lián)系人列表>19“

xmlns="mystyle.xsl<?xml

version="1.0"

encoding="GB2312"?><xsl:stylesheet

xmlns:xsl="html40“ result-ns=""><xsl:template><xsl:apply-templates/></xsl:template><xsl:template

match

=

"/"><HTML><HEAD><TITLE>F公司的客戶聯(lián)系信息</TITLE></HEAD><BODY><xsl:apply-templates

select="聯(lián)系人列表"/></BODY></HTML></xsl:template><xsl:template

match="聯(lián)系人列表"><xsl:for-each

select="聯(lián)系人"><UL><LI><xsl:value-of

select="

"/></LI><UL><LI>用戶ID:<xsl:value-of

select="ID"/></LI><LI>公司:<xsl:value-of

select="公司"/></LI><LI> :

<xsl:value-ofselect="

"/></LI><LI> :

<xsl:value-of

select="

"/></LI><LI>街道:<xsl:value-of

select="地址/街道"/></LI><LI>城市:<xsl:value-of

select="地址/城市"/></LI><LI>省份:<xsl:value-of

select="地址/省份"/></LI><LI>ZIP:<xsl:value-of

select="地址/ZIP"/></LI></UL></UL></xsl:for-each></xsl:template></xsl:stylesheet>211)XML是用來存放數(shù)據(jù)的

XML不是HTML的替代品,XML和HTML是兩種不同用途的語言。數(shù)據(jù)的,重點是: 數(shù)據(jù),

XML是被設(shè)計如何存放數(shù)據(jù)。HTML是被設(shè)計用來顯示數(shù)據(jù)的,重點是:顯示數(shù)據(jù)以及在Web上如何更好的顯示數(shù)據(jù)。

HTML是與顯示信息相關(guān)的,XML則是與描述信息相關(guān)的。2)XML

什么也不做

XML被設(shè)計成什么都不做的。

也許看起來很難理解,但事實上XML確實什么都不做。XML只是用來組織、 和發(fā)送信息的。

下面的例子是Ordm給Lin的便條,使用的是XML格式:22<note><from>Ordm</from><to>Lin</to><heading>Reminder</heading><body>Don't

forget

me

this

weekend!</body></note>這個便條有信息頭,又有信息主體,還包括發(fā)送人和接收人。盡管如此,這個XML文檔仍然什么都不做,只是用XML標(biāo)記 信息的文件。需要人們編寫發(fā)送和接收并且顯示這種格式信息的

。23XML是

的、可以擴(kuò)展的

XML標(biāo)記并不是預(yù)先規(guī)定好的,你必須創(chuàng)造你自己的標(biāo)記。

在HTML文檔中必須使用規(guī)則中定義好的標(biāo)記。比如:<P><br><a></a>等等。

XML允許你定義自己的標(biāo)記以及文檔結(jié)構(gòu)。

比如在上面例子中的“<to>”、“<from>”標(biāo)記都不是在XML規(guī)范中事先定義好的。這些標(biāo)記都是XML文檔的作者“創(chuàng)造”出來的。XML是HTML的補(bǔ)充

XML并不是HTML的替代品。XML并不是HTML的替代品,理解這一點非常重要。在將來的網(wǎng)頁開發(fā)中,XML將被、數(shù)據(jù),而HTML則是用來格式化和顯示數(shù)據(jù)的。對于XML最好的形容可能是:XML是一種跨平臺的,與軟、硬件無關(guān)的,處理信息的工具。2425所有的XML文檔必須有一個結(jié)束標(biāo)記;<p>This

is

a

paragraph【HTML】<p>This

is

another

paragraph</p>【XML】XML標(biāo)記都是大小寫敏感的;<Message>This

is

incorrect</message>

×<message>This

is

correct</message>

√3)所有的XML元素必須合理包含;<b><i>This

text

is

bold

and

italic</b></i>

【HTML】<b><i>This

text

is

bold

and

italic</i></b>【XML】4)所有的XML文檔必須有一個根元素XML文檔中的第一個元素就是根元素。5)屬性值必須使用引號<?xml

version="1.0"

encoding="ISO-8859-1"?><note

date=“12/11/99”><to>Lin</to><from>Ordm</from><heading>Reminder</heading><body>Don't

forget

me

this

weekend!</body></note>結(jié)構(gòu)良好的XML文檔符合語法的XML文檔稱為結(jié)構(gòu)良好的XML文檔。文檔包含一個或多個元素它只有一個包含所有其它元素的元素其元素相互間的嵌套要正確用在開始和結(jié)束標(biāo)識符中的元素名要精確匹配屬性名不能在同一元素開始標(biāo)識符中出現(xiàn)多次屬性值必須括在單引號和雙引號中屬性值不能直接或者間接地 外部實體屬性值中

的任何實體的替換文本中不能含有字符“<”(但可含字符串<)實體在使用前要進(jìn)行任何實體 不能含有不分析實體的名字邏輯和物理結(jié)構(gòu)的嵌套要正確26272)有效XML文檔與無效XML文檔有效XML文檔:內(nèi)容結(jié)構(gòu)嚴(yán)格遵守它自身的標(biāo)記說明,能通過自身的語法檢查;通過DTD/Schema驗證的XML文檔稱為有效的XML文檔。<?xml

version="1.0"

encoding="UTF-8"?><?xml-stylesheet

type="text/xsl"

href="show_book.xsl"?><!DOCTYPE

catalog

SYSTEM

"catalog.dtd“><!--

catalog

last

updated

2000-11-01

--><catalog

xmlns="http

/catalog/"><book

id="bk101"><author>Abercrombie,

Kim</author><title>XML

Developer's

Guide</title><genre>Computer</genre><price>44.95</price><publish_date>2000-10-01</publish_date><description><![CDATA[An

in-depth

look

atcreating

applications

with

XML,

using

<,

>,

]]>

and;.</description></book><book

id="bk109"><author>Kress,

Peter</author><title>Paradox

Lost</title><genre>Science

Fiction</genre><price>6.95</price><publish_date>2000-11-02</publish_date><description>After

an

inadvertent

trip

through

aHeisenberg

</description></book></catalog>序言文檔元素根元素屬性元素注釋文檔類型定義XML文本PICDATA實體XML的示例<?xmlversion="1.0"

encoding="UTF-8"standalone="yes"?>一個XML文件最好以一個XML作為開始。XML在文件中是可選內(nèi)容,可加可不加,但W3C加入這一行。XML

是處理指示的一種。XML

相對簡單一些,形象地說,它的作用就是告訴XML處理程序:“下面這個文件是按照XML文件的標(biāo)準(zhǔn)對數(shù)據(jù)進(jìn)行標(biāo)記的”。一個最簡單的XML

是這樣的:<?xml

version

=

"1.0"?>XML

中要求必須指定“version”的屬性值。同時,聲明中還有兩個可選屬性,分別是“standalone”和“encoding”。因此,一個完整的XML

是這樣的:29XML

屬性的含義

version屬性在一個XML的處理指示中必須包括version屬性指明所采用的

XML的版本號,而且,它必須在屬性列表中排在第一位。由于當(dāng)前的XML

版本是1.0,所以:version="1.0"。

standalone屬性這個屬性表明該XML文件是否和一個獨立的標(biāo)記 文件配套使用。因此,如果該屬性置為“yes”,說明沒有另外一個配套的DTD文件來進(jìn)行標(biāo)記 。相反,如果這個屬性置為“no”,則有可能有這樣一個文件。(注意,也可能沒有。)

encoding屬性所有的XML語法分析器都要支持8位和16位的編碼標(biāo)準(zhǔn)。不過,XML可能支持一個更龐大的編碼集合。XML幾個常見的編碼:GB2312、BIG5、UTF-830處理指令是用來給處理XML文件的應(yīng)用程序提供信息的。也就是說,XML分析器可能對它并不感

,而把這些信息原封不動地傳給XML應(yīng)用程序。然后,這個應(yīng)用程序來解釋這個指示,遵照它所提供的信息進(jìn)行處理,或者再把它原封不動地傳給下一個應(yīng)用程序。正如

前面看到的,XML語法:就是一個處理指示。<?處理指令名?>或

<?處理指令名

屬性名=“屬性值”

?>命名:處理指令名必須以字母、下劃線開頭;處理指令名可以包括字母、下劃線、冒號、數(shù)字、橫線和;由于XML

的處理指示名是xml,因此其它處理指示名不能再用xml;樣式表處理指令樣式表處理指令xml-stylesheet。這個處理指令必須出現(xiàn)在序言部分,在根元

前。<?xml-stylesheet

type="type"href="uri"?>或<?xml:stylesheet

type="type"href="uri"

?>type="text/css"或者

type="text/xsl"31“置標(biāo)”是XML語言的精髓。因此,標(biāo)記在XML的元素中、乃至整個XML文件中,占了舉足輕重的位置。XML的標(biāo)記和HTML的標(biāo)記在模樣上大體相同,不過,XML對于標(biāo)記的語 定可比HTML要嚴(yán)格得多。除了注釋和CDATA部分以外,所有符號“<”和符號“>”之間的內(nèi)容都稱為標(biāo)記。其基本形式為:<標(biāo)記名(屬性名=“屬性取值”)*>標(biāo)記必不可少任何一個形式良好的XML文件中至少要有一個元素。也就是說,標(biāo)記在XML文件中是必不可少的。大小寫有所區(qū)分(大小寫敏感)在標(biāo)記中必須注意區(qū)分大小寫。在HTML中,標(biāo)記〈 O〉和〈 o〉是一回事,但在XML中,它們是兩個截然不同的標(biāo)記。32要有正確的結(jié)束標(biāo)記結(jié)束標(biāo)記除了要和開始標(biāo)記在拼寫和大小寫上完全相同,還必須面加上一個斜杠“/”。因此,如果開始標(biāo)記是〈O〉,結(jié)束標(biāo)記應(yīng)該寫作〈/O〉。XML嚴(yán)格要求標(biāo)記配對,因此,HTML中的<BR>、<HR>的元素形式在XML中是不合法的。不過,為了簡便起見,當(dāng)一對標(biāo)記之間沒有任何文本內(nèi)容時,可以不寫結(jié)束標(biāo)記,而在開始標(biāo)記的最后慣以斜杠“/”來確認(rèn)。這樣的標(biāo)記稱為“空標(biāo)記”。標(biāo)記要正確嵌套間必須滿足在一個XML元素中允許包含其它XML元素,但這些元嵌套性。標(biāo)記命名要合法標(biāo)記應(yīng)該以字母、下劃線“_”或冒號“:”開頭,后面跟字母、數(shù)字、

“.”、冒號、下劃線或連字符“-”,但是中間不能有空格,而且任何標(biāo)記不能以“xml”起始。另外,最好不要在標(biāo)記的開頭使用冒號,盡管它是合法的,但可能會帶來

。在XML1.0標(biāo)準(zhǔn)中允許使用任何長度的標(biāo)記,不過,現(xiàn)實中的XML處理程序可能會要求標(biāo)記的長度限制在一定范圍內(nèi)。33有效使用屬性標(biāo)記中可以包含任意多個屬性。在標(biāo)記中,屬性以名稱/取值對出現(xiàn),屬性名不能重復(fù),名稱與取值之間用等號“=”分隔,且取值用引號引起來。例如:<商品類型

="服裝"顏色="黃色">在這個例子中,“類型”和“顏色”是標(biāo)記“商品”的屬性,“服裝”是屬性“類型”的取值,“黃色”是屬性“顏色”的取值。屬性命名的規(guī)范與標(biāo)記命名規(guī)范大體相似,需要注意有效字母、大小寫等一系列問題。不過,在必要的時候,屬性中也可以包含空白符,標(biāo)點和實體

。需要特別注意的是,在XML中屬性的取值必須用引號引起來,但在HTML中這一點并不嚴(yán)格要求。最后要說明一點,屬性的所有賦值都被看作是字符串。因此,如果你的處理程序讀到下面這段XML標(biāo)記:<圓柱體半徑=“10”高=“13”〉程序應(yīng)該能夠把字符串“10”和“13”轉(zhuǎn)化為它們所代表的數(shù)字。34元素是XML文件內(nèi)容的基本單元。從語法上講,一個元素包含一個起始標(biāo)記、一個結(jié)束標(biāo)記以及標(biāo)記之間的數(shù)據(jù)內(nèi)容。其形式是:<標(biāo)記>數(shù)據(jù)內(nèi)容</標(biāo)記>空元素:<標(biāo)記/>或<標(biāo)記屬性=“屬性值”/>元素中還可以再嵌套別的元素。所有的XML文件都至少包含一個形式良好的根元素。根元素,又稱為文件標(biāo)記,緊跟在XML

之后,如果該XML文件中還內(nèi)嵌了DTD,則這個根標(biāo)記緊跟在DTD之后。根標(biāo)記必須是一個非空的標(biāo)記,其中包含了整個文件的數(shù)據(jù)內(nèi)容。35XML元素的可擴(kuò)展性

元素是可以擴(kuò)展的,以攜帶

XML便條例子:的信息<note><to>全體同學(xué)</to><from>Mike</from><body>請大家學(xué)好XML,因為它有用。</body></note>如果在這個XML文檔中加入一些額外的信息,如下所示:<note><date>2005-02-24</date><to>全體同學(xué)</to><from>Mike</from><heading>注意喲</heading><body>請大家學(xué)好XML,因為它有用。</body></note>36XML元素命名必須遵守下面的規(guī)則:

元素名必須是以字母、下劃線開始的字符串;

元素名可以包含字母、數(shù)字、連字符、下劃線、

元素的名字不能以XML(或者xml,Xml,xMl...)開頭。

元素的名字不能包含空格。

應(yīng)該使元素的名字具有可讀性。

XML文檔往往都對應(yīng)著數(shù)據(jù)表,應(yīng)該盡量讓數(shù)據(jù)庫中的字段名和相應(yīng)的XML文檔中的元素命名保持一致,這樣可以方便數(shù)據(jù)變換。

在XML元素命名中不要使用":",因為XML命名空間需要用到這個十分特殊的字符。37元 間的關(guān)系:子元素/父元素、祖先/后代設(shè)想有這樣一本書:署名:XML

指南第一章:XML入門簡介HTMLXML第二章:XML語法XML元素必須有結(jié)束標(biāo)記XML元素必須正確的嵌套可以用XML文檔來描述這本書:<book><title>XML指南</title><chapter>XML入門簡介HTML</para>XML</para><para><para></chapter><chapter>XML語法<para>XML元素必須有結(jié)束標(biāo)記</para><para>XML元素必須正確的嵌套</para></chapter></book>38XML元素的內(nèi)容嵌套元素字符數(shù)據(jù)實體CDATA節(jié)處理指令注釋3940根元素每個XML文檔必須有且只有一個根元素。根元素是一個完全包括文檔中其他所有元素的元素。根元素的起始標(biāo)記要放在所有其他元素的起始標(biāo)記之前。根元素的結(jié)束標(biāo)記要放在所有其他元素的結(jié)束標(biāo)記之后。在XML中,注釋是用“〈!--”和“--〉”引起來的。如下XML文件:<示例><!--一個XML的例子--><![CDATA[<聯(lián)系人><

>

</

><

>

</

></聯(lián)系人>]]></示例>在XML文件中使用注釋時,同樣要遵守幾個規(guī)則:在注釋文本中不能出現(xiàn)字符“-”或字符串“--”,XML處理器可能把它們和注釋結(jié)尾標(biāo)志“-->”相

。注釋文本放在標(biāo)記之中,否則,它就不是“形式良好的”XML文件了。如:<示例

<!--

一個XML的例子-->

><![CDATA[<聯(lián)系人><

>

</

><

>

</></聯(lián)系人>]]></示例>41類似地,

注釋文本放在實體

中,也不要放在XML

之前。記住,

用XML

作為XML文件中的第一行。注釋不能被嵌套。在使用一對注釋符號表示注釋文本時,要保證其中不再包含另一對注釋符號。例如下面例子是不合法的:<!--一個XML的例子<!--以上是一個注釋-->-->XML處理器對于注釋中的一切內(nèi)容都會

,注釋中出現(xiàn)的標(biāo)記也一同被忽略。因此,在下面這段文本中,所有注釋中的“名詞”元素都被忽略,剩下的只有最后一行中的元素“XML”。<!--不處理以下信息<名詞>HTML</名詞><名詞>XHTML</名詞><名詞>SGML</名詞>--><名詞>XML</名詞>不過,當(dāng)使用注釋時一定要

,要確保文件在去掉全部注釋之后,遵守所有“形式良好的”文件的要求。42<!DOCTYPE

catalog

SYSTEM

"catalog.dtd">作用:用來定義XML文檔數(shù)據(jù)結(jié)構(gòu)。方法:文檔類型定義由DOCTYPE標(biāo)記;分類:包括DTD子集和外部DTD子集43DTD子集DTD子集通常定義語法:<!DOCTYPE

根元素名[描述信息]>例如:<?xml

version="1.0"?><!DOCTYPE

myMessage

[<!ELEMENT

myMessage

(message)><!ELEMENT

message

(#PCDATA)>]><myMessage><message>

o!</message></myMessage>44外部DTD子集的定義語法:<!DOCTYPE

根元素名稱

SYSTEM“URI地址”><!DOCTYPE

根元素名稱PUBLIC“FPI”>SYSTEM是指文檔使用的私有DTD文件的

,而PUBLIC則指文檔調(diào)用一個公用的DTD文件的例:<!DOCTYPE

myMessage

SYSTEM

“myMessage.dtd><!DOCTYPE

myMessage

PUBLIC

“-//W3C//DTD//EN”>也可以把兩種外部定義結(jié)合起來,例:<!DOCTYPE

myMessage

PUBLIC

“-//W3C//DTD//EN”“一個XML文檔可以同時擁有”>DTD和外部DTD子集,語法:<!DOCTYPE

根元素名稱

PUBLIC

“FPI”/“外部URI”[

描述信息]>當(dāng)同時擁有外部和的策略。一般以子集,若這兩者出現(xiàn) 時,不同的解析器有不同DTD子集為準(zhǔn)。SGML地址45URI、URL、URN的關(guān)系a)

URI

資源標(biāo)識符是所有名稱/地址的一般集合,它們是指向資源的簡短字符串。b)

URL協(xié)議-資源定位符的結(jié)構(gòu):-路徑-文件名URL是URI模式的集合,是URI的子集,它顯示的說明怎樣Internet上的資源。c)

URN

資源名稱唯一標(biāo)識一個實體的標(biāo)識符,但是不能給出實體的位置。系統(tǒng)在試著從Web上找到該實體之前,可以先在本地尋找一個實體。它也允許Web位置改變,然而這個實體卻還是能夠被找到。URN標(biāo)識持久性

Internet

資源。URN可以提供一種機(jī)制,用于查找和檢索定義特定命名空間的架構(gòu)文件。盡管普通的

URL

可以提供類似的功能,但是在這方面,URN

更加強(qiáng)大并且更容易管理,因為URN

可以多個URL。與URL不同,URN

與地址無關(guān)。46實體指代其他復(fù)雜的結(jié)構(gòu)可以避免重復(fù)的輸入實體的兩種類型一般實體定義一般實體的格式如下:<!ENTITY

實體名“文本內(nèi)容”〉如:<!ENTITY

lettersign“某網(wǎng)絡(luò)公司銷售部門市海淀區(qū)中關(guān)村88號,100000"〉另外,也可以指定一個實體代替一個外部文件的內(nèi)容,此時要使用SYSTEM關(guān)鍵字。例如:<!ENTITY

lettersign

SYSTEM“http:

/lettersign.xml”〉。在這個例子中,XML處理器將用指定文件的內(nèi)容來替換實體指示。參數(shù)實體與一般實體相同,參數(shù)實體既可以是的也可以是外部的。不過,參數(shù)實體只用在DTD中。參數(shù)實體的格式與一般實體很類似,只不過中間要加上“%”符。<!ENTITY%實體名"文本內(nèi)容"〉47實體的使用方式實體對于實體的應(yīng)該放在文件類型DOCTYPE中。DOCTYPE一般放在前。這樣一來,XML文件頭(即XML

和DTD)之后,XML元文件就變?yōu)橄旅娴男问剑?lt;?xml

version="1.0"?><!DOCTYPE

文件根元素名[實體

部分]><文件根元素名>具體數(shù)據(jù)內(nèi)容</文件根元素名>實體實體

指的是一個在實體中已經(jīng)過的一個實體。實體的形式很簡單:&實體名;48實體有以下幾點規(guī)則一定要注意XML實體之前,必須已經(jīng)在XML文件中對此實體進(jìn)行過

;在在實體中不能出現(xiàn)空格。也就是說,&lettersign;和&letterhead;的用法都會引起錯誤。盡管在一個實體中可以再其它實體,但是不能出現(xiàn)循環(huán)說,一個實體不能

它自己;同樣,也不能出現(xiàn)實體A。也就是實體B,然后實體B再反過來

實體A的情況。實體

不能在DOCTYPE

中出現(xiàn)。實體

的文本必須是形式良好的XML。同樣,參數(shù)實體的

與一般實體的

大同小異,只是要把實體前的符號&換為%就可以了,形式是:%實體名;此外,實體

不僅可以出現(xiàn)在字符數(shù)據(jù)中,還可以出現(xiàn)在標(biāo)記的屬性中。例如:<聯(lián)系人公司=“B公司”地址=“&B公司地址;”>,不但要遵守前面所述的實體 的種種規(guī)則,如果在屬性中出現(xiàn)實體還要注意以下兩點:在標(biāo)記屬性中不能一個外部實體。的文本中不能出現(xiàn)字符“<”,否則替換后就不再是一個“形式良好的”XML文件了。4950下面,

就來看一個完整的實體和實體的例子:<?xml

version="1.0"?>市五街1234號”>路9876號”〉<!DOCTYPE

聯(lián)系人列表

[<!ENTITY

A公司地址“<!ENTITY

B公司地址“]><聯(lián)系人列表><聯(lián)系人><

>

</

><公司>>A公司</公司>><地址>&A公司地址;</地址></聯(lián)系人><聯(lián)系人><

>

</

><公司>B公司</公司><地址>&B公司地址;〈/地址〉</聯(lián)系人><聯(lián)系人><

>

</

>><公司>B公司</公司><地址>&B公司地址;〈/地址〉</聯(lián)系人></聯(lián)系人列表>為了避免把字符數(shù)據(jù)和標(biāo)記中需要用到的一些特殊符號相,XML還提供了一些有用的實體。這些特殊的XML實體

包括:字符實體>><<&;""’'例子解析結(jié)果3<53<55>35>3A

;BA&BJoe'sJoe’s"yes"“yes”51一般實體實體:將實體所指代的內(nèi)容定義在使用該實體的XML文檔中。外部實體:所指代的內(nèi)容在使用該實體的XML文檔的外部定義。解釋實體:一定會非解釋實體:可能ML解析器所解釋并使用的實體。

ML解析器忽略的實體。其中,非解釋實體一定是外部實體,故實體可分為三類:解釋實體(外部解釋實體

外部非解釋實體實體)52解釋實體實體 的語法<!ENTITY

實體名“實體內(nèi)容”>實體的使用語法&實體名;解釋實體可以在

DTD中<!DOCTYPE

根元素名[<!ENTITY

實體名“實體內(nèi)容”>]>解釋實體也可以在外部DTD子集中<!DOCTYPE根元素名SYSTEM

“URI”>使用外部文檔類型定義的優(yōu)點方便XML文檔的編寫、修改、復(fù)用;XML文檔的歸一化將XML文檔中的所有實體擴(kuò)展成它所指代的具體內(nèi)容;53外部解釋實體XML文檔中一個完整的文件,需要外部解釋實體<!ENTITY

實體名SYSTEM“實體定義文件URI”>例:<!ENTITY

ABC

SYSTEM

/News.txt”>而在XML文檔中使用&ABC;外部非解釋實體"

NDATA

gif><img

src="logo"/><?xml

version="1.0"

standalone="no"

?><!DOCTYPE

img

[<!ELEMENT

img

EMPTY><!ATTLIST

img

src

ENTITY

#REQUIRED><!ENTITY

logo

SYSTEM

"<!NOTATIONgif

PUBLIC

"gif

viewer">

]>實體名用在屬性值中,&logo;

×logo

√54<Student

ID="100"><Name>TOM</Name></Student>屬性值 引號(“)或單引號(‘)分隔(如果屬性值中有’,用”分隔;有“,用‘分隔)一個元素可以有多個屬性,它的基本格式為:<元素名屬性名="屬性值">特定的屬性名稱在同一個元素標(biāo)記中只能出現(xiàn)一次屬性值不能包括<,&,>,如果需要用則應(yīng)用替代符;屬性只能包含在起始標(biāo)記中。屬性 名規(guī)則同元素命名。5556屬性與子元素的有關(guān)問題屬性的表達(dá)方式:<Student

ID="100"><Name>TOM</Name></Student>子元素的表達(dá)方式:<Student

><id>

100</id><Name>TOM</Name></Student>屬性與子元素的有關(guān)問題屬性很簡潔,有很好的可讀性,如果使用過多的子元素會降低可讀性。要采用子元素的情況:①

一個屬性不能包含子屬性,但子元素可以包含自己的子元素。故對復(fù)雜的信息,要采用復(fù)合的子元素來說明。②若元素的開始標(biāo)記中包含過多的屬性,或標(biāo)記中的元素名稱、屬性名稱、屬性取值等過長,造成整個開始標(biāo)記過長而降低程序的可讀性,則可以考慮使用子元素代替屬性。③

屬性不容易擴(kuò)展。④

屬性不能夠描述結(jié)構(gòu)(子元素可以)。⑤

屬性很難被程序代碼處理。⑥

屬性值很難通過DTD進(jìn)

試。一般來說子元素可以完全代替屬性。57有些時候應(yīng)該為一個元素設(shè)計一個ID

,通過這個ID可以特定的XML元素:存取<messages><note

ID="501"><to>

Tove</to><

from>Jani

</from><day>12</day><year>99</year><heading>Reminder</heading><body>

Don't

forget

me

this

weekend!</body></note><note

ID="502">……</note></messages>結(jié)論元數(shù)據(jù)(與數(shù)據(jù)有關(guān)的數(shù)據(jù))應(yīng)該以屬性的方式,而數(shù)據(jù)本身應(yīng)該以元素的形式

。5859一對標(biāo)記之間出現(xiàn)的字符數(shù)據(jù)可以是任何合法的

UNICODE字符,但不能包含字符“〈”。這是因為,字符“〈”被預(yù)留用作標(biāo)記的開始符。在XML中,起始和結(jié)束標(biāo)記之間出現(xiàn)的所有合法字符都被忠實地傳給XML處理程序。比方說〈格式>一段文字〈/格式>和〈格式>一段文字〈/格式>是不同的,因為后者的文本數(shù)據(jù)比前者多了兩個換行符。#PCDATA是被分析字符數(shù)據(jù)。使用#字符使得在DTD元素說明中,#PCDATA不可能錯當(dāng)成名字,因為元素名中不能用#字符。被分析字符數(shù)據(jù)來自SGML,這意味著,XML處理器將

文檔的文本并搜索暗示標(biāo)記的特征記號--尤其是<和&字符。60有些時候,希望XML處理器能夠把在數(shù)據(jù)中引入的標(biāo)記當(dāng)作普通數(shù)據(jù)而不是真正的標(biāo)記來看待。這時,CDATA為你助了。另外還有些時候,就象在程序中引入注釋一樣,可能希望在XML文件中加入一些用作解釋的字符數(shù)據(jù),并且希望XML處理器不對它們進(jìn)行任何處理。這種類型的文本稱作注釋(COMMENT)文本。用于把整段包含大量<、>、&或者“的文本解釋為純字符數(shù)據(jù)而不是標(biāo)記的情況。CDATA節(jié)中的所有字符都會被當(dāng)作元素字符數(shù)據(jù)的常量部分,而不是XML標(biāo)記。在CDATA部件之內(nèi)的文本會被解析器忽略。語法:<![CDATA[內(nèi)容]]>61<script><![CDATA[function

f1(a,b){if

(name=“cai

&&

a

<

0){return

1}

else

{return

0}}]]></script><script>function

f1(a,b)

{if

(name=“cai”&&

a

<0){return1}

else

{return

0}}</script>62CDATA注意事項:可以輸入任意字符(除]]>或者<![CDATA[外)CDATA部件之間不能再包含CDATA部件(不能嵌套)。同樣要注意在字符串“]]>”之間沒有空格或者換行符??梢岳肅DATA標(biāo)記將含有 字符的文本括起來;會不

PCDATA是被解析器解析的文本。文本內(nèi)的被當(dāng)作標(biāo)記,實體會被展開。

CDATA是不被解析器解析的文本。文本內(nèi)的會被當(dāng)作標(biāo)記,實體不會被展開。63在ADO.NET

中,傳輸數(shù)據(jù)的格式是

XML。數(shù)據(jù)需要從數(shù)據(jù) 區(qū)移動到數(shù)據(jù)集以及從數(shù)據(jù)集移動到各種組件。類似地,如果需要保持?jǐn)?shù)據(jù)(

例如保持到文件中),則將其 為XML。如果有XML

文件,則可以像使用任何數(shù)據(jù)源一樣使用它,并從它創(chuàng)建數(shù)據(jù)集。在ADO.NET

中,XML

是數(shù)據(jù)的基本格式。ADO.NET

數(shù)據(jù)API

自動用數(shù)據(jù)集內(nèi)的信息創(chuàng)建XML文件或流,并將它們發(fā)送給另一個組件。第二個組件可以調(diào)用類似的API

將XML

讀回數(shù)據(jù)集。(數(shù)據(jù)不以XML

格式 在數(shù)據(jù)集內(nèi)(例如,不能使用XML分析器分析數(shù)據(jù)集內(nèi)的數(shù)據(jù)),而是以更有效的格式。)6465XML

Internet

的DataSet

可以被序列化為XML使用XML

格式,可以方便地在間傳送DataSet

的內(nèi)容格式客戶端和服務(wù)器之大型機(jī)可讀

XML

文件

瀏覽器可讀可以使用不同的XML

對象同步和轉(zhuǎn)換DataSet

的數(shù)據(jù)人可讀Web

服務(wù)器DataSetXML

文件DataSet對象XmlData對象XslTransform對象XML

或HTML

文件數(shù)據(jù)庫DataAdapterDoc.SaveWriteXMLXSLT

文件XML

文件ReadXMLXML

文件66XML及其一些相關(guān)技術(shù)(包括XPath、XSLTransformation和XML

Schema)是ADO.NET

的基礎(chǔ),XML

在ADO.NET

的構(gòu)建和交互方面的參與深入得多??梢杂靡韵聨c來概括

ADO.NET

與XML

的更強(qiáng)的交互和集成:對象序列化和

處理雙編程接口XML

驅(qū)動的批處理更新(僅適用于SQL

Server

2000/2005)ADO.NET和

XML

類提供了一種

的中間

API,程序員可通過同步的雙編程接口來使用它??梢允褂?/p>

XML

基于節(jié)點的分層法或基于列的表格式數(shù)據(jù)集關(guān)系法來

和更新數(shù)據(jù)??梢栽谌魏螘r候從數(shù)據(jù)的數(shù)據(jù)集表示形式切換到

XML

DOM,反之亦然

。67DataSet

對象以二進(jìn)制格式 在內(nèi)存中數(shù)據(jù)集始終以一種名為

DiffGram

的特殊XML

格式來進(jìn)行

處理和序列化。應(yīng)用程序可以通過一組方法來使用同樣的序列化功能,其中的一對方法顯然非常突出。它們是ReadXml

和WriteXml。右表為在讀寫中使用XML數(shù)據(jù)集的方法如上表所示,使用

DataSet

和XML

時,可以將數(shù)據(jù)和架構(gòu)信息作為不同的實體進(jìn)行管理??梢越邮軄碜詳?shù)據(jù)集的

XML

架構(gòu),將它作為字符串使用,也可以將它寫入磁盤文件或?qū)⑺虞d到一個空的DataSet

對象68ReadXml

方法填充從多個源 的DataSet

對象,這些源包括磁盤文件、.NET

流或

XmlReader對象的實例。該方法可以處理任何類型的

XML文件,但是,如果

XML文件具有構(gòu)形相當(dāng)不規(guī)則的非表格式結(jié)構(gòu),則在以列和行的格式呈現(xiàn)時,當(dāng)然可能產(chǎn)生一些問題。下面的代碼片段顯示了用于從XML

加載數(shù)據(jù)集的典型代碼。StreamReader

sr

=

new

StreamReader(fileName);DataSet

ds

=

new

DataSet();ds.ReadXml(sr);

//

defaults

toXmlReadMode.Autosr.Close();將XML

源的內(nèi)容加載到數(shù)據(jù)集時,ReadXml

不合并其主鍵信息相匹配的行69數(shù)據(jù)集的XML

表示形式可以使用WriteXml

方法寫入文件、流、XmlWriter對象或字符串。XML

表示形式可以包括架構(gòu)信息,也可以不包括架構(gòu)信息。WriteXml

方法的實際行為可通過可以傳遞的

XmlWriteMode

參數(shù)來控制。枚舉中的值決定著輸出的布局。數(shù)據(jù)集表示形式包括表、關(guān)系和約束定義。如果不選擇使用

DiffGram

格式,數(shù)據(jù)集的表中的行就只寫入其當(dāng)前版本。下表概括了XmlWriteMode

可以使用的寫選項XmlWriteMode.IgnoreSchema

是默認(rèn)選項下面的代碼顯示了將數(shù)據(jù)集序列化為

XML

的典型方式。//

ds

is

the

DataSetStreamWriter

sw

=

new

StreamWriter(fileName);ds.WriteXml(sw);

//

defaults

to

XmlWriteMode.IgnoreSchemasw.Close();70使用GetXml

方法以字符串的形式返回XML

形式的數(shù)據(jù)DataSet

ds=

newDataSet();SqlDataAdapter

da

=

new

SqlDataAdapter("select

*fromAuthors",

conn);da.Fill(ds);string

strXmlDS

=

ds.GetXml();ReadXmlSchema

方法

將XML

架構(gòu)讀入DataSetWriteXmlSchema

方法

將XML

架構(gòu)形式的DataSet

結(jié)構(gòu)寫入文件或流GetXmlSchema

方法

以字符串的形式返回DataSet

的XML

表示形式的XSD架構(gòu)71有幾個因素影響了從DataSet

對象創(chuàng)建的

XML

文檔的最終結(jié)構(gòu)。這些因素包括:使用的XML

整體格式

—DiffGram或當(dāng)前內(nèi)容的無格式分層表示形式架構(gòu)信息是否存在嵌套關(guān)系表列如何

XML

元素ADO.NET

框架只對

DataSet

對象提供顯式

XML

支持。不過,將DataView

或DataTable

轉(zhuǎn)換為

XML

并不是特別難。在這兩種情況下,都必須使用臨時的數(shù)據(jù)集作為要另存為XML

的行集的容器。每個

ADO.NET

對象只能由一個容器對象

,DataTable

對象是非常重要的。不能有相同的實例,例如,一個DataTable

對象屬于兩個不同的

DataSet

對象。與DataTable

對象不同的是,DataView

不是數(shù)據(jù)集的標(biāo)準(zhǔn)組成部分,因此,為了將它保存到

XML,應(yīng)該將

DataView

轉(zhuǎn)換為一個表對象。72DiffGr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論