bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

XML中的schema是什么-創(chuàng)新互聯(lián)

本篇文章給大家分享的是有關XML中的schema是什么,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

目前創(chuàng)新互聯(lián)已為千余家的企業(yè)提供了網(wǎng)站建設、域名、網(wǎng)頁空間、網(wǎng)站托管運營、企業(yè)網(wǎng)站設計、金寨網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

  經(jīng)過一番艱苦的學習和研究,終于將XML的schema的基本原理弄通了!

這是多么的痛的領悟呀!

同一個知識點我至少閱讀了3遍,終于將此脈穴打通!

使用過DTD的人應該知道,命名沖突是DTD的一大問題,而Schema里引入了命名空間的概念,就很好的解決了這個問題。具體來看:

   1、聲明名稱空間

   名稱空間聲明的一般形式為:第一部分是一個關鍵字xmlns:,第二部分是名稱空間的前綴,第三部分是一個等號,第四部分是雙引號,將第五部分的名稱空間標識URI包括起來。需要注意的是,名稱空間的前綴不能為xml,因為在XML中這個字符串是保留作特殊用途的。例:
    xmlns:tns="http://www.whtest.com/"    //其中tns為前綴。
    還可以隱式聲明名稱空間,即省略掉冒號和名稱空間前綴。例:
    xmlns="http://www.whtest.com/"   //注意在一個文檔中只能有一個隱式聲明的命名空間

 2、Schema中的命名空間:

  (1)Schema中的全局成分

    全局成分指的是元素xsd:schema的直接子節(jié)點,包括元素聲明、屬性聲明、復雜/簡單類型定義、組定義、屬性組定義

<span style="font-family: SimSun; font-size: 14px;"><?xml version=”1.0”>
<xsd:schema xmlns:xsd=”http://www.php.cn/”
targetNamespace=“http://www.php.cn/“>
   // Schema的目標名稱空間用屬性targetNamespace在根元素上定義。
   //Schema的全局成分被放在名稱空間http://www.php.cn/里。
</span>

 (2)Schema中的非全局成分     有時希望將非全局成分定義在目標空間中去,可使用下面方法。

<span style="font-family: SimSun; font-size: 14px;"><?xml version=”1.0”>
<xsd:schema xmlns:xsd=”http://www.php.cn/”
targetNamespace=“http://www.php.cn/“
elementFormDefault=“qualified“></span>

 屬性elementFormDefault的默認值是unqualified,也就是規(guī)定了只有全局成分才被定義在目標名稱空間中。將elementFormDefault的值賦為qualified,使得目標名稱空間包含非全局的元素定義。同樣,使屬性attributeFormDefault的值賦為qualified,可使得目標名稱空間包含非全局屬性定義。如下:

<span style="font-family: SimSun; font-size: 14px;"><?xml version=”1.0”>
<xsd:schema xmlns:xsd=”http://www.php.cn/”
targetNamespace=“http://www.php.cn/“
attributeFormDefault=“qualified“></span>

 也可以修改屬性form的值,使得某些非全局成分不包含在名稱空間中。如下:

<xsd:element name=”name” type=”xsd:string” form=”unqualified”/>

  (3)targetNamespace

    xsd文件中定義了一個targetNameSpace后,其內(nèi)部定義的元素,屬性,類型等都屬于該targetNameSpace,其自身或外部xsd文件使用這些元素,屬性等都必須從定義的targetNameSpace中找。

    targetNamespace定義了Schema定義的新元素與屬性的名稱空間。而"http://www.php.cn/"名稱空間則定義了element, attribute, complexType, group, simpleType等元素。

    若自身并不使用重用組件,僅供外部使用的話,則只定義targetNameSpace就可以,不用指定別名。    

  3、XML文檔中命名空間

     在XML中,名稱空間的使用涉及范疇的概念,范疇即名稱空間的覆蓋范圍,它指的是哪些元素和屬性在該名稱空間中,哪些不在該名稱空間中。名稱空間既可以限定整個XML文檔,也可以只針對XML文檔中的一部分。

  (1).名稱空間限定整個XML文檔

<span style="font-family: SimSun; font-size: 14px;"><?xml version=”1.0”?>
<member_details xmlns=”http://www.php.cn/”>
   <name>Tom</name>
   <age>12</age>
   <sex>male</sex>
</member_details></span>

  (2)名稱空間只針對XML文檔中的一部分

<span style="font-family: SimSun; font-size: 14px;"><?xml version=”1.0”?>
<member_details>
   <name xmlns=”http://www.php.cn/”>Tom</name>
   <age>12</age>
   <sex>male</sex>
</member_details></span>

(3)嵌套的命名空間

<span style="font-family: SimSun; font-size: 14px;"><?xml version=”1.0”?>
<member_details xmlns=”http://www.php.cn/”
xmlns:newns=”http://www.php.cn/”>
   <name>Tom</name>
   <age>12</age>
   <newns:sex>male</sex>
</member_details>
//<span style="line-height: 26px;">&nbsp;此例中,除了元素sex被定義在新的名稱空間中外,其余的元素仍然使用原來的名稱空間。</span></span>

(4)schemaLocation

   schemaLocation 屬性引用具有目標名稱空間的 XML 架構文檔(.xsd)。該xml文件中用到的所有新創(chuàng)的元素、屬性等的.xsd文件都必須在這里聲明。
<xsi:schemaLocation="list of anyURI" >

   其中的anyURI是一個架構位置,該架構包含限定的(具有名稱空間的架構)架構構造。每一對中的第一個 URI 引用是名稱空間名稱,第二個則是描述名稱空間的架構的位置。

將具有目標名稱空間的架構文檔與實例文檔相關聯(lián)。可以列出多對 URI 引用,每一對都有不同的名稱空間名稱部分。
   根據(jù)萬維網(wǎng)聯(lián)合會 (W3C) XML 架構建議,XML 實例文檔可以同時指定 xsi:schemaLocation 和 xsi:noNamespaceSchemaLocation 屬性。此外,還可以多次列出同一個命名空間。

   以下示例顯示如何使用 xsi:schemaLocation 屬性為多個 XML 架構文檔提供位置信息。

<span style="font-family: SimSun; font-size: 14px;"><p:Person
   xmlns:p="http://contoso.com/People"
   xmlns:v="http://contoso.com /Vehicles"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation=
     "http://contoso.com/People
      http://www.php.cn/
      http://www.php.cn/
      http://www.php.cn/
      http://www.php.cn/
      http://www.php.cn/">
   <name>John</name>
   <age>28</age>
   <height>59</height>
   ....
</p:Person></span>


     通過上邊的分析,我們可以看到,XML和Schema的命名空間標簽使用格式是相同的(這也是Schema相對與DTD的優(yōu)勢),但XML和Schema都有各自的獨特的屬性,這也是由他們不同的功能決定的,Schema主要給XML提供服務,所以會規(guī)定好targetNameSpace來聲明命名空間的名字,而XML需要使用schema的服務,所以需要SchemaLocation來聲明使用的命名空間。

上文把XML和Schema的命名空間的一些相關內(nèi)容進行了詳細介紹,下面通過例子來具體了解:

   例一:重點理解名稱空間的相關概念。

   下面的例子是一個XML Schema文件,名為"note.xsd"

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified">
<xsd:element name="note">
      <xsd:complexType>
         <xsd:sequence>
           <xsd:element name="to" type="xs:string"/>
           <xsd:element name="from" type="xs:string"/>
           <xsd:element name="heading" type="xs:string"/>
           <xsd:element name="body" type="xs:string"/>
        </xsd:sequence>
      </xsd:complexType>
</xsd:element>
</xsd:schema>
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified">
<xsd:element name="note">
      <xsd:complexType>
         <xsd:sequence>
           <xsd:element name="to" type="xs:string"/>
           <xsd:element name="from" type="xs:string"/>
           <xsd:element name="heading" type="xs:string"/>
           <xsd:element name="body" type="xs:string"/>
        </xsd:sequence>
      </xsd:complexType>
</xsd:element>
</xsd:schema>


       下面的XML文檔和上文給出的XML Schema相關聯(lián),名為"note.xml"。并且下文的討論將圍繞這兩個文檔展開。

 <?xml version="1.0"?>
<note xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3schools.com note.xsd">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<?xml version="1.0"?>
<note xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3schools.com note.xsd">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>


           此片段:xmlns:xsd="http://www.php.cn/",表明此schema中使用的元素和數(shù)據(jù)類型來自于"http://www.php.cn/"名稱空間(namespace)。它同樣指出來自于"http://www.php.cn/"名稱空間的元素和數(shù)據(jù)類型必須使用帶"xsd: "前綴。作為名稱空間的標識符(在聲明中作為元素或屬性的前綴),你也可以不使用xsd或xsi。這個 xmlns屬性包含了基本的XML schema元素,比如element, attribute, complexType, group, simpleType等。

    對于任何一個XML Schema定義文檔(XSD)都有一個最頂層的schema (XSD)元素。而且該schema (XSD)元素定義必須包含這個名稱空間:http://www.php.cn/。即此名稱空間是由XML模式規(guī)范定義的標準名稱空間-所有XML模式元素必須屬于該名稱空間。
    此片段:targetNamespace="http://www.php.cn/",表明此schema (note, to, from, heading, body)定義的元素來自于"http://www.php.cn/"名稱空間。這個targetNamespace屬性表示了該schema所對應的名稱空間的URI。也就是說在引用該Schema的其它文檔(包括自身文檔)中要聲明名稱空間,其URI應該是targetNamespace的屬性值。例如在這里因為要用到note.xsd自己定義的擴展數(shù)據(jù)類型(note, to, from, heading, body),所以也聲明了名稱空間xmlns="http://www.php.cn/"。而且該名稱空間是默認名稱空間(沒有前綴)。targetNamespace屬性為在模式中顯式創(chuàng)建的所有新類型均聲明了XML名稱空間。

我們再來看由該schema規(guī)定的XML文檔note.xml的開頭將是什么樣子:

 <note xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3schools.com note.xsd">
<note xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3schools.com note.xsd">

    其中缺省名稱空間聲明xmlns="http://www.php.cn/"就是和剛剛聲明的XML Schema的名稱空間相結合來規(guī)定該XML文檔。(即該文檔用到了此名稱空間中定義的數(shù)據(jù)) xmlns:xsi="http://www.php.cn/" 是任何XML實例文檔固有的XML模式實例名稱空間,它由XML模式規(guī)范定義。而xsi:schemaLocation="http://www.php.cn/.com note.xsd"則規(guī)定了該名稱空間所對應的schema的位置,即在相同路徑的note.xsd文件。

    例二:重點理解Schema文檔使用自身定義類型

   xsd文件中定義了一個targetNameSpace后,其內(nèi)部定義的元素,屬性,類型等都屬于該targetNameSpace,其自身或外部xsd文件使用這些元素,屬性等都必須從定義的targetNameSpace中找。修改一下note.xsd,去除默認名稱空間的聲明,并添加一個復雜類型:

 <?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
elementFormDefault="qualified">
<xsd:element name="note">
      <xsd:complexType>
        <xsd:sequence>
       <xsd:element name="to" type="xs:string"/>
       <xsd:element name="from" type="xs:string"/>
<xsd:element name="heading" type="xs:string"/>
       <xsd:element name="body" type="xs:string"/>
       </xsd:sequence>
      </xsd:complexType>
</xsd:element>
<xsd:element name="Student" type="stu"/>
  <xsd:complexType name="stu">
  <xsd:sequence>
   <xsd:element name="Name" type="xs:string"/>
   <xsd:element name="Class" type="xs:string"/>
  </xsd:sequence>
 </xsd:complexType>
</xsd:schema>

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
elementFormDefault="qualified">
<xsd:element name="note">
      <xsd:complexType>
        <xsd:sequence>
       <xsd:element name="to" type="xs:string"/>
       <xsd:element name="from" type="xs:string"/>
<xsd:element name="heading" type="xs:string"/>
       <xsd:element name="body" type="xs:string"/>
       </xsd:sequence>
      </xsd:complexType>
</xsd:element>
<xsd:element name="Student" type="stu"/> 
  <xsd:complexType name="stu"> 
  <xsd:sequence> 
   <xsd:element name="Name" type="xs:string"/> 
   <xsd:element name="Class" type="xs:string"/> 
  </xsd:sequence> 
 </xsd:complexType> 
</xsd:schema>


      上述代碼中,復雜類型stu是找不到的,因為你定義了一個名稱空間"http://www.php.cn/",該復雜類型存在于"http://www.php.cn/"中,因此應該修改代碼如下:

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns:student="http://www.w3schools.com"
elementFormDefault="qualified">
<xsd:element name="note">
      <xsd:complexType>
        <xsd:sequence>
       <xsd:element name="to" type="xs:string"/>
       <xsd:element name="from" type="xs:string"/>
<xsd:element name="heading" type="xs:string"/>
       <xsd:element name="body" type="xs:string"/>
       </xsd:sequence>
      </xsd:complexType>
</xsd:element>
<xsd:element name="Student" type="student:stu"/>
  <xsd:complexType name="stu">
  <xsd:sequence>
   <xsd:element name="Name" type="xs:string"/>
   <xsd:element name="Class" type="xs:string"/>
  </xsd:sequence>
 </xsd:complexType>
</xsd:schema>

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns:student="http://www.w3schools.com"
elementFormDefault="qualified">
<xsd:element name="note">
      <xsd:complexType>
        <xsd:sequence>
       <xsd:element name="to" type="xs:string"/>
       <xsd:element name="from" type="xs:string"/>
<xsd:element name="heading" type="xs:string"/>
       <xsd:element name="body" type="xs:string"/>
       </xsd:sequence>
      </xsd:complexType>
</xsd:element>
<xsd:element name="Student" type="student:stu"/> 
  <xsd:complexType name="stu"> 
  <xsd:sequence> 
   <xsd:element name="Name" type="xs:string"/> 
   <xsd:element name="Class" type="xs:string"/> 
  </xsd:sequence> 
 </xsd:complexType> 
</xsd:schema>


       若自身并不使用重用組件,僅供外部使用的話,則只定義targetNameSpace就可以,不用指定別名。
       通過上面的例子,我們可以很深刻的理解targetNameSpace。targetNamespace定義了Schema定義的新元素與屬性的名稱空間。而"http://www.php.cn/"名稱空間則定義了element, attribute, complexType, group, simpleType等元素。

  理解了上面的兩個例子,Schema的命名空間的內(nèi)容應該就明了了。

以上就是XML中的schema是什么,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學到更多知識。更多詳情敬請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)頁題目:XML中的schema是什么-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://vcdvsql.cn/article6/cscdig.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名營銷型網(wǎng)站建設云服務器面包屑導航虛擬主機網(wǎng)站設計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)