<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 56,  comments - 12,  trackbacks - 0

    基本的 XML Schema 的使用就是這樣,下面我們要介紹 XML Schema 的另外一個(gè)核心的部分也是 Schema 最關(guān)鍵的一個(gè)部分,就是關(guān)于 Schema 的名字空間( namespace )的問題。在上面關(guān)于 XML Schema 的介紹中,為了把讀者集中到對 XML Schema 的語法理解上,特意省略了關(guān)于名字空間 (namespace) 的介紹。
      
      
      首先我們還是從簡單的例子著手,見下面的一段代碼:
      
      
      < xsd:schema targetNamespace='http://www.SampleStore.com/Account'
      
          xmlns:xsd ='http://www.w3.org/2000/08/xmlSchema'
      
          xmlns:ACC = 'http://www.SampleStore.com/Account'
      
      
      < xsd:element name=' 訂單號碼 ' type='xsd:positiveInteger'/
      
      < xsd:element name=' 商品編號 ' type='ACC: 商品編號類型 '/
      
      < xsd:simpleType name=' 商品編號類型 ' base='xsd:string'
      
      < xsd:pattern ='[A-Z]{1}d{6}'/
      
      < !- 上面的一行代碼表示商品編碼的第一個(gè)字符應(yīng)該為字母,后面跟六個(gè)阿拉伯?dāng)?shù)字 --
      
      < /xsd:simpleType
      
      
      現(xiàn)在大家需要把注意力集中到開頭幾行的代碼上來,如下:
      
      
      < xsd:schema targetNamespace='http://www.SampleStore.com/Account'
      
         xmlns:xsd ='http://www.w3.org/2000/08/xmlSchema'
      
         xmlns:ACC = 'http://www.SampleStore.com/Account'
      
      
      實(shí)際上,一個(gè)給定的 XML Schema 定義了一系列的元素名稱,類型名稱,屬性名稱和屬性組名稱。比如上面的代碼中的訂單號碼、商品編號、商品編號類型等。而這些名稱都有它一定的作用范圍,類似于 C++ 中的局部變量的概念。而它們的作用范圍是什么呢?就是在他們的目標(biāo)名字空間( target namespace )中是有效的 , 在上面的代碼中,我們可以看到它的目標(biāo)名字空間為 http://www.SampleStore.com/Account
      
      
      需要注意的是,目標(biāo)名字空間的命名必須遵守 URL 的語義。同時(shí)需要注意的是,該目標(biāo)名字空間并不是指一個(gè)具體的文件,僅僅是給它一個(gè)名字而已。實(shí)際上,在 Schema 中的定義和聲明也可以引用其他的名字空間,我們可以把這種名字空間取名為源名字空間( source namespaces )。每一個(gè) Schema 必須有一個(gè)目標(biāo)名字空間,但是可以有多個(gè)源名字空間。
      
      
      實(shí)際上,在一個(gè)給定的 Schema 中,每一個(gè)名稱都是屬于一個(gè)特定的名字空間的。名字空間的名稱可能會(huì)很長(比如 http://www.SampleStore.com/Account ),但是它們可以用在 XML Schema 中的語義 xmlns 來進(jìn)行簡化。在上面的例子中,我們用 xsd (取名為 xsd 是任意的,比如你可以取名為 kkk,tt,ppp,gh 都可以)來表示名字空間 'http://www.w3.org/2000/08/xmlSchema' ,用 ACC 來表示名字空間 http://www.SampleStore.com/Account 。同時(shí)我們把 http://www.w3.org/2000/08/xmlSchema 這個(gè)名字空間稱為標(biāo)準(zhǔn)名字空間( standard namespace ),因?yàn)樗嵌x Schema 語法的標(biāo)準(zhǔn)地

    在上面的代碼中,目標(biāo)名字空間( targetNamespace )包含了名字訂單號碼、商品編號、商品編號類型。而名字 schema,element,simpleType,pattern,string positiveInteger 是屬于標(biāo)準(zhǔn)名字空間 http://www.w3.org/2000/08/xmlSchema 的。也就是說,它們的意義是在 http://www.w3.org/2000/08/xmlSchema 中進(jìn)行定義的。實(shí)際上,所有標(biāo)準(zhǔn)的 XML Schmea 語法、語義和數(shù)據(jù)結(jié)構(gòu)都在 http://www.w3.org/2000/08/xmlSchema 中進(jìn)行定義。這樣解析器碰到一個(gè)名稱 ( schema,element 等等 ) 的時(shí)候,就知道應(yīng)該在哪里去得到關(guān)于它的正確的語義的使用方法。
      
      
      對于標(biāo)準(zhǔn)名字空間和目標(biāo)名字空間,我們不需要指定它的 SchemaLocation 。因?yàn)閷τ谀繕?biāo)名字空間來講, SchemaLocation 就是文檔自己。對于標(biāo)準(zhǔn)名字空間來講,它是眾所周知的,也不需要指定。而對于源目標(biāo)空間來講,就需要指定它的 SchemaLocation 。見下面的例子:
      
      
      < schema targetNamespace='http://www.SampleStore.com/Account'
      
         xmlns ='http://www.w3.org/1999/xmlSchema'
      
         xmlns:ACC = 'http://www.SampleStore.com/Account'
      
         xmlns:PART = 'http://www.PartnerStore.com/PartsCatalog'
      
      
      < import namespace='http://www.PartnerStore.com/PartsCatalog'
      
         schemaLocation='http://www.ProductStandards.org/repository/alpha.xsd'/
      
      < element name=' 訂單號碼 ' type='positiveInteger'/
      
      < element name=' 商品編號 ' type='ACC: 商品編號類型 '/
      
      < simpleType name=' 商品編號類型 ' base='string'
      
      < pattern ='[A-Z]{1}d{6}'/
      
      < /simpleType
      
      < element name=' 手表 ' type='PART: 手表類型 '/
      
      
      在談關(guān)于源目標(biāo)空間的 schemaLocation 之前,我們先看一下這行代碼:
      
      
       xmlns='http://www.w3.org/1999/xmlSchema'
      
      
      它表示什么呢?它表示在文檔中所有的名字前面如果沒有前綴的,就是由 http://www.w3.org/1999/xmlSchema 進(jìn)行定義和解析的。這樣無疑是很合理的。因?yàn)槭聦?shí)上,我們 XML Schema 中的很多名稱 ( 比如 schema,element,simpleType,pattern 等等 ) 都是來自這個(gè)標(biāo)準(zhǔn)名字空間的,反復(fù)往前面加前綴,你煩不煩呀?所以干脆把它定義成默認(rèn)的,所以如果一個(gè)名稱前面沒有前綴,就認(rèn)定它是由 http://www.w3.org/1999/xmlSchema 進(jìn)行處理的。
      
      
      好,接下來我們來注意
      
      
      < import namespace='http://www.PartnerStore.com/PartsCatalog'
      
          schemaLocation='http://www.ProductStandards.org/repository/alpha.xsd'/
      
      
    這段代碼,因?yàn)?/span> http://www.PartnerStore.com/PartsCatalog 是一個(gè)源名字空間,所以必須指定它的 schemaLocation ,采用關(guān)鍵字 import 來引入這個(gè) schemaLocation
      
      
      注意到下面這行代碼
      
      
      < element name=' 手表 ' type='PART: 手表類型 '/
      
      
      它表示元素手表的類型( type )手表類型是在 http://www.PartnerStore.com/PartsCatalog 中進(jìn)行定義的。解析器如果要尋找關(guān)于手表類型的定義,需要在名字空間 http://www.PartnerStore.com/PartsCatalog 下進(jìn)行尋找。
      
      
      
      到此為止,你應(yīng)該對名字空間有了一個(gè)比較感性的理解。
    posted on 2007-01-19 00:11 苦笑枯 閱讀(244) 評論(0)  編輯  收藏 所屬分類: Xml

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    收藏來自互聯(lián)網(wǎng),僅供學(xué)習(xí)。若有侵權(quán),請與我聯(lián)系!

    <2007年1月>
    31123456
    78910111213
    14151617181920
    21222324252627
    28293031123
    45678910

    常用鏈接

    留言簿(2)

    隨筆分類(56)

    隨筆檔案(56)

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 激情综合亚洲色婷婷五月APP| 免费国产成人午夜电影| 亚洲AV无码1区2区久久| 久久免费视频网站| 亚洲国产一区二区三区青草影视| 国产在线观看免费视频软件| 久久亚洲伊人中字综合精品| 91大神免费观看| 亚洲乱码中文字幕小综合| 国产精品成人免费视频网站京东| 亚洲久悠悠色悠在线播放| 日韩成人免费视频播放| 美女视频黄视大全视频免费的| 亚洲AV无码一区二三区| 99在线免费观看| 久久亚洲日韩看片无码| 男男AV纯肉无码免费播放无码| 亚洲精品又粗又大又爽A片| www.亚洲精品.com| 99久久成人国产精品免费| 亚洲日韩乱码中文无码蜜桃 | 亚洲伊人久久综合中文成人网| 一级美国片免费看| 亚洲一卡2卡三卡4卡无卡下载| 国产亚洲av片在线观看播放| 国产免费av片在线播放| av大片在线无码免费| 免费网站观看WWW在线观看| 黄色三级三级免费看| 亚洲a级在线观看| 亚洲高清在线视频| 亚洲精品成人片在线观看| 精品国产免费观看| 野花高清在线观看免费完整版中文 | 国产精品国产午夜免费福利看| 最近免费中文字幕大全高清大全1 最近免费中文字幕mv在线电影 | 中文字幕精品亚洲无线码一区| 成人最新午夜免费视频| 四虎最新永久免费视频| 污污网站免费观看| 成人爽a毛片免费|