DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> XML簡明教程(6)什麼是XML Schema
XML簡明教程(6)什麼是XML Schema
編輯:XML詳解     

XML Schema是一個基於XML的語法或schema規范,用來定義XML文檔的標記方式。XML Sc hema是一個由Microsoft建議的schema規范,它與文檔類型定義(DTD)相比具有很大的優勢,而DTD是最初用來定義XML模型的schema規范。DTD存在很多缺點,包括使用非XML 語法,不支持數據類型定義,不具有擴展性等。例如,DTD不允許把元素內容定義為另外 一個元素,或字符串。想了解更多有關DTD的內容,可以參考W3C XML建議書。 XML Schema從幾個方面改善了DTD,包括使用XML語法,支持數據類型定義和名域。例如,XML Schema允許你把一個元素說明為一個integer, float,Boolean, URL等類型。 

  在Internet Explorer 5中的XML解析器可以解析使用DTD或XML Schema的XML文檔。 

  如何建立XML Schema? 

  請在下面的XML文檔中找一找每個節點的schema聲明。 
<class xmlns="x-schema:classSchema.XML"> 
<student studentID="13429"> 
 <name>Jane Smith</name> 
 <GPA>3.8</GPA> 
 </student> 
</class>

  你會注意到在上面文檔中默認的名域是“x-schema:classSchema.xml”。這告訴解析器根據URL(“classSchema.XML”)上的schema(x-schema)來解析整個文檔。 

  下面是上面那個文檔的完整的schema。注意schema的根元素中的名域聲明。第一個(xml ns=”urn:schemas-microsoft-com:xml-data”)表明這個XML文檔是一個XML Schema。第二個(XMLns:dt=”urn:schemas-microsoft-com:datatypes”)允許schema處理者在ElementType和AttributeType聲明中的type屬性前加dt前綴來說明元素的類型和內容的特征 。 
<Schema xmlns="urn:schemas-microsoft-com:xml-data" XMLns:dt="urn:schemas-mi 
crosoft-com:datatypes"> 
 <AttributeType name='studentID' dt:type='string' required='yes'/> 
 <ElementType name='name' content='textOnly'> 
 <ElementType name='GPA' content='textOnly' dt:type='float'/> 
 <ElementType name='student' content='mixed'> 
 <attribute type='studentID'/> 
 <element type='name'/> 
 <element type='GPA'/> 
 </ElementType> 
 <ElementType name='class' content='eltOnly'> 
 <element type='student'/> 
 </ElementType> 
</Schema>


 

用來定義元素和屬性的聲明元素如下所示: 

  元  素 

  說  明 

  • ElementType 把類型和條件賦給一個元素,可以包含子元素
  • AttributeType 把類型和條件賦給一個屬性
  • attribute 聲明以前定義過的屬性類型可以出現在名為ElementType的元素的作用域中
  • element 聲明以前定義過的元素類型可以出現在名為ElementType的元素的作用域中

  Schema的內容以最深層的元素的“AttributeType”和“ElementType”聲明開頭。 <AttributeType name='studentID' dt:type='string' required='yes'/> 
<ElementType name='name' content='textOnly'> 
<ElementType name='GPA' content='textOnly' dt:type='float'/>

  ElementType聲明後接著就是它的屬性和子元素,如果一個元素有屬性或子元素,必須把 這種方法包含在它的ElementType聲明中,或者是必須在它們自己的 ElementType 或  ttributeType聲明中進行前導聲明。 
<ElementType name='student' content='mixed'> 
 <attribute type='studentID'/> 
 <element type='name'/> 
 <element type='GPA'/> 
</ElementType>


 

不同於DTDs,XML Schema允許有一個開放的內容模式,你可以進行定義數據類型、使用默認值等等操作而不必限定內容。 

  在下面的schema中,<GPA> 元素的類型被定義並有一個默認值,但在 <student> 元素中沒有其他節點被聲明。 
<Schema xmlns="urn:schemas-microsoft-com:xml-data" XMLns:dt="urn:schemas-mic 
rosoft-com:datatypes"> 
<AttributeType name="scale" default="4.0"/> 
<ElementType name="GPA" content="textOnly" dt:type="float"> 
 <attribute type="scale"/> 
</ElementType> 
<AttributeType name="studentID"/> 
<ElementType name="student" content="eltOnly" model="open" order="many"> 
 <attribute type="studentID"/> 
 <element type="GPA"/> 
</ElementType> 
</Schema>

  上面的schema允許你只驗證你所關心的區域,這使你對文檔的驗證級別有更多的控制,並允許你使用schema提供的一些特性而不必嚴格確認。  嘗試一下! 

  試著處理一下下面的XML文檔的schema。 
<order> 
<customer> 
<name>Fidelma MCGInn</name> 
<phone_number>425-655-3393</phone_number> 
</customer> 
<item> 
<number>5523918</number> 
<description>shovel</description> 
<price>39.99<price> 
</item> 
<date_of_purchase>1998-10-23</date_of_purchase> 
<date_of_delivery>1998-11-03</date_of_delivery> 
</order>

  如果你處理完schema,在XML Validator中運行 . 

  下載MSDN Online的區域中提供了一套 XML sample files, 包括一個有相關schema的XML文檔。下載這些示例程序可以與XML文檔和schema一起運行。如果你想要根據一個schema來測試XML的有效性,可以從XML Validator 處下載文檔或查看Mime Type VIEwer中的XML文件。

  一些說明: 

  ElementType和 AttributeType 聲明必須放在attribute和element內容聲明之前。例如,在上面的schema中,<GPA>元素的ElementType聲明必須放在<student>元素的ElementType聲明之前。

  order屬性的默認值是建立在content屬性的值上的。當content值為“eltOnly”時,order默認值是seq。當content值為“mixed”時,order默認值是“many”。see 如果想了解有關這些缺省值的信息,可以查看 XML Schema Reference。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved