XML文件的定義結構,任何一個文件的定義都是要遵循一個規范和約束的
XML的約束模式有兩種:DTD/Schema
DTD存在一些缺陷(Document Type Definition,文檔類型定義而XML Schema是按標准XML規則編寫的,更容易掌握):
1.它用不同於XML的語言編寫,需要不同的分析器技術。這增加了工具開發商的負擔,降低了軟件瘦身的可能性,此外開發人員需要多學一門語言及其語法。
2.DTD不支持名稱空間。隨着大部分的數據處理日益以XML為中心,信息的相互聯系變得日益普及與深入,名稱空間作用也將凸現。
4.DTD在支持繼承和子類方面的局限性。由於面向對象技術的出現,對繼承和子類的支持已成為軟件技術領域的主流概念。
5.DTD沒有數據類型的概念,無法對特定元素施加數據類型,對強制性結構化無計可施,例如,如何規定名為Date的數據必須包含有效值。
XML特點:
XML 標簽對大小寫敏感
XML 元素都須有關閉標簽
XML 必須正確地嵌套
XML 文檔必須有根元素(必須有一個元素是所有其他元素的父元素)
XML 的屬性值須加引號
實體引用
在 XML 中,一些字符擁有特殊的意義。比如: "<" 解析器會把它當作新元素的開始。用實體引用來代替 "<" 字符:
在 XML 中,有 5 個預定義的實體引用:
XML 中的注釋
在 XML 中編寫注釋的語法與 HTML 的語法很相似:
<!-- This is a comment -->
在 XML 中,空格會被保留
HTML 會把多個連續的空格字符裁減(合並)為一個:
XML 以 LF 存儲換行
在 Windows 應用程序中,換行通常以一對字符來存儲:回車符 (CR) 和換行符 (LF)。
在 Unix 應用程序中,新行以 LF 字符存儲。
而 Macintosh 應用程序使用 CR 來存儲新行。
XML 命名規則
名稱可以含字母、數字以及其他的字符
名稱不能以數字或者標點符號開始
名稱不能以字符 “xml”(或者 XML、Xml)開始
名稱不能包含空格
可使用任何名稱,沒有保留的字詞。
XML文檔需要遵守前面的基本 XML 語法規則還可以用DTD嚴格的定義。
XML 文檔必須有根元素
XML 文檔必須有關閉標簽
XML 標簽對大小寫敏感
XML 元素必須被正確的嵌套
XML 屬性必須加引號
使用DTD定義xml(通過 DTD 驗證的 XML 是“合法”的 XML)
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE note SYSTEM "Note.dtd"> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>
在上例中,DOCTYPE 聲明是對外部 DTD 文件的引用。
DTD 的作用是定義 XML 文檔的結構:
<!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]>
DTD 可被成行地聲明於 XML 文檔中,也可作為一個外部引用。
內部的 DOCTYPE 聲明
假如 DTD 被包含XML 中,應當包裝在一個 DOCTYPE 聲明中:
<!DOCTYPE 根元素 [元素聲明]>
帶有 DTD 的 XML 文檔實例:
<?xml version="1.0"?> <!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>
DTD 解釋如下:
!DOCTYPE note (第二行)定義此文檔是 note 類型的文檔。
!ELEMENT note (第三行)定義 note 元素有四個元素:"to、from、heading,、body"
!ELEMENT to (第四行)定義 to 元素為 "#PCDATA" 類型
!ELEMENT from (第五行)定義 from 元素為 "#PCDATA" 類型
!ELEMENT heading (第六行)定義 heading 元素為 "#PCDATA" 類型
!ELEMENT body (第七行)定義 body 元素為 "#PCDATA" 類型
外部文檔聲明
假如 DTD 位於 XML 源文件的外部,那么它應通過下面的語法被封裝在一個 DOCTYPE 定義中:
<!DOCTYPE 根元素 SYSTEM "文件名">
XML擁有一個外部的 DTD:
<?xml version="1.0"?> <!DOCTYPE note SYSTEM "note.dtd"> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>
DTD 的 "note.dtd" 文件:
<!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>
DTD作用:
1.通過 DTD,每一個 XML 文件均可攜帶一個有關其自身格式的描述。
2.可一致地使用某個標准的 DTD 來交換數據。
3.應用程序也可使用某個標准的 DTD 來驗證從外部接收到的數據。
4.使用 DTD 來驗證您自身的數據。
XML 文檔(以及 HTML 文檔)均由以下構建模塊構成:
- 元素
- 屬性
- 實體
- PCDATA
- CDATA
元素
HTML 元素的例子是 "body" 和 "table"。
XML 元素的例子是 "note" 和 "message" 。
元素可包含文本、其他元素或者是空的。
空的 HTML 元素的例子是 "hr"、"br" 以及 "img"。
實例:
<body>body text in between</body> <message>some message in between</message>
屬性
屬性可提供有關元素的額外信息。
<img src="computer.gif" />
元素的名稱是 "img"。屬性的名稱是 "src"。屬性的值是 "computer.gif"。由於元素本身為空,它被一個 " /" 關閉。
實體
實體引用是對實體的引用。(用一些特殊字符串來代替一些符號)
PCDATA
PCDATA 的意思是被解析的字符數據(parsed character data)。 可把字符數據想象為 XML 元素的開始標簽與結束標簽之間的文本。
PCDATA 是會被解析器解析的文本。這些文本將被解析器檢查實體以及標記。 文本中的標簽會被當作標記來處理,而實體會被展開。不過,被解析的字符數據不應當包含任何 &、< 或者 > 字符;需要使用 &、< 以及 > 實體來分別替換它們。
XML 解析器通常會解析 XML 文檔中所有的文本。 當某個 XML 元素被解析時,其標簽之間的文本也會被解析:
<message>此文本也會被解析</message>
解析器之所以這么做是因為 XML 元素可包含其他元素,就像這個例子中,其中的 <name> 元素包含着另外的兩個元素(first 和 last): <name><first>Bill</first><last>Gates</last></name>
而解析器會把它分解為像這樣的子元素: <name> <first>Bill</first> <last>Gates</last> </name>
CDATA
CDATA 的意思是字符數據(character data)。意味着當作字符串處理。
CDATA 是不會被解析器解析的文本。在這些文本中的標簽不會被當作標記來對待,其中的實體也不會被展開。
某些文本,比如 JavaScript 代碼,包含大量 "<" 或 "&" 字符。為了避免錯誤,可以將腳本代碼定義為 CDATA。 CDATA 部分中的所有內容都會被解析器忽略。 CDATA 部分由 "<![CDATA[" 開始,由 "]]>" 結束: <script> <![CDATA[ function matchwo(a,b) { if (a < b && a < 0) then { return 1; } else { return 0; } } ]]> </script> 在上面的例子中,解析器會忽略 CDATA 部分中的所有內容。
詳情:http://www.w3school.com.cn/dtd/dtd_elements.asp
PCDATA和CDATA的區別是:前者可能需要解析里面標簽,后者不解析直接當作字符文本了。
Schema (概要/結構/模式/架構)
基於 XML 的 DTD 替代者。
描述 XML 文檔的結構。
XML Schema 語言也稱作 XML Schema 定義(XML Schema Definition,XSD)
定義可出現在文檔中的元素
定義可出現在文檔中的屬性
定義哪個元素是子元素
定義子元素的次序
定義子元素的數目
定義元素是否為空,或者是否可包含文本
定義元素和屬性的數據類型
定義元素和屬性的默認值以及固定值
Schema 相比 DTD 的優勢:
XML Schema 可針對未來的需求進行擴展
XML Schema 更完善,功能更強大
XML Schema 基於 XML 編寫
XML Schema 支持數據類型
XML Schema 支持命名空間
一個簡單的 XML 文檔:
<?xml version="1.0"?> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>
用DTD 文件定義xml:
<!ELEMENT note (to, from, heading, body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>
第 1 行定義 note 元素有四個子元素:"to, from, heading, body"。
第 2-5 行定義了 to, from, heading, body 元素的類型是 "#PCDATA"。
用XML Schema定義xml:
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3school.com.cn" xmlns="http://www.w3school.com.cn" elementFormDefault="qualified"> <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
note 元素是一個復合類型,因為它包含其他的子元素。其他元素 (to, from, heading, body) 是簡易類型,因為它們沒有包含其他元素。
xml對 DTD 的引用:
<?xml version="1.0"?> <!DOCTYPE note SYSTEM "http://www.w3school.com.cn/dtd/note.dtd"> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>
xml對 XML Schema 的引用:
<?xml version="1.0"?> <note xmlns="http://www.w3school.com.cn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3school.com.cn note.xsd"> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>
補充:命名空間:
<d:student xmlns:d=”http://www.develop.com/student;
其中student 是命名空間的標簽。http://www.develop.com是命名空間的標識。d是命名空間的前綴。
命名空間標簽:
由於命名空間采取元素/屬性的定義方式,所以需要一個標簽。
命名空間標識:
實際當輸出一個命名空間時就直接轉換為這個標識。標識規范的稱呼:URI(統一資源定位符)。
URI的最大特點是唯一性。如果不唯一就失去了辨識的意義。
實際上相同URI不同的命名空間名稱(即前綴)被看成同一個命名空間。
命名空間的地址不會被解析器用於查找信息。作用是賦予命名空間一個惟一的名稱。
不過,常常會使用命名空間指向實際存在的網頁,這個網頁包含關於命名空間的信息。
URI分為兩種類型:
URL(統一資源定位器): 通俗的說URL就是網頁地址。因為每個網頁在internat上都是唯一的。 URN(統一資源名稱): 可以不使用網頁地址而使用唯一名稱來定義。如: urn:2007-12-9/workgrop/xin/projiectname urn:E7f73B13-05FE-44ec-81CE-F898C4A6CDB4 這個編號是在系統中注冊的控件編號,因此是唯一的。
前綴(其實就是命名空間的簡稱):
前綴用於在XML中作為URI的簡化引用。因為URI太長了。
<d:student xmlns:d="http://www.develop.com/student">
<d:id>3235329</d:id>
<d:name>Jeff Smith</d:name>
</d:student>
前綴的定義固定格式是:xmlns:開頭。(個人覺得xmlns也可以看成是xml固有的一種空間前綴,命名空間具有繼承能力)
命名空間其他一些特定:
1.命名空間不一點要定義在根節點 2.命名空間還可以嵌套或者被重定義。 3.一個xml文件中可以擁有多個命名空間。
默認命名空間(即沒有前綴):xmlns=namespace
2.schemal命名空間:
個人理解:
schemal中的命名空間意義:
xmlns:xsd:數據類型
xmlns:xsi:元素名稱
上面兩個是schemal的基本規則
目標命名空間:表示這個schemal個人所定義的規則(主要是一些為限定xml新元素/屬性)是在這個命名空間中。(或者說這個schemal定義的規則就是這個命名空間,以用於引用)
2.1 常用命名空間
schema元素引用了三個最常使用的命名空間:
xmlns="http://www.w3c.org/2001/XMLSchema"(默認命名空間,元素沒有前綴就是屬於默認命名空間) xmlns:xsd="http://www.w3c.org/2001/XMLSchema-datatypes"(xsd是XML Schema datatypes的意思) xmlns:xsi="http://www.w3c.org/2001/XMLSchema-instances"(xsi是XML Schema Instances的意思) 第二和第三個屬性用XML命名空間來標識W3C中的兩個XML schema規范。
第二個xmlns屬性定義了標准的XML schema屬性類型例如string, float, integer等。
第三個 xmlns屬性包含基本的XML schema元素,如element, attribute, complexType, group,simpleType等。
schemal最常用的應該還有一個”xmlns:xs=“命名空間。
2.2 默認命名空間(default namespaces)
每一個Schema可以有且只有一個默認命名空間如:
xmlns="http://www.w3.org/2001/XMLSchema" 或
xmlns=”http://www.w3school.com.cn”
如果文檔中的元素沒有前綴的,就是屬於默認命名空間。但文檔中還可以有其他命名空間的元素標簽比如"xmlns:xs="
2.3 <schema>元素
是每一個XML Schema 的根元素。對於任何一個XML Schema定義文檔(XSD)都有一個最頂層的schema 元素。
而且該schema (XSD)元素定義必須包含標准命名空間(<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema")作為命名空間的標識符,可以不使用xsd或xsi。
<?xml version="1.0"?> <xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3school.com.cn" xmlns="http://www.w3school.com.cn" elementFormDefault="qualified"> ... </xs:schema>
2.4.elementFormDefault屬性:
詳解:1 ;2
1、在xml中,所有引用xsd的全局的元素都必須加上命名空間的前綴(例如<aa:根元素 xmlns:aa=http://www.example.org/classroom,全局元素都得加上aa)。 2、非全局的元素當設置為qualified時,必須添加命名空間的前綴。(子元素都要有命名空間的前綴) 3、非全局的元素當設置為unqualified時,不必也不能添加前綴。(子元素不能有前綴)
2.5.目標命名空間(target namespace)
即該schemal(xsd)的地址,xml引用該schemal需要該地址
每一個Schema有且只有一個目標命名空間。 Xml Schema定義文檔中一系列元素名稱,類型名稱,屬性名稱和屬性組名稱等的有效作用范圍都在這個目標名字空間(target namespace)
1.Xsd指定目標命名空間 Xsd文件node.xsd: <xs:schema xmlns:xs=”http://www.w3.org/2001/XMLSchema” targetNamespace=”http://www.w3school.com.cn” xmlns=”http://www.w3school.com.cn” elementFormDefault="qualified"> xml引用 <note xmlns=”http://www.w3school.com.cn”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation="http://www.w3school.com.cn note.xsd"> 2.Xsd沒指定目標命名空間 Xsd文件node.xsd: < schema xmlns =”http://www.w3.org/2001/XMLSchema” elementFormDefault="qualified"> xml引用 <note xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:noNamespaceSchemaLocation="note.xsd"> note.xsd與xml在同一目錄或者相對路徑目錄。 Xml引用xsd實例: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"(定義一個Schema的實例命名空間,只有作了這個定義才能使用schemaLocation屬性) xsi:schemaLocation="http://www.w3schools.com note.xsd" schemaLocation屬性了有兩個值: 第一個值是需要使用的命名空間。 第二個值是供命名空間使用的 XML schema 的位置。 schemaLocation屬性由成對的值組成,可以有多對。(因為一個XML文檔可以有多個命名空間,所以schemaLocation值可以有多對)
細說schema:
包括:定義元素(簡單元素和符合元素),定義屬性,自定義類型(可以使用正則對簡單類型做限制);
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3school.com.cn" xmlns="http://www.w3school.com.cn" elementFormDefault="qualified"> ... ... </xs:schema>
<schema> 元素是每一個 XML Schema 的根元素
<schema> 元素可包含屬性
xmlns:xs="http://www.w3.org/2001/XMLSchema"
schema 中用到的元素和數據類型來自命名空間 "http://www.w3.org/2001/XMLSchema"。同時它還規定了元素和數據類型應該使用前綴 xs:
targetNamespace="http://www.w3school.com.cn"
schema 定義的元素 (note, to, from, heading, body) 來自命名空間: "http://www.w3school.com.cn"。
xmlns="http://www.w3school.com.cn"
指出默認的命名空間是 "http://www.w3school.com.cn"。
elementFormDefault="qualified"
指出任何 XML 實例文檔所使用的且在此 schema 中聲明過的元素必須被命名空間限定。
xml
<?xml version="1.0"?> <note xmlns="http://www.w3school.com.cn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3school.com.cn note.xsd"> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>
xmlns="http://www.w3school.com.cn"
規定了默認命名空間的聲明。使用的所有元素都被聲明於 "http://www.w3school.com.cn" 這個命名空間。
(命名空間,類似包名,因為xml的標簽可自定義,需要命名空間來區分)
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
擁有了可用的 XML Schema 實例命名空間:
(這個命名空間里面的元素或者屬性就必須要以xsi:這種方式來寫,比如schemaLocation就是他的一個屬性,所以寫成xsi:schemaLocation)
xsi:schemaLocation="http://www.w3school.com.cn note.xsd"
可以使用 schemaLocation 屬性了。此屬性有兩個值。第一個值是需要使用的命名空間。第二個值是供命名空間使用的 XML schema 的位置:
"shiporder.xsd" 的 schema 文件的文檔清單:
<?xml version="1.0" encoding="ISO-8859-1" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="shiporder"> <xs:complexType> <xs:sequence> <xs:element name="orderperson" type="xs:string"/> <xs:element name="shipto"> <xs:complexType> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="address" type="xs:string"/> <xs:element name="city" type="xs:string"/> <xs:element name="country" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="item" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="title" type="xs:string"/> <xs:element name="note" type="xs:string" minOccurs="0"/> <xs:element name="quantity" type="xs:positiveInteger"/> <xs:element name="price" type="xs:decimal"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="orderid" type="xs:string" use="required"/> </xs:complexType> </xs:element> </xs:schema>
xs:complexType 可以包含其他的元素,認定為復合類型
xs:sequence 包含的元素是有序的
xs:string是命名空間的前綴規定的簡易類型
maxOccurs 和 minOccurs 屬性來定義某個元素可能出現的次數。
maxOccurs 定義某元素出現次數的最大值,而 minOccurs 則定義某元素出現次數的最小值。maxOccurs 和 minOccurs 的默認值都是 1!
"item" 元素的 maxOccurs 屬性的值設定為 "unbounded" ,意思元素就可出現任意多次。
"note" 元素的 minOccurs 屬性設定為 0 ,意思是可選元素
<xs:attribute name="orderid" type="xs:string" use="required"/>
use="required"意思這是一個必選屬性,此屬性的聲明必須被置於最后:
分割 Schema(分開定義可重復調用)
上面的文檔很復雜時卻難以閱讀和維護。
新方法設計的 schema 文件:首先對所有元素和屬性的定義,然后再使用 ref 屬性來引用它們。
<?xml version="1.0" encoding="ISO-8859-1" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <!-- 簡易元素的定義 --> <xs:element name="orderperson" type="xs:string"/> <xs:element name="name" type="xs:string"/> <xs:element name="address" type="xs:string"/> <xs:element name="city" type="xs:string"/> <xs:element name="country" type="xs:string"/> <xs:element name="title" type="xs:string"/> <xs:element name="note" type="xs:string"/> <xs:element name="quantity" type="xs:positiveInteger"/> <xs:element name="price" type="xs:decimal"/> <!-- 屬性的定義 --> <xs:attribute name="orderid" type="xs:string"/> <!-- 復合元素的定義 --> <xs:element name="shipto"> <xs:complexType> <xs:sequence> <xs:element ref="name"/> <xs:element ref="address"/> <xs:element ref="city"/> <xs:element ref="country"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="item"> <xs:complexType> <xs:sequence> <xs:element ref="title"/> <xs:element ref="note" minOccurs="0"/> <xs:element ref="quantity"/> <xs:element ref="price"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="shiporder"> <xs:complexType> <xs:sequence> <xs:element ref="orderperson"/> <xs:element ref="shipto"/> <xs:element ref="item" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute ref="orderid" use="required"/> </xs:complexType> </xs:element> </xs:schema>
自定義類型:使用指定的類型(Named Types)
首先對簡易元素和復合元素進行命名,然后通過元素的 type 屬性來指向它們。
<?xml version="1.0" encoding="ISO-8859-1" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:simpleType name="stringtype"> <xs:restriction base="xs:string"/> </xs:simpleType> <xs:simpleType name="inttype"> <xs:restriction base="xs:positiveInteger"/> </xs:simpleType> <xs:simpleType name="dectype"> <xs:restriction base="xs:decimal"/> </xs:simpleType> <xs:simpleType name="orderidtype"> <xs:restriction base="xs:string"> <xs:pattern value="[0-9]{6}"/> </xs:restriction> </xs:simpleType> <xs:complexType name="shiptotype"> <xs:sequence> <xs:element name="name" type="stringtype"/> <xs:element name="address" type="stringtype"/> <xs:element name="city" type="stringtype"/> <xs:element name="country" type="stringtype"/> </xs:sequence> </xs:complexType> <xs:complexType name="itemtype"> <xs:sequence> <xs:element name="title" type="stringtype"/> <xs:element name="note" type="stringtype" minOccurs="0"/> <xs:element name="quantity" type="inttype"/> <xs:element name="price" type="dectype"/> </xs:sequence> </xs:complexType> <xs:complexType name="shipordertype"> <xs:sequence> <xs:element name="orderperson" type="stringtype"/> <xs:element name="shipto" type="shiptotype"/> <xs:element name="item" maxOccurs="unbounded" type="itemtype"/> </xs:sequence> <xs:attribute name="orderid" type="orderidtype" use="required"/> </xs:complexType> <xs:element name="shiporder" type="shipordertype"/> </xs:schema>
restriction 元素常被用於向元素施加限制。
<xs:simpleType name="orderidtype"> <xs:restriction base="xs:string"> <xs:pattern value="[0-9]{6}"/> </xs:restriction> </xs:simpleType>
restriction 元素顯示出數據類型源自於 W3C XML Schema 命名空間的數據類型。
上面的元素或屬性的值必須為字符串,並且必須是連續的六個字符,同時這些字符必須是 0-9 的數字。
http://www.w3school.com.cn/schema/index.asp