XML语言的学习记录5- XSD

2024-03-20 16:36
文章标签 语言 xml 学习 记录 xsd

本文主要是介绍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 元素

这篇关于XML语言的学习记录5- XSD的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/830071

相关文章

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

统一返回JsonResult踩坑的记录

《统一返回JsonResult踩坑的记录》:本文主要介绍统一返回JsonResult踩坑的记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录统一返回jsonResult踩坑定义了一个统一返回类在使用时,JsonResult没有get/set方法时响应总结统一返回

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

Go语言中Recover机制的使用

《Go语言中Recover机制的使用》Go语言的recover机制通过defer函数捕获panic,实现异常恢复与程序稳定性,具有一定的参考价值,感兴趣的可以了解一下... 目录引言Recover 的基本概念基本代码示例简单的 Recover 示例嵌套函数中的 Recover项目场景中的应用Web 服务器中

java对接海康摄像头的完整步骤记录

《java对接海康摄像头的完整步骤记录》在Java中调用海康威视摄像头通常需要使用海康威视提供的SDK,下面这篇文章主要给大家介绍了关于java对接海康摄像头的完整步骤,文中通过代码介绍的非常详细,需... 目录一、开发环境准备二、实现Java调用设备接口(一)加载动态链接库(二)结构体、接口重定义1.类型

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio