定義XSD檔案

2021-08-25 13:12:51 字數 3529 閱讀 7061

xml schema的用途

1.  定義乙個 xml 文件中都有什麼元素

2.  定義乙個 xml 文件中都會有什麼屬性

3.  定義某個節點的都有什麼樣的子節點,可以有多少個子節點,子節點出現的順序

4.  定義元素或者屬性的資料型別

5.  定義元素或者屬性的預設值或者固定值

xml schema的根元素:

<?xml version="1.0"?>

表示資料型別等定義來自 w3

targetnamespace="" 表示文件中要定義的元素來自什麼命名空間

xmlns="" 表示此文件的預設命名空間是什麼

elementformdefault="qualified"> 表示要求 xml

文件的每乙個元素都要有命名空間指定

……定義主體部分……

如何定義乙個簡單元素

此處表示要定義乙個元素

name=」color」 表示要定義元素的名稱

type=」xs:string」  表示要定義元素的資料型別

default=」red」 表示定義元素的預設值

fixed=」red」/> 表示要定義元素的固定值,此元素只可以取「 red

」值 以上定義了乙個簡單元素,元素例項: red

如何定義乙個屬性

name=」birthday」 表示要定義屬性的名字

type=」xs:date」 表示要定義屬性的資料型別

default=」2001-01-11」 表示要定義屬性的預設值

fixed=」2001-01-11」 表示要定義屬性的固定值

use=」required」/> 表示此屬性是否是必須指定的,即如果不指定就不符合 schema

,預設沒有 use=」required」

屬性表示屬性可有可無

如何定義元素或者屬性值的限制

1 .最大值最小值限制

大於等於 0

, 表示最小值但是不包括指定值

小於等於 120

2 .列舉限制,指只能在指定的幾個值中取值

3 .模式( pattern )限制 ,指字串的格式必須滿足制定的匹配模式

例子 說明

表示只能在小寫字母中取乙個值

表示必須是三個大寫字母

表示必須是三個字母,可以是大寫或小寫的

表示必須是 xyz 中的乙個

表示數字的範圍是 0-99999

表示必須是 0 或者多個小寫字元組成的序列

表示必須是多個字母。

表示是 male 或者 female 中的乙個

表示必須是 8 個字母數字字元

4 .字串長度的限制

長度必須是 8 。

表示長度在 5-8 之間

6. 對於空白字元的限制

示例 說明

保留原樣,表示 xml 處理器不會移除或者替換任何空白字元

指回車,換行, tab 都會被替換成空格處理

去掉多於乙個空格,和 html 中處理方式相同

如何定義複雜型別

複雜型別是指定義元素中包含屬性或者子元素的型別

1. 定義只包含子元素的複雜型別

2. 定義只包含屬性的複雜型別

3. 定義只包含內容的複雜型別

4. 定義包含內容和子元素混合的複雜型別

以上定義對應的 xml

dear mr.john smith.

your order 1032

will be shipped on 2001-07-13.

5. 定義包含屬性和子元素的複雜型別

使用指示器

在 xsd 中的指示器包括

1. 順序指示器

1)all

2)choice

指示子元素中可以出現乙個或者另乙個

3)sequence

指示子元素必須按照順序出現

2. 出現次數指示器 minoccurs , maxoccurs

maxoccurs="10" minoccurs="0"/>

3. 組指示器( group indicators )

用來定義相關的一組元素

用來定義一組相關的屬性

any關鍵字

表示可以有任意元素

anyattribute關鍵字

substitutiongroup關鍵字

表示某乙個元素和另乙個替代元素定義相同

如何定義Xsd檔案

原文出自http www.cnblogs.com yukaizhao archive 2007 03 25 xsd tutorial.html xml schema 的用途 1 定義乙個 xml文件中都有什麼元素 2 定義乙個 xml文件中都會有什麼屬性 3 定義某個節點的都有什麼樣的子節點,可以有...

如何定義Xsd檔案

xml schema 的用途 1 定義乙個xml 文件中都有什麼元素 2 定義乙個xml 文件中都會有什麼屬性 3 定義某個節點的都有什麼樣的子節點,可以有多少個子節點,子節點出現的順序 4 定義元素或者屬性的資料型別 5 定義元素或者屬性的預設值或者固定值 xml schema 的根元素 表示資料...

xsd檔案合併

在用sdo的 helpercontext載入xsd時,發現同樣的namespace,它只載入一次 應該算bug吧?也就是說如果有相同的namespace的話,第二次載入的xsd裡的型別將找不到,現在解決的方式是合併所有的namespace相同的xsd,成為乙個新的xsd,然後讓helperconte...