Schema 约束 API 查看(一)| 学习笔记

简介: 快速学习 Schema 约束 API 查看。

开发者学堂课程【XML入门 :Schema 约束 API 查看(一)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/37/detail/858


Schema 约束 API 查看

 

内容介绍

一、xmlSchema 文档基本结构

二、xmlSchema 复杂元素指示器

三、Schema 入门案例

四、对 xmlSchema 的引用

五、使用名称空间引入 Schema

六、复杂的 Schema 约束

七、总结

 

一、xmlSchema 文档基本结构

Schema 的结构:

它的根节点是 Schema,里面要加上三个属性。使用时首先要判断它是简单元素还是复杂元素,如果是一个复杂元素,先写 complexType 在写 sequence 然后再写上子元素。如果是简单元素就直接写 element。

 

二、xmlSchema 复杂元素指示器

1.<sequence>:表示元素的出现的顺序

在1.xsd 里写了 sequence 表示 Schema 的一个指示器,除了写 sequence 还有其他写法,sequence 表示元素的出现的顺序,把 person.xml 里的 age 放在第一个会报错,放在第二个就所以 sequence 元素出现必须按照顺序来写。

(1)ALL: 表示只能出现一次

在1.xsd 里把 sequence 注释掉,写上 all,回到 person.xml 加上 name 会出现报错,所以 all 表示元素只能出现一次。

(2)choice: 表示只能出现其中的一个

<name>zhangsan</name>

<!--<name>zhangsan</name>-->

<age>20</age>

</person>

在1.xsd 里先注释 all,再写入 choice,然后就看到在 person.xml 出现报错(只能出现 name 和 age 其中一个)

<!--<name>zhangsan</name>-->

<!--<name>zhangsan</name>-->

<age>20</age>

</person>

注释掉 age 保存,没报错;choice 表示只能出现 name、age 中的一个,把 age 拿开,name 去掉保存就没问题了。

(3)maxOccurs="unbounded": 表示元素出现次数没限制

在1.xsd 里的 element 中写

:<element name="name" type="string" maxOccurs="unbounded"></element>

出现的次数,unbounded  出现无数次,在 person.xml 中在写一个一样的 name,没有报错,再来三个 name 也没问题。

(4)any:表示任意元素。

2.在 Schema 里可以约束属性

(1)attribute 可以约束属性,但是属性必须是复杂元素,在1.xsd 的complexType 里写。

(2)写在一个复杂元素里面

(3)写在</complexType>之前

(4)写法:

<attribute nane="id1" type="int" use="required">name

写上属性的名称,type 数据类型,use 属性是否必须要出现 required 必须,看 person.xml 报错了,因为它里面有个属性叫 id1,在 xsd:里加入 id1="123" 保存,发现没有错误。

(5)属性的定义:

①name: 属性名称

②type: 属性类型 int stirng

③use: 属性是否必须出现 required

 

三、Schema 入门案例

1.案例分析

<?xml version="1.0" encoding="utf-8"?>

<schema  //schema 是根节点

xmlns="http://www.w3.org/2001/XMLSchema"

targetNamespace="http://www.itcast.cn/20140213"

elementFormDefault="qualified">

<element name="note"> //note 这是复杂元素,因为下面有 complexType

<complexType>

<sequence> //下边的元素(element)要按顺序出现。

<element name="to" type="string" />

<element name="from" type="string" />

<element name="heading" type="string" />

<element name="body” type="string" />

</sequence>

</complexType>

</element>

</Schema>

相关文章
|
存储 C++ 索引
哈希表、集合、映射
哈希表、集合、映射
|
机器学习/深度学习 存储 监控
实时特征处理框架:构建与应用实践
在大数据时代,实时特征处理框架成为数据驱动应用的核心组件。这些框架能够从海量数据中提取特征,并实时更新,为机器学习模型提供动力。本文将探讨实时特征框架的构建和生产实践,分享如何构建一个高效、稳定的实时特征处理系统。
272 2
|
Java API 开发工具
API参考手册
【10月更文挑战第18天】API参考手册
471 2
|
监控 架构师 Java
Java虚拟机调优的艺术:从入门到精通####
本文作为一篇深入浅出的技术指南,旨在为Java开发者揭示JVM调优的神秘面纱,通过剖析其背后的原理、分享实战经验与最佳实践,引领读者踏上从调优新手到高手的进阶之路。不同于传统的摘要概述,本文将以一场虚拟的对话形式,模拟一位经验丰富的架构师向初学者传授JVM调优的心法,激发学习兴趣,同时概括性地介绍文章将探讨的核心议题——性能监控、垃圾回收优化、内存管理及常见问题解决策略。 ####
|
XML Java 网络架构
使用 Spring Boot 公开 SOAP Web 服务端点:详细指南
使用 Spring Boot 公开 SOAP Web 服务端点:详细指南
1431 0
|
Oracle Java 关系型数据库
Java官网下载JDK21版本详细教程(下载、安装、环境变量配置)
Java官网下载JDK21版本详细教程(下载、安装、环境变量配置)
|
关系型数据库 MySQL Docker
PolarDB-X安装部署初体验
本文档介绍了体验阿里云PolarDB-X分布式数据库的安装和使用过程。首先提到PolarDB-X在稳定性及性能上的优势,然后详细描述了在CentOS 7环境下遇到的Python版本不兼容和Docker容器iptables配置问题的解决方法。通过创建Python 3.8的虚拟环境解决PyYAML依赖问题,接着在解决Docker容器内部网络问题后,成功安装并启动PolarDB-X。文中强调PolarDB-X完全兼容MySQL,适合熟悉MySQL的用户,并分享了安装历史记录以供参考。
536 7
|
机器学习/深度学习 Shell C++
测试本地部署ChatGLM-6B | ChatGPT
ChatGLM-6B是款62亿参数的中英对话模型,类似ChatGPT,可在6GB显存(INT4量化)的GPU或CPU上运行。它提供流畅、多样的对话体验。用户可从Hugging Face或清华云下载模型配置。部署涉及创建Python环境,安装依赖,下载模型到`ckpt`文件夹。测试时加载tokenizer和模型,使用示例代码进行交互。应用包括基于MNN和JittorLLMs的推理实现,以及langchain-ChatGLM、闻达、chatgpt_academic和glm-bot等项目。5月更文挑战第10天
436 1
|
机器学习/深度学习 运维
深度学习实现自编码器Autoencoder神经网络异常检测心电图ECG时间序列
深度学习实现自编码器Autoencoder神经网络异常检测心电图ECG时间序列
|
分布式计算 Hadoop Scala
搭建 Spark 的开发环境
搭建 Spark 的开发环境
185 0