XML Schema 字符串數據類型及約束詳解

字符串數據類型用于包含字符字符串的值。字符串數據類型可以包含字符、換行符、回車符和制表符。

以下是模式中字符串聲明的示例:

<xs:element name="customer" type="xs:string"/>

您文檔中的一個元素可能如下所示:

<customer>John Smith</customer>

或者可能是這樣的:

<customer>       John Smith     </customer>

注意:如果使用字符串數據類型,XML 處理器將不會修改值。


NormalizedString 數據類型

normalizedString 數據類型派生自 String 數據類型。

normalizedString 數據類型也包含字符,但 XML 處理器將刪除換行符、回車符和制表符。

以下是模式中 normalizedString 聲明的示例:

<xs:element name="customer" type="xs:normalizedString"/>

您文檔中的一個元素可能如下所示:

<customer>John Smith</customer>

或者可能是這樣的:

<customer>     John Smith     </customer>

注意:在上面的示例中,XML 處理器將用空格替換制表符。


Token 數據類型

token 數據類型也派生自 String 數據類型。

token 數據類型也包含字符,但 XML 處理器將刪除換行符、回車符、制表符、前導和尾隨空格,以及多個空格。

以下是模式中 token 聲明的示例:

<xs:element name="customer" type="xs:token"/>

您文檔中的一個元素可能如下所示:

<customer>John Smith</customer>

或者可能是這樣的:

<customer>     John Smith     </customer>

注意:在上面的示例中,XML 處理器將刪除制表符。

數據類型

請注意,以下所有數據類型均源自字符串數據類型(除了字符串本身)!

名稱描述
ENTITIES
ENTITY
ID表示 XML 中的 ID 屬性的字符串(僅與模式屬性一起使用)
IDREF表示 XML 中的 IDREF 屬性的字符串(僅與模式屬性一起使用)
IDREFS
language包含有效語言標識的字符串
Name包含有效 XML 名稱的字符串
NCName
NMTOKEN表示 XML 中的 NMTOKEN 屬性的字符串(僅與模式屬性一起使用)
NMTOKENS
normalizedString不包含換行符、回車或制表符的字符串
QName
string字符串
token不包含換行符、回車、制表符、前導或尾隨空格或多個空格的字符串

字符串數據類型的限制

可以與字符串數據類型一起使用的限制:

  • 枚舉
  • 長度
  • 最大長度
  • 最小長度
  • 模式(NMTOKENS、IDREFS 和 ENTITIES 不能使用此約束)
  • 空白

XSD 日期和時間數據類型

日期和時間數據類型用于包含日期和時間值。

日期數據類型

日期數據類型用于指定日期。

日期以以下形式指定:“YYYY-MM-DD”,其中:

  • YYYY 表示年份
  • MM 表示月份
  • DD 表示日期

注意:所有組件都是必需的!

以下是模式中日期聲明的示例:

<xs:element name="start" type="xs:date"/>

您文檔中的元素可能如下所示:

<start>2002-09-24</start>

時區

要指定時區,您可以通過在時間后面添加“Z”來輸入 UTC 時間的時間,如下所示:

<start>09:30:10Z</start>

或者您可以通過在時間后面添加正數或負數時間來指定 UTC 時間的偏移量,如下所示:

<start>09:30:10-06:00</start>

<start>09:30:10+06:00</start>

日期時間數據類型

日期時間數據類型用于指定日期和時間。

日期時間以以下形式指定:“YYYY-MM-DDThh:mm:ss”,其中:

  • YYYY 表示年份
  • MM 表示月份
  • DD 表示日期
  • T 表示所需時間部分的開始
  • hh 表示小時
  • mm 表示分鐘
  • ss 表示秒

注意:所有組件都是必需的!

以下是模式中日期時間聲明的示例:

<xs:element name="startdate" type="xs:dateTime"/>

您文檔中的元素可能如下所示:

<startdate>2002-05-30T09:00:00</startdate>

或者可能如下所示:

<startdate>2002-05-30T09:30:10.5</startdate>

時區

要指定時區,您可以通過在時間后面添加“Z”來輸入 UTC 時間的日期時間,如下所示:

<startdate>2002-05-30T09:30:10Z</startdate>

或者您可以通過在時間后面添加正數或負數時間來指定 UTC 時間的偏移量,如下所示:

<startdate>2002-05-30T09:30:10-06:00</startdate>

<startdate>2002-05-30T09:30:10+06:00</startdate>

持續時間數據類型

持續時間數據類型用于指定時間間隔。

時間間隔以以下形式指定:“PnYnMnDTnHnMnS”,其中:

  • P 表示周期(必需)
  • nY 表示年數
  • nM 表示月數
  • nD 表示天數
  • T 表示時間部分的開始(如果您要指定小時、分鐘或秒,則必需)
  • nH 表示小時數
  • nM 表示分鐘數
  • nS 表示秒數

以下是模式中持續時間聲明的示例:

<xs:element name="period" type="xs:duration"/>

您文檔中的元素可能如下所示:

<period>P5Y</period>

上面的示例表示五年的周期。

或者可能如下所示:

<period>P5Y2M10D</period>

上面的示例表示五年、兩個月和 10 天的周期。

或者可能如下所示:

<period>P5Y2M10DT15H</period>

上面的示例表示五年、兩個月、10 天和 15 小時的周期。

或者可能如下所示:

<period>PT15H</period>

上面的示例表示 15 小時的周期。

負持續時間

要指定負持續時間,請在 P 之前輸入減號:

<period>-P10D</period>

上面的示例表示負 10 天的周期。

日期和時間數據類型

名稱描述
date定義日期值
dateTime定義日期和時間值
duration定義時間間隔
gDay定義日期的一部分 - 日(DD)
gMonth定義日期的一部分 - 月(MM)
gMonthDay定義日期的一部分 - 月和日(MM-DD)
gYear定義日期的一部分 - 年(YYYY)
gYearMonth定義日期的一部分 - 年和月(YYYY-MM)
time定義時間值

日期數據類型的限制

可以與日期數據類型一起使用的限制:

  • 枚舉
  • 最大獨占
  • 最大包容
  • 最小獨占
  • 最小包容
  • 模式
  • 空白

XSD 數值數據類型

十進制數據類型用于表示數值。

十進制數據類型

十進制數據類型用于指定數值。

以下是模式中十進制聲明的示例:

<xs:element name="price" type="xs:decimal"/>

您文檔中的元素可能如下所示:

<price>999.50</price>

或者可能如下所示:

<price>+999.5450</price>

或者可能如下所示:

<price>-999.5230</price>

或者可能如下所示:

<price>0</price>

或者可能如下所示:

<price>14</price>

整數數據類型

整數數據類型用于指定沒有小數部分的數值。

以下是模式中整數聲明的示例:

<xs:element name="price" type="xs:integer"/>

您文檔中的元素可能如下所示:

<price>999</price>

或者可能如下所示:

<price>+999</price>

或者可能如下所示:

<price>-999</price>

或者可能如下所示:

<price>0</price>

數值數據類型

請注意,以下所有數據類型均源自十進制數據類型(除了十進制本身)!

名稱描述
byte一個帶符號的 8 位整數
decimal一個十進制值
int一個帶符號的 32 位整數
integer一個整數值
long一個帶符號的 64 位整數
negativeInteger只包含負值(…,-2,-1)的整數
nonNegativeInteger只包含非負值(0,1,2,…)的整數
nonPositiveInteger只包含非正值(…,-2,-1,0)的整數
positiveInteger只包含正值(1,2,…)的整數
short一個帶符號的 16 位整數
unsignedLong一個無符號的 64 位整數
unsignedInt一個無符號的 32 位整數
unsignedShort一個無符號的 16 位整數
unsignedByte一個無符號的 8 位整數

數值數據類型的限制

可以與數值數據類型一起使用的限制:

  • 枚舉
  • 小數位數
  • 最大獨占
  • 最大包容
  • 最小獨占
  • 最小包容
  • 模式
  • 總位數
  • 空白

XSD 雜項數據類型

其他雜項數據類型包括布爾型、base64Binary、hexBinary、float、double、anyURI、QName 和 NOTATION。

布爾型數據類型

布爾型數據類型用于指定真值或假值。

以下是模式中布爾型聲明的示例:

<xs:attribute name="disabled" type="xs:boolean"/>

您文檔中的元素可能如下所示:

<price disabled="true">999</price>

注意:布爾型的合法值為 true、false、1(表示 true)和 0(表示 false)。

二進制數據類型

二進制數據類型用于表示二進制格式的數據。

我們有兩種二進制數據類型:

  • base64Binary(Base64 編碼的二進制數據)
  • hexBinary(十六進制編碼的二進制數據)

以下是模式中十六進制二進制聲明的示例:

<xs:element name="blobsrc" type="xs:hexBinary"/>

任意 URI 數據類型

任意 URI 數據類型用于指定 URI。

以下是模式中任意 URI 聲明的示例:

<xs:attribute name="src" type="xs:anyURI"/>

注意:如果 URI 包含空格,請用 %20 替換。

雜項數據類型

名稱描述
anyURI
base64Binary
boolean
double
float
hexBinary
NOTATION
QName

雜項數據類型的限制

可以與其他數據類型一起使用的限制:

  • 枚舉(布爾型數據類型不能使用此約束)
  • 長度(布爾型數據類型不能使用此約束)
  • 最大長度(布爾型數據類型不能使用此約束)
  • 最小長度(布爾型數據類型不能使用此約束)
  • 模式
  • 空白

XSD 元素

元素說明
all指定子元素可以以任何順序出現。每個子元素可以出現 0 次或 1 次
annotation指定用于模式注釋的頂級元素
any允許作者使用模式未指定的元素擴展 XML 文檔
anyAttribute允許作者使用模式未指定的屬性擴展 XML 文檔
appinfo指定應用程序使用的信息(必須位于注釋內部)
attribute定義屬性
attributeGroup定義用于復雜類型定義中的屬性組
choice允許聲明中包含的元素中只有一個出現在包含元素內部
complexContent定義包含混合內容或僅包含元素的復雜類型上的擴展或限制
complexType定義復雜類型元素
documentation在模式中定義文本注釋(必須位于注釋內部)
element定義元素
extension擴展現有的 simpleType 或 complexType 元素
field指定用于定義標識約束中使用的值的 XPath 表達式
group定義用于復雜類型定義中的元素組
import將具有不同目標命名空間的多個模式添加到文檔中
include將具有相同目標命名空間的多個模式添加到文檔中
key指定作為鍵的屬性或元素值(在實例文檔中作為唯一、非空且始終存在的)
keyref指定屬性或元素值與指定鍵或唯一元素的值相對應
list將簡單類型元素定義為值列表
notation描述 XML 文檔中非 XML 數據的格式
redefine從外部模式中重新定義簡單和復雜類型、組和屬性組
restriction在 simpleType、simpleContent 或 complexContent 上定義限制
schema定義模式的根元素
selector指定選擇一組元素以進行標識約束的 XPath 表達式
sequence指定子元素必須按順序出現。每個子元素可以出現 0 次到任意次數
simpleContent包含僅擴展或限制文本類型復雜類型或簡單類型的內容,并且不包含元素
simpleType定義簡單類型并指定有關屬性或僅文本元素的值的約束和信息
union將簡單類型定義為指定簡單數據類型的值集合(聯合)
unique定義元素或屬性值必須在范圍內是唯一的

XSD 數據類型的限制/特征

約束描述
enumeration定義可接受值的列表
fractionDigits指定允許的最大小數位數。必須等于或大于零
length指定允許的精確字符或列表項數目。必須等于或大于零
maxExclusive指定數值的上限(該值必須小于此值)
maxInclusive指定數值的上限(該值必須小于或等于此值)
maxLength指定允許的最大字符或列表項數目。必須等于或大于零
minExclusive指定數值的下限(該值必須大于此值)
minInclusive指定數值的下限(該值必須大于或等于此值)
minLength指定允許的最小字符或列表項數目。必須等于或大于零
pattern定義可接受的確切字符序列
totalDigits指定允許的最大數字位數。必須大于零
whiteSpace指定如何處理空格(換行符、制表符、空格和回車符)

最后

為了方便其他設備和平臺的小伙伴觀看往期文章:

微信公眾號搜索:Let us Coding,關注后即可獲取最新文章推送

看完如果覺得有幫助,歡迎點贊、收藏、關注

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/14631.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/14631.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/14631.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

maven--解決Idea沒有拉取SNAPSHOT的問題

原文網址&#xff1a;maven--解決Idea沒有拉取SNAPSHOT的問題_IT利刃出鞘的博客-CSDN博客 簡介 本文介紹Idea解決maven沒有拉取SNAPSHOT的問題。 問題描述 項目依賴了以-SNAPSHOT結尾的包&#xff0c;它更新了。Idea點了重新導入后沒有拉取到最新的包&#xff1a; 解決方案…

什么是分賬系統呢?云分帳系統的實現功能有哪些?

隨著電商平臺的發展&#xff0c;越來越多的商家開始通過在線平臺進行銷售&#xff0c;平臺業務場景的逐漸復雜&#xff0c;多渠道收款、多方分賬。在些場景下如何解決這些問題成為電商平臺急需解決的核心問題。 為了解決這些問題&#xff0c;電商平臺可以引入分賬系統即可輕松解…

從“圖形可視化”到“圖生代碼”,低代碼平臺的新挑戰

前言&#xff1a; 低代碼平臺最大的一個特點就是可視化&#xff0c;將代碼采用可視化的方式展示管理。一時間擁有圖形化界面的各類系統都掛上了低代碼的標簽。但更多的代碼從業者在使用中卻發現&#xff0c;在眾多的低代碼平臺中都是“別人家的代碼”其可視化主要是別人家的代…

如何解決vcruntime140.dll丟失問題,詳細介紹5種靠譜的解決方法

vcruntime140.dll是Microsoft Visual C Redistributable Package的一部分&#xff0c;它為使用Visual C編譯器開發的應用程序提供必要的運行時環境。該DLL文件包含了大量應用程序運行時需要調用的庫函數&#xff0c;這些函數是實現C標準庫、異常處理機制、RTTI&#xff08;運行…

圖搜索算法教程(個人總結版)

圖搜索算法是一類用于遍歷或搜索圖結構的算法&#xff0c;廣泛應用于網絡分析、路徑規劃、人工智能等領域。常見的圖搜索算法包括深度優先搜索&#xff08;DFS&#xff09;、廣度優先搜索&#xff08;BFS&#xff09;、Dijkstra算法、A*算法等。本文將詳細介紹這些圖搜索算法的…

創建JSON數據包

在C語言中&#xff0c;JSON不是一種內置的數據類型&#xff0c;因此你需要使用第三方庫來創建和解析JSON數據。一個流行的庫是cJSON&#xff0c;它允許你以C語言的方式操作JSON數據。 以下是一個使用cJSON庫創建類似于你給出的JSON數據包的示例&#xff1a; 首先&#xff0c;…

go-zero 實戰(5)

引入Prometheus 用 Prometheus 監控應用 1. 用 docker 啟動 Prometheus 編輯配置位置&#xff0c;我將 prometheus.yaml 和 targets.json 文件放在了 /opt/prometheus/conf目錄下 prometheus.yaml global:scrape_interval: 15s # 抓取間隔evaluation_interval: 15s # 評估…

【代碼隨想錄 二叉樹】二叉樹前序、中序、后序遍歷的迭代遍歷

文章目錄 1. 二叉樹前序遍歷&#xff08;迭代法&#xff09;2. 二叉樹后序遍歷&#xff08;迭代法&#xff09;3. 二叉樹中序遍歷&#xff08;迭代法&#xff09; 1. 二叉樹前序遍歷&#xff08;迭代法&#xff09; 題目連接 &#x1f34e;因為處理順序和訪問順序是一致的。所…

前端工程化-babel、corejs、postcss

出處&#xff1a;前端工程化-babel、corejs、postcss | 劉維_個人博客_編程秘籍_開發技巧_入門到精通_生活感悟 (ldlw.site) 一. babel和corejs的作用到底是什么 腦子里面的想法 es6 -> es5 es6里面其實有兩種東西 語法 新特性 轉的語法 const a 1 const b &#xf…

