XML语言的学习记录5- XSD

XSD(XML Schema Definition),定义 XML 文档的合法构建模块,分为简易元素(仅包含文本的元素,不会包含任何其他的元素或属性)和复合元素(包含其他元素及/或属性的 XML 元素)。

  1. 内建的数据类型:
  • xs:string
  • xs:decimal
  • xs:integer
  • xs:boolean
  • xs:date
  • xs:time
  1. 示例:
XML 复制代码
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.XXX.com/XMLSchema"
targetNamespace="http://www.YYY.com"
xmlns="http://www.ZZZ.com"
xmlns:xsi="http://www.XXX.com/XMLSchema-instance"
elementFormDefault="qualified">
<xs:element name="note">
    <xs:complexType>
      <xs:sequence>
	<xs:element name="to" type="xs:string"/>
	<xs:element name="age" type="xs:integer"/>
	<xs:element name="sex" type="xs:boolean"/>
	<xs:element name="date" type="xs:date"/>
      </xs:sequence>
    </xs:complexType>
</xs:element>

</xs:schema>

"xs:" XSD命名控件前缀;

xmlns:xs="url" 指定 XML Schema 的命名空间,前缀为xs;

targetNamespace="url":定义了XSD的目标命名空间,即定义的元素和类型将属于这个命名空间;

xmlns="url":这个属性定义了默认命名空间,即在没有指定命名空间的情况下,元素和属性将属于这个命名空间;

xmlns:xsi="/XMLSchema-instance":通常用于指定 XML 实例文档中的元数据信息;

elementFormDefault="qualified":这个属性定义了元素的默认命名空间限定方式,qualified 表示元素必须在命名空间中被限定;

使用方法: <xs: xsd元素></xs: xsd元素>

xsd元素:

  1. <xs:schema>:定义整个 XML Schema 文档的根元素

  2. <xs:element>:定义 XML 文档中的元素

  3. <xs:attribute>:定义元素的属性

  4. <xs:sequence>:指定元素子元素的顺序,例如:
    1.

    XML 复制代码
    <xs:element name="person">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="name" type="xs:string"/>
                <xs:element name="age" type="xs:integer"/>
                <xs:element name="address" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
  5. <xs:choice>:指定可选的元素,如:
    1.

    XML 复制代码
    <!-- xs:choice> 包含了三个 <xs:element> 元素,分别定义了 "shape" 元素可以选择的子元素为 "circle"、"rectangle" 和 "triangle"。这表示在 XML 实例中,"shape" 元素可以包含其中的一个子元素,而不是全部出现 -->
    <xs:element name="shape">
        <xs:complexType>
            <xs:choice>
                <xs:element name="circle" type="xs:string"/>
                <xs:element name="rectangle">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="width" type="xs:integer"/>
                            <xs:element name="height" type="xs:integer"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="triangle">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="side1" type="xs:integer"/>
                            <xs:element name="side2" type="xs:integer"/>
                            <xs:element name="side3" type="xs:integer"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:choice>
        </xs:complexType>
    </xs:element>
  6. <xs:all>:指定包含所有指定子元素的元素

  7. <xs:group>:定义元素组合

  8. <xs:attributeGroup>:定义属性组合

  9. <xs:simpleType>:定义简单类型的元素结构

  10. <xs:simpleContent>:定义包含对 简单类型元素的扩展或限制且不包含任何元素,通常与 <xs:extension><xs:restriction> 结合使用,以扩展或限制现有的简单类型,例如:
    1.

    XML 复制代码
    <xs:element name="exampleElement">
        <xs:simpleType>
            <xs:simpleContent>
                <xs:extension base="xs:string">
                    <xs:attribute name="attr1" type="xs:int"/>
                </xs:extension>
            </xs:simpleContent>
        </xs:simpleType>
    </xs:element>
  11. <xs:restriction>:定义对 simpleType、simpleContent 或 complexContent 的约束

  12. <xs:complexType>:定义复杂类型的元素结构

  13. <xs:complexContent>:定义对复杂类型(包含混合内容或仅包含元素)的扩展或限制,如:
    1.

    XML 复制代码
    <xs:element name="person">
        <xs:complexType>
            <xs:complexContent>
                <xs:extension base="xs:string">
                    <xs:attribute name="id" type="xs:integer"/>
                </xs:extension>
            </xs:complexContent>
        </xs:complexType>
    </xs:element>
  14. <xs:redefine>:重新定义从外部架构文件中获取的简单和复杂类型、组和属性组

  15. <xs:extension>:扩展已有的 simpleType 或 complexType 元素

相关推荐
小白小白从不日白3 分钟前
react hooks--useReducer
前端·javascript·react.js
下雪天的夏风16 分钟前
TS - tsconfig.json 和 tsconfig.node.json 的关系,如何在TS 中使用 JS 不报错
前端·javascript·typescript
diygwcom28 分钟前
electron-updater实现electron全量版本更新
前端·javascript·electron
Hello-Mr.Wang44 分钟前
vue3中开发引导页的方法
开发语言·前端·javascript
程序员凡尘1 小时前
完美解决 Array 方法 (map/filter/reduce) 不按预期工作 的正确解决方法,亲测有效!!!
前端·javascript·vue.js
潮汐退涨月冷风霜1 小时前
机器学习之非监督学习(四)K-means 聚类算法
学习·算法·机器学习
GoppViper1 小时前
golang学习笔记29——golang 中如何将 GitHub 最新提交的版本设置为 v1.0.0
笔记·git·后端·学习·golang·github·源代码管理
羊小猪~~1 小时前
深度学习基础案例5--VGG16人脸识别(体验学习的痛苦与乐趣)
人工智能·python·深度学习·学习·算法·机器学习·cnn
Charles Ray2 小时前
C++学习笔记 —— 内存分配 new
c++·笔记·学习
我要吐泡泡了哦3 小时前
GAMES104:15 游戏引擎的玩法系统基础-学习笔记
笔记·学习·游戏引擎