当前位置: 首页 > article >正文

XML语言的学习记录5- XSD

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

1. 内建的数据类型:

  • xs:string
  • xs:decimal
  • xs:integer
  • xs:boolean
  • xs:date
  • xs:time

2.  示例:

<?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. <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. <!-- 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. <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. <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 元素


http://www.kler.cn/a/274815.html

相关文章:

  • 本地缓存和Redis缓存 存储更新时间的更新套路
  • 深入了解Python模拟负载均衡器:将请求高效分发至多个服务器
  • RabbitMQ 路由(Routing)通讯方式详解
  • python脚本中使用git命令
  • 蓝桥杯练习生第四天
  • [HNOI2002] 营业额统计 STL - set集合
  • 智慧城市的发展趋势与挑战:未来展望
  • python 笔记:locals
  • Android Studio实现内容丰富的安卓外卖平台
  • C# ---Extension Method
  • 当人工智能遇上“理解偏差”:一场关于天气的宇宙之旅
  • 【Python 48小时速成 3】输入与输出
  • Yarn 管理的前端项目转换为使用 npm
  • docker入门(五)—— 小练习,docker安装nginx、elasticsearch
  • python大学生健身爱好者交流网站flask-django-nodejs-php
  • 1035. 不相交的线
  • python基础18_作用域与名称空间
  • windows 多网卡情况dns解析超时问题的排查
  • 2024.3.9|第十五届蓝桥杯模拟赛(第三期)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(访问说明符)
  • mysql之基本概念与安装
  • Springboot+vue的仓库管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。
  • android、Jetpack Compose使用 Room数据库kapt注解时出现的相关问题整理。
  • 用C语言打造自己的Unix风格ls命令
  • 五、C#归并排序算法
  • MaixSense-A010 接入 ROS