Shader GLSL 3D旋轉函數

mat4 rotationMatrix(vec3 axis, float angle) {axis = normalize(axis);float s = sin(angle);float c = cos(angle)

類和對象的基本概念

類和對象的基本概念 C和C中struct區別類的封裝封裝訪問權限總結struct和class的區別 將成員變量設置為private C和C中struct區別 C語言struct只有變量C語言struct 既有變量&#xff0c;也有函數 類的封裝 封裝 把變量&#xff08;屬性&#xff09;和函數&#xff08;操作&a…

交換機部分綜合實驗

實驗要求 1.內網IP地址使用172.16.0.0/16 2.sw1和sW2之間互為備份; 3.VRRP/mstp/vlan/eth-trunk均使用; 4.所有pc均通過DHcP獲取Ip地址; 5.ISP只配置IP地址; 6.所有電腦可以正常訪問IsP路由器環回 實驗拓撲 實驗思路 1.給交換機創建vlan&#xff0c;并將接口劃入vlan 2.在SW1和…

Unity Render Streaming 云渲染 外網訪問

初版&#xff1a; 日期&#xff1a;2024.5.20 前言&#xff1a;臨時思路整理&#xff0c;后期會詳細補充 環境&#xff1a; 1. 阿里云服務器 需要安裝好nodejs 、npm 2. windows電腦&#xff0c;需安裝好 nodejs 、npm 3.Unity 2021.3.15f1 4.Unity Render Streaming …

31.GDB介紹及簡單使用

文章目錄 基本用法查看匯編代碼Text User Interface(TUI)refernece 歡迎訪問個人網絡日志&#x1f339;&#x1f339;知行空間&#x1f339;&#x1f339; GDB 是 GNU Debugger的縮寫&#xff0c;是GNU軟件系統中的標準調試器&#xff0c; 很多類UNIX系統都可以使用GDB&#xf…

【論文解讀】Overview of the Scalable Video Coding Extension of the H.264/AVC Standard

介紹 該篇論文是一篇關于H.264/AVC標準可擴展視頻編碼(SVC)擴展的綜述論文,由Heiko Schwarz、Detlev Marpe和Thomas Wiegand撰寫,發表在《IEEE Transactions on Circuits and Systems for Video Technology》2007年9月第17卷第9期上。 論文解讀 摘要: H.264/AVC視頻編…

鄉村振興的農業供給側結構性改革:優化農業產業結構,提升農產品質量,滿足市場需求,實現美麗鄉村產業振興

一、引言 鄉村振興戰略是我國當前及未來一段時間內的重大戰略部署&#xff0c;旨在推動農業農村現代化&#xff0c;實現城鄉融合發展。在鄉村振興戰略中&#xff0c;農業供給側結構性改革是核心任務之一。通過優化農業產業結構、提升農產品質量、滿足市場需求&#xff0c;不僅…

韓國云主機遠程故障怎么排查?

韓國云主機遠程故障可能是由于多種原因引起的&#xff0c;包括網絡問題、服務器故障、安全設置、客戶端問題等。下面是針對韓國云主機遠程故障的排查步驟和解決方法&#xff1a; 檢查網絡連接 1.使用 ping 命令 在本地計算機上使用 ping 命令檢查與云主機之間的網絡連接。如果無…

AI巨頭爭相與Reddit合作:為何一個古老的論壇成為AI訓練的“寶藏”?

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎&#xff1f;訂閱我們的簡報&#xff0c;深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同&#xff0c;從行業內部的深度分析和實用指南中受益。不要錯過這個機會&#xff0c;成為AI領…

debian nginx upsync consul 實現動態負載

1. consul 安裝 wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg echo "deb [signed-by/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_r…

MariaDB 給指定列值自動加密(持久數據加觸發器)

文章目錄 代碼插入時&#xff0c;自動加密更新時&#xff0c;自動加密查看觸發器數據操作示例update數據取出解密取 注意一次嘗試&#xff0c;看加密后數據長度 參考鏈接&#xff1a; 一篇非常好的講解觸發器的文章&#xff1a;示例、原理MySQL/MariaDB觸發器。 用觸發器自動加…