?? 0302-0201.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0071)http://162.105.170.55/ASPs/GetLearningArticleTemp.asp?section=0302-0201 -->
<HTML><HEAD><TITLE>XML中國論壇 - 初學進階 - 3.2.2.1 Schema 的簡單實例</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>TABLE {
FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"
}
.pt9 {
FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"
}
.pt10 {
FONT-WEIGHT: 700; FONT-SIZE: 10pt; LINE-HEIGHT: 18pt; FONT-FAMILY: "宋體"
}
.TempOutline {
FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; COLOR: #666666; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.TempOutline1 {
FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; COLOR: #666666; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.Outline {
FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.Outline1 {
FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.Outline11 {
FONT-SIZE: 9pt; MARGIN-LEFT: 38pt; TEXT-INDENT: -50pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.passage0 {
FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.passage1 {
FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.passage11 {
FONT-SIZE: 9pt; MARGIN-LEFT: 38pt; TEXT-INDENT: -50pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.passage111 {
FONT-SIZE: 9pt; MARGIN-LEFT: 51pt; TEXT-INDENT: -64pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
</STYLE>
<META content="Microsoft FrontPage 5.0" name=GENERATOR></HEAD>
<BODY vLink=#000000 aLink=#000000 link=#000000 leftMargin=0 topMargin=0
onload=""><!-- 以下為主體內容 -->
<div align="center">
<center>
<TABLE width="100%" border=0 style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0">
<TBODY>
<TR vAlign=top>
<TD width=39 rowSpan=2></TD>
<TD vAlign=center width=542>
<p align="center"><IMG height=33
src="image/title_learner.gif" width=226></TD>
<TD width=33 rowSpan=2></TD>
</TR>
<TR vAlign=top>
<TD width="542" ><!-- 正文內容 -->
<DIV class=pt10><B>3.2.2.1 Schema 的簡單實例</B></DIV>
<DIV></DIV><BR>
<DIV class=pt9>
<P>好了,上一節(jié)講了很多Schema的優(yōu)點和發(fā)展歷程,除了要為Schema歌功頌德以外,就是要在大家腦海里建立一個基本概念:Schema是用XML規(guī)范改寫的DTD,同時增加了一些擴充功能,使它具有DTD無以比擬的優(yōu)勢。不知道是不是有些讀者正在后悔,前面花了這么多時間去學DTD,原來是在學一個可能要被淘汰的東東。其實,就象上一節(jié)里所講的,DTD和Schema是一脈相承的,了解DTD可以幫助你更快更透徹地學習Schema。后面對于Schema語法的講述也正是通過二者的對比來進行的,你可以從這種比較中慢慢體會Schema的優(yōu)勢所在。</P>
<P>下面,就讓我們言歸正傳,看一看Schema長得什么樣吧!不過先別忙,首先我們來看一個簡單的例子。還記得我們的“聯(lián)系人列表”文件嗎?現(xiàn)在我們就把它作一個小小的改動,為“聯(lián)系人列表”這個元素加一個“公司”屬性,指明該列表所屬的公司,修改后的XML文件如下:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%"><?xml version = "1.0" encoding="GB2312"
standalone = "no"?><BR><!DOCTYPE 聯(lián)系人列表 SYSTEM
"fclml.dtd"><BR><BR><聯(lián)系人列表 公司=“大地公司”><BR>
<聯(lián)系人><BR>
<姓名>張三</姓名><BR>
<ID>001</ID><BR>
<公司>A公司</公司><BR>
<EMAIL>zhang@aaa.com</EMAIL><BR>
<電話>(010)62345678</電話><BR>
<地址><BR>
<街道>五街1234號</街道><BR>
<城市>北京市</城市><BR>
<省份>北京</省份><BR>
<ZIP>100001</ZIP><BR>
</地址><BR>
</聯(lián)系人><BR><BR>
<聯(lián)系人><BR>
<姓名>李四</姓名><BR>
<ID>002</ID><BR>
<公司>B公司</公司><BR>
<EMAIL>li@bbb.org</EMAIL><BR>
<電話>(021)87654321</電話><BR>
<地址><BR>
<街道>南京路9876號</街道><BR>
<城市>上海</城市><BR>
<省份>上海</省份><BR>
<ZIP>200002</ZIP><BR>
</地址><BR>
</聯(lián)系人><BR></聯(lián)系人列表></TD></TR></TBODY></TABLE></CENTER></DIV>
<P>相應的,它的DTD文件fclml.dtd也要作一點改動:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%"><?xml version="1.0"
encoding="GB2312"?><BR><BR><!ELEMENT 聯(lián)系人列表
(聯(lián)系人)*><BR><!ELEMENT 聯(lián)系人
(姓名,ID,公司,EMAIL,電話,地址)><BR><!ELEMENT 地址
(街道,城市,省份)><BR><!ELEMENT 姓名 (#PCDATA)><BR><!ELEMENT ID
(#PCDATA)><BR><!ELEMENT 公司 (#PCDATA)><BR><!ELEMENT EMAIL
(#PCDATA)><BR><!ELEMENT 電話 (#PCDATA)><BR><!ELEMENT 街道
(#PCDATA)><BR><!ELEMENT 城市 (#PCDATA)><BR><!ELEMENT 省份
(#PCDATA)><BR><!ATTLIST 聯(lián)系人列表 <BR> 公司 CDATA
#REQUIRED<BR>></TD></TR></TBODY></TABLE></CENTER></DIV>
<P>同樣的文檔結構要用Schema來描述的話,可寫做下面的樣子。我們給這個文件取名fclmlschema.xml。也許你要問:"為什么以.xml作為擴展名,而不象DTD那樣有個特殊的名字?"答案很明確,因為Schema本身就是XML文檔實例,以.xml作為擴展名正是為了強調這一點。不過,這并不是說,就只能以.xml作為擴展名。如果你愿意,你完全可以給它取一個全新的名字,比如:.aaa、.schema、...,只要你的文件系統(tǒng)支持就行。</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%">[1]<?xml version="1.0" encoding="GB2312"
?><BR>[2]<Schema xmlns="urn:schemas-microsoft-com:xml-data"
<BR>
xmlns:dt="urn:schemas-microsoft-com:datatypes"><BR>[3]
<AttributeType name="公司"/><BR>[4]
<ElementType name= "姓名"/><BR>[5]
<ElementType name= "ID"/><BR>[6]
<ElementType name= "公司"/>
<BR>[7] <ElementType name=
"EMAIL"/><BR>[8] <ElementType name= "電話"
dt:type="fixed.14.4"/><BR>[9] <ElementType
name= "街道"/> <BR>[10] <ElementType name=
"城市"/><BR>[11] <ElementType name=
"省份"/><BR>[12] <ElementType name= "地址"
content="eltOnly"> <BR>[13]
<element type= "街道" />
<BR>[14] <element type= "省份"
/> <BR>[15] <element type=
"城市"
/><BR>[16] </ElementType><BR>[17] <ElementType
name= "聯(lián)系人"
content="eltOnly"><BR>[18]
<element type= "姓名"
/><BR>[19] <element type=
"ID" /><BR>[20] <element
type= "公司" /><BR>[21]
<element type= "EMAIL"
/><BR>[22] <element type=
"電話" /><BR>[23] <element
type= "地址"
/><BR>[24] </ElementType><BR>[25] <ElementType
name= "聯(lián)系人列表"
content="eltOnly"><BR>[26]
<element type= "聯(lián)系人"
/><BR>[27] <attribute
type="公司"/><BR>[28] </ElementType><BR>[29]</Schema></TD></TR></TBODY></TABLE></CENTER></DIV>
<P>此外,為了告訴語法分析器現(xiàn)在是在用fclmlschema.xml給XML文件client.xml規(guī)定的文件結構,需要把client.xml文件中的第二行改成:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%"><學生花名冊
xmlns="x-schema:rosterschema.xml"></TD></TR></TBODY></TABLE></CENTER></DIV>
<P>下面我們就來逐字逐句地分析一下這個fclmlschema.xml:
<DL>
<DD><FONT
color=#0000ff>[1]</FONT>是XML類型聲明語句,指明該文檔是一個XML文檔,并且符合版本1.0規(guī)范。另外,該文檔采用GB2312編碼。
<DD><FONT
color=#0000ff>[2]</FONT>是Schema聲明語句,它包含了Schema命名空間的聲明。本例中用到了兩個命名空間:一是xmlns="urn:schemas-microsoft-com:xml-data",它指定本文檔是一個XML
Schema文檔;另一個是xmlns:dt="urn:schemas-microsoft-com:datatypes",它定義了在本文檔中可允褂玫氖
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -