日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

XSD文件详解(以Maven为例)

發布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XSD文件详解(以Maven为例) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是XSD

XML Schema 的作用是定義 XML 文檔的合法構建模塊,類似 DTD。
XML Schema 是基于 XML 的 DTD 替代者。
XML Schema 描述 XML 文檔的結構。
XML Schema 語言也稱作 XML Schema 定義(XML Schema Definition,XSD)。
XML Schema:

  • 定義可出現在文檔中的元素
  • 定義可出現在文檔中的屬性
  • 定義哪個元素是子元素
  • 定義子元素的次序
  • 定義子元素的數目
  • 定義元素是否為空,或者是否可包含文本
  • 定義元素和屬性的數據類型
  • 定義元素和屬性的默認值以及固定值
  • Xml Schema的用途

  • 定義一個Xml文檔中都有什么元素
  • 定義一個Xml文檔中都會有什么屬性
  • 定義某個節點的都有什么樣的子節點,可以有多少個子節點,子節點出現的順序
  • 定義元素或者屬性的數據類型
  • 定義元素或者屬性的默認值或者固定值
  • 根元素

    schema 聲明:

    <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://maven.apache.org/POM/4.0.0"xmlns="http://maven.apache.org/POM/4.0.0"> ... ... </xs:schema>

    xmlns:xs=“http://www.w3.org/2001/XMLSchema” 表示元素和數據類型等定義來自w3,同時它還規定了來自命名空間 w3 的元素和數據類型應該使用前綴 xs:
    targetNamespace=“http://maven.apache.org/POM/4.0.0” 顯示被此 schema 定義的元素 來自命名空間
    xmlns=“http://maven.apache.org/POM/4.0.0” 表示此文檔的默認命名空間
    elementFormDefault=“qualified” 任何 XML 實例文檔所使用的且在此 schema 中聲明過的元素必須被命名空間限定

    在 XML 文檔中引用 Schema

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> </project>

    規定了默認命名空間的聲明。此聲明會告知 schema 驗證器,在此 XML 文檔中使用的所有元素都被聲明于"http://maven.apache.org/POM/4.0.0" 這個命名空間。
    schemaLocation 屬性有兩個值。第一個值是需要使用的命名空間。第二個值是供命名空間使用的 XML schema 的位置

    XSD簡易元素

  • 簡易元素定義 <xs:element name="tag" minOccurs="0" type="xs:string" default="HEAD"/> name="tag"表示要定義元素的名稱 ,type=”xs:string” 表示要定義元素的數據類型,default=”HEAD” 表示定義元素的默認值,minOccurs=“0” 表示XML文檔中某個[元素節點] 是否可以不出現,默認值為1,表示必須出現。
    除此之外,簡易元素還有幾個屬性,nillable:表示XML文檔中某個[元素取值] 是否可以為空,默認值為false,表示不能為空,fixed: 表示要定義元素的固定值,此元素只可以取這些值
  • 簡易元素屬性
    <xs:attribute name="combine.children" type="xs:string"/>
    name=”combine.children” 表示要定義屬性的名字,type=”xs:string” 表示要定義屬性的數據類型,
    除此之外,default=”2001-01-11” 表示要定義屬性的默認值,fixed=”2001-01-11” 表示要定義屬性的固定值,use=”required” 表示此屬性是否是必須指定的,即如果不指定就不符合Schema,默認沒有use=”required”屬性表示屬性可有可無
  • 簡易元素限定
    簡易元素的限定主要有以下幾種類型
  • 限定描述
    enumeration定義可接受值的一個列表
    fractionDigits定義所允許的最大的小數位數。必須大于等于0。
    length定義所允許的字符或者列表項目的精確數目。必須大于或等于0。
    maxExclusive定義數值的上限。所允許的值必須小于此值。
    maxInclusive定義數值的上限。所允許的值必須小于或等于此值。
    maxLength定義所允許的字符或者列表項目的最大數目。必須大于或等于0。
    minExclusive定義數值的下限。所允許的值必需大于此值。
    minInclusive定義數值的下限。所允許的值必需大于或等于此值。
    minLength定義所允許的字符或者列表項目的最小數目。必須大于或等于0。
    pattern定義可接受的字符的精確序列。
    totalDigits定義所允許的阿拉伯數字的精確位數。必須大于0。
    whiteSpace定義空白字符(換行、回車、空格以及制表符)的處理方式。

    最大最小值限定

    <xs:element name="age"><xs:simpleType><xs:restriction base="xs:integer"><xs:minInclusive value="0"/> <xs: minInclusive>表示最小值,包括指定值<xs:maxInclusive value="120"/> <xs: maxInclusive>表示最大值,包括指定值</xs:restriction></xs:simpleType> </xs:element>

    枚舉限定

    <xs:element name="car"><xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value="Audi"/><xs:enumeration value="Golf"/><xs:enumeration value="BMW"/></xs:restriction></xs:simpleType> </xs:element>

    模式約束

    <xs:element name="letter"><xs:simpleType><xs:restriction base="xs:string"><xs:pattern value="[a-z]"/> 可接受的值只有小寫字母 a - z 其中的一個<xs:pattern value="[A-Z][A-Z][A-Z]"/> 可接受的值是大寫字母 A - Z 其中的三個<xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/>可接受的值是大寫或小寫字母 a - z 其中的三個<xs:pattern value="[xyz]"/> 可接受的值是字母 x, y 或 z 中的一個<xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/> 可接受的值是五個阿拉伯數字的一個序列,且每個數字的范圍是 0-9<xs:pattern value="([a-z])*"/> 可接受的值是 a - z 中零個或多個字母<xs:pattern value="([a-z][A-Z])+"/> 可接受的值是一對或多對字母,每對字母由一個小寫字母后跟一個大寫字母組成<xs:pattern value="male|female"/> 可接受的值是 male 或者 female<xs:pattern value="[a-zA-Z0-9]{8}"/> 可接受的值是由 8 個字符組成的一行字符,這些字符必須是大寫或小寫字母 a - z 亦或數字 0 - 9</xs:restriction></xs:simpleType> </xs:element>

    空白字符限定

    <xs:element name="address"><xs:simpleType><xs:restriction base="xs:string"><xs:whiteSpace value="preserve"/> whiteSpace 限定被設置為 "preserve",這意味著 XML 處理器不會移除任何空白字符<xs:whiteSpace value="replace"/> whiteSpace 限定被設置為 "replace",這意味著 XML 處理器將替換所有空白字符(換行、回車、空格以及制表符)<xs:whiteSpace value="collapse"/>whiteSpace 限定被設置為 "collapse",這意味著 XML 處理器將移除所有空白字符(換行、回車、空格以及制表符會被替換為空格,開頭和結尾的空格會被移除,而多個連續的空格會被縮減為一個單一的空格)</xs:restriction></xs:simpleType> </xs:element>

    長度限定

    <xs:element name="password"><xs:simpleType><xs:restriction base="xs:string"><xs:length value="8"/> 值必須精確到 8 個字符<xs:minLength value="5"/> 值最小為 5 個字符<xs:maxLength value="8"/> 最大為 8 個字符</xs:restriction></xs:simpleType> </xs:element>

    XSD復合類型

    定義復合元素有兩種方法
    1、 通過命名此元素,可直接對元素進行聲明

    <xs:element name="dependencies" minOccurs="0"><xs:complexType><xs:sequence><xs:element name="dependency" minOccurs="0" maxOccurs="unbounded" type="Dependency"/></xs:sequence></xs:complexType></xs:element>

    2、元素可以使用 type 屬性,這個屬性的作用是引用要使用的復合類型的名稱

    <xs:element name="dependencyManagement" minOccurs="0" type="DependencyManagement"></xs:element> <xs:complexType name="DependencyManagement"> <xs:all><xs:element name="dependencies" minOccurs="0"><xs:complexType><xs:sequence><xs:element name="dependency" minOccurs="0" maxOccurs="unbounded" type="Dependency"/></xs:sequence></xs:complexType></xs:element></xs:all></xs:complexType>
  • 空元素

    <xs:element name="configuration" minOccurs="0"><xs:complexType><xs:attribute name="combine.children" type="xs:string"/><xs:attribute name="combine.self" type="xs:string"/></xs:complexType></xs:element>
  • 僅含元素
    <xs:sequence>。它意味著被定義的元素必須按上面的次序出現在元素中

    <xs:element name="dependencies" minOccurs="0"><xs:complexType><xs:sequence><xs:element name="dependency" minOccurs="0" maxOccurs="unbounded" type="Dependency"/></xs:sequence></xs:complexType></xs:element>
  • 僅含文本
    此類型僅包含簡易的內容(文本和屬性),因此我們要向此內容添加 simpleContent 元素。當使用簡易內容時,我們就必須在 simpleContent 元素內定義擴展或限定,就像這樣:

    <xs:element name="shoesize"><xs:complexType><xs:simpleContent><xs:extension base="xs:integer"><xs:attribute name="country" type="xs:string" /></xs:extension></xs:simpleContent></xs:complexType> </xs:element>
  • 混合元素
    為了使字符數據可以出現在 “letter” 的子元素之間,mixed 屬性必須被設置為 “true”

    <xs:element name="letter"><xs:complexType mixed="true"><xs:sequence><xs:element name="name" type="xs:string"/><xs:element name="orderid" type="xs:positiveInteger"/><xs:element name="shipdate" type="xs:date"/></xs:sequence></xs:complexType> </xs:element>
  • 指示器

    通過指示器,我們可以控制在文檔中使用元素的方式。在XSD中有七種指示器:
    Order 指示器:All,Choice,Sequence ;用于定義元素的順序
    Occurrence 指示器:maxOccurs,minOccurs;Occurrence 指示器用于定義某個元素出現的頻率。maxOccurs 以及 minOccurs 的默認值均為 1。
    Group 指示器:Group name, attributeGroup name;Group 指示器用于定義相關的數批元素。

  • All 指示器
    <all> 指示器規定子元素可以按照任意順序出現,且每個子元素必須只出現一次<xs:element name="person"><xs:complexType><xs:all><xs:element name="firstname" type="xs:string"/><xs:element name="lastname" type="xs:string"/></xs:all></xs:complexType> </xs:element>
  • Choice 指示器
    <choice> 指示器規定可出現某個子元素或者可出現另外一個子元素(非此即彼):<xs:element name="person"><xs:complexType><xs:choice><xs:element name="employee" type="employee"/><xs:element name="member" type="member"/></xs:choice></xs:complexType> </xs:element>
  • Sequence 指示器
    <sequence> 規定子元素必須按照特定的順序出現:<xs:element name="person"><xs:complexType><xs:sequence><xs:element name="firstname" type="xs:string"/><xs:element name="lastname" type="xs:string"/></xs:sequence></xs:complexType> </xs:element>
  • maxOccurs 指示器
    指示器可規定某個元素可出現的最大次數,如需使某個元素的出現次數不受限制,請使用 maxOccurs=“unbounded” 這個聲明<xs:element name="person"><xs:complexType><xs:sequence><xs:element name="full_name" type="xs:string"/><xs:element name="child_name" type="xs:string" maxOccurs="10"/></xs:sequence></xs:complexType> </xs:element>
  • minOccurs 指示器
    指示器可規定某個元素能夠出現的最小次數:<xs:element name="person"><xs:complexType><xs:sequence><xs:element name="full_name" type="xs:string"/><xs:element name="child_name" type="xs:string"maxOccurs="10" minOccurs="0"/></xs:sequence></xs:complexType> </xs:element>
  • 元素組指示器
    用來定義相關的一組元素。<xs:group name="persongroup"><xs:sequence><xs:element name="firstname" type="xs:string"/><xs:element name="lastname" type="xs:string"/><xs:element name="birthday" type="xs:date"/></xs:sequence> </xs:group><xs:element name="person" type="personinfo"/><xs:complexType name="personinfo"><xs:sequence><xs:group ref="persongroup"/><xs:element name="country" type="xs:string"/></xs:sequence> </xs:complexType>
  • 屬性組指示器
    用來定義相關的一組屬性。<xs:attributeGroup name="personattrgroup"><xs:attribute name="firstname" type="xs:string"/><xs:attribute name="lastname" type="xs:string"/><xs:attribute name="birthday" type="xs:date"/> </xs:attributeGroup><xs:element name="person"><xs:complexType><xs:attributeGroup ref="personattrgroup"/></xs:complexType> </xs:element>
  • any元素

    通過使用 <any> 元素,我們可以通過任何元素(在 <lastname> 之后)擴展 “person” 的內容

    <xs:element name="person"><xs:complexType><xs:sequence><xs:element name="firstname" type="xs:string"/><xs:element name="lastname" type="xs:string"/><xs:any minOccurs="0"/></xs:sequence></xs:complexType> </xs:element>

    anyAttribute元素

    元素使我們有能力通過未被 schema 規定的屬性來擴展 XML 文檔!

    <xs:element name="person"><xs:complexType><xs:sequence><xs:element name="firstname" type="xs:string"/><xs:element name="lastname" type="xs:string"/></xs:sequence><xs:anyAttribute/></xs:complexType> </xs:element>

    substitutionGroup元素替換

    <xs:element name="name" type="xs:string"/> <xs:element name="navn" substitutionGroup="name"/><xs:complexType name="custinfo"><xs:sequence><xs:element ref="name"/></xs:sequence> </xs:complexType><xs:element name="customer" type="custinfo"/> <xs:element name="kunde" substitutionGroup="customer"/>

    XSD數據類型

    1、XSD字符串
    字符串數據類型用于可包含字符串的值,可包含字符、換行、回車以及制表符。
    可與字符串數據類型一同使用的限定:enumeration、length、maxLength、minLength、pattern (NMTOKENS、IDREFS 以及 ENTITIES 無法使用此約束)、whiteSpace

    名稱描述
    ENTITIES
    ENTITY
    ID在 XML 中提交 ID 屬性的字符串 (僅與 schema 屬性一同使用)
    IDREF在 XML 中提交 IDREF 屬性的字符串(僅與 schema 屬性一同使用)
    IDREFSlanguage 包含合法的語言 id 的字符串
    Name包含合法 XML 名稱的字符串
    NCName
    NMTOKEN在 XML 中提交 NMTOKEN 屬性的字符串 (僅與 schema 屬性一同使用)
    NMTOKENS
    normalizedString不包含換行符、回車或制表符的字符串
    QName
    string字符串
    token不包含換行符、回車或制表符、開頭或結尾空格或者多個連續空格的字符串

    2、日期和時間類型

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

    3、數值數據類型
    可與數值數據類型一同使用的限定:enumeration、fractionDigits、maxExclusive、maxInclusive、minExclusive、minInclusive、pattern、totalDigits、whiteSpace

    名字秒數
    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 位整數

    4、雜項數據類型
    可與雜項數據類型一同使用的限定:enumeration (布爾數據類型無法使用此約束*)、length (布爾數據類型無法使用此約束)、maxLength (布爾數據類型無法使用此約束)、minLength (布爾數據類型無法使用此約束)、pattern、whiteSpace

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

    總結

    以上是生活随笔為你收集整理的XSD文件详解(以Maven为例)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。