XML——XML Schema

【0】README

0.0)本文文字描述转自 core java volume 2 , 旨在理解 XML——XML Schema 的基础知识 ;(本文不涉及源代码, 很遗憾,以后会补充)


【1】XML Schema 相关

1.0)为什么引入XML Schema? 如果要指定文档结构,可以提供一个文档类型定义(DTD)或一个 XML Schema定义;DTD 或 schema 包含了用于解释文档应该如何构成的规则, 这些规则指定了每个元素的合法子元素和和属性; (干货——为什么引入XML Schema)

1.1)如果要在文档中引用 Schema 文件, 需要在 根元素中添加属性, 例如:

<?xml version="1.0"?>
<configuration xmlns:xsi="http://www.w2.org/2001.XMLSchema-instance"xsi:noNamespaceSchemaLocation="config.xsd">
</configuration>
  • 这个声明是在说: Schema文件 config.xsd 会被用来验证文档;(而 前缀xsi 是一个命名空间别名——namespace alias); (干货——前缀xsi 是一个命名空间别名)

1.2)Schema使用命名空间定义了每个元素的类型。类型可以是简单类型,即有格式限制的字符串或复杂类型。 (干货——Schema使用命名空间定义了每个元素的类型。)

  • 1.2.1)一些简单类型已经被内建到了 XML Schema 内,包括:
xsd : string
xsd : int
xsd : boolean

Attention)

  • A1)我们用前置 xsd: 来表示XSL Schema定义的命名空间, 一些作者用 xs: 代替;
  • A2)可以自定义自己的简单类型:
<xsd: simpleType name="StyleType"><xsd: restriction base="xsd:string"><xsd: enumeration value="PLAIN"><xsd: enumeration value="BOLD"><xsd: enumeration value="ITALIC"><xsd: enumeration value="BOLD_ITALIC"></xsd: restriction>
</xsd: simpleType>
  • A2.1)当定义元素时,要指定它的类型:
<xsd: element name="name" type="xsd:string" />
<xsd: element name="size" type="xsd:int" />
<xsd: element name="style" type="StyleType" />
  • A2.2)类型约束了元素的内容, 下面 的元素个数被验证为正确格式:
<size>10</size>
<style>PLAIN</style>
  • A2.3)但是下面的元素会被解析器拒绝:
<size>default</size>
<style>SLANTED</style>
  • A2.4)你可以把类型组合成复杂类型, 如:
<xsd:complexType name="FontType"><xsd:sequence><xsd:element ref="name"/><xsd:element ref="size"/><xsd:element ref="style"/></xsd:sequence>
</xsd:complexType>
  • A2.5)嵌套定义:在上面的类型定义中, 我们用ref 属性来引用在 Schema 中位于别处的定义。也可以嵌套定义, 如这样:
<xsd:complexType name="FontType"><xsd:sequence>       <xsd: element name="name" type="xsd:string" /><xsd: element name="size" type="xsd:int" /><xsd: element name="style" type="StyleType" /><xsd: simpleType> // 而不是<xsd: simpleType name="StyleType">, 请注意这叫匿名定义;<xsd: restriction base="xsd:string"><xsd: enumeration value="PLAIN"><xsd: enumeration value="BOLD"><xsd: enumeration value="ITALIC"><xsd: enumeration value="BOLD_ITALIC"></xsd: restriction></xsd: simpleType></xsd:sequence>
</xsd:complexType>
  • A2.6)xsd: choice 和 | 操作符等价, 如: (干货——xsd:choice 和 | 操作符等价)
<xsd:complexType name="contactinfo"><xsd:choice><xsd:element ref="email"><xsd:element ref="phone"></xsd:choice>
</xsd:complexType>
同:
<xsd:complexType name="contactinfo"><xsd:element ref="email | phone">
</xsd:complexType>
  • A2.7)如果允许使用重复元素,使用 minoccurs 和 maxoccurs 属性:

  • A2.7.1)看个荔枝:与 DTD类型 item* 的等价形式如下:
    <xsd:element name="item" type="..." minoccurs="0" maxoccurs="unbounded">

  • A2.7.2)如果要指定属性, 可以吧 xsd:attribute 元素添加到 complexType定义中去:

<xsd:element name=szie><xsd:complexType>...<xsd:attribute name="unit" type="xsd:string" use = "optional" default="cm"/></xsd:complexType>
</xsd:element>
  • A2.8)这是DTD 声明等价 的形式:
    <!ATTLIST size unit CDATA #IMPLIED "cm">

  • A2.9) 可以把 Schema 的元素和类型定义封装在 xsd:schema 元素中:

<xsd: schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
...
</xsd: schema>
  • A2.10)解析带有 Schema 的XML 文件和解析带有 DTD 的文件相似, 但有3点差别(Difference): (干货—— Schema 的XML 文件和带有 DTD 的XML文件的差别有3)

    • D1)必须打开对命名空间的支持,即使在 XML 文件里你不使用它;
      factory.setNamespaceAware(true);
    • D2)必须通过如下 “魔咒”来准备好处理 Schema 的工厂:
      final String JAXP_SCHEMA_LANGUAGE="http://java.sun.com/xml/jaxp/properties/schemaLanguage";
      final String W3C_XML_SCHEMA = "http://www.w3.org/2001/XMLSchema";
      factory.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA );
    • D3) 解析器不会丢弃元素中的空白字符, 这是个很老火的问题;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331546.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么为pdf文件添加水印?

怎么为pdf文件添加水印&#xff1f;PDF是一种很好用的文件格式&#xff0c;这种格式能够很有效的保护我们的文件&#xff0c;但有时可能还会被破解&#xff0c;这种时候在PDF上添加水印就是比较好的方法。 综上所述&#xff0c;PDF是保密性很强的文件&#xff0c;但添加水印能够…

皖西学院计算机协会组织部,皖西学院

皖西学院关于卢义忠同志兼任安徽省高校后勤协会理事的请示安徽省委组织部:根据《关于进一步规范党政机关和企事业单位领导干部兼任社会组织职务审批管理的通知》(皖组通字〔2016〕40号)等文件精神&#xff0c;经皖西学院党委1月17日研究建议&#xff1a;因校领导分工调整&#…

java 用流创建流_成为Java流大师–第1部分:创建流

java 用流创建流在许多情况下&#xff0c;声明性代码&#xff08;例如&#xff0c;具有Streams的功能组合&#xff09;提供了出色的代码指标。 通过该动手实验文章系列进行编码&#xff0c;并成为Java Streams的主教练&#xff0c;从而成为一名更好的Java程序员。 Streams的整…

java的for循环

一、普通for循环&#xff08;1&#xff09;for循环语法 for&#xff08;initialization; condition; update&#xff09;{statements;} &#xff08;2&#xff09;语法解释 1、for语句执行时&#xff0c;首先执行初始化操作&#xff08;initialization&#xff09;&#xff0c…

XML——使用 XPath来定位信息+使用命名空间

【0】README 0.1&#xff09;本文文字描述转自 core java volume 2 &#xff0c; 旨在理解 XML——使用 XPath来定位信息使用命名空间 的基础知识 &#xff1b; 0.2&#xff09; for detailed XPath info &#xff1a; please visit ( http://www.ruanyifeng.com/blog/2009/…

计算机教室英语怎么读音,网络教室,network classroom,音标,读音,翻译,英文例句,英语词典...

多媒体教室1.多媒体教室基本组成多媒体教室由多媒体计算机、液晶投影机、数字视频展示台、中央控制系统、投影屏幕、音响设备等多种现代教学设备组成。(1)多媒体液晶投影机是整个多媒体演示教室中最重要的也是最昂贵的设备&#xff0c;它连接着计算机系统、所有视频输出系统及数…

算法一之简单选择排序

一、 选择排序的思想 选择排序的基本思想是&#xff1a;每一趟在n-i1&#xff08;i1&#xff0c;2&#xff0c;…n-1&#xff09;个记录中选取关键字最小的记录作为有序序列中第i个记录。基于此思想的算法主要有简单选择排序、树型选择排序和堆排序。简单选择排序的基本思想&a…

XML——流机制解析器

【0】README 0.1&#xff09; 本文文字描述转自 core java volume 2 &#xff0c; 旨在理解 XML——流机制解析器 的基础知识 &#xff1b; 0.2&#xff09; for detailed StAX, please visit http://blog.csdn.net/pacosonswjtu/article/details/50569728 【1】XML——流机制…

第512章 河系量子计算机,第512章、河系量子计算机

69中文网 www.69zww.cc&#xff0c;最快更新分身投胎万界最新章节&#xff01;但AI智能所容身的量子计算机就大得有些恐怖了。其总体积丝毫不亚于一个小型河系&#xff01;什么是河系&#xff1f;银河系&#xff0c;仙女星系等等都是大小不等的河系&#xff01;而AI智能容身的量…

idea内置junit5_JUnit 5和Selenium –使用Selenium内置的`PageFactory`实现页面对象模式

idea内置junit5Selenium是一组支持浏览器自动化的工具和库&#xff0c;主要用于Web应用程序测试。 Selenium的组件之一是Selenium WebDriver&#xff0c;它提供客户端库&#xff0c;JSON有线协议&#xff08;与浏览器驱动程序进行通信的协议&#xff09;和浏览器驱动程序。 Sel…

算法二之树形选择排序

一、树形选择排序的基本思想 &#xff08;1&#xff09; 树形选择排序又称锦标赛排序&#xff08;Tournament Sort&#xff09;&#xff0c;是一种按照锦标赛的思想进行选择排序的方法。首先对n个记录的关键字进行两两比较&#xff0c;然后在n/2个较小者之间再进行两两比较&am…

计算机声卡型号价格,怎么查看电脑的声卡型号?查看声卡型号方法介绍

声卡是电脑上的硬件设施&#xff0c;任何电脑上的硬件都需要使用驱动使其运行&#xff0c;那么我们下载驱动的时候就会用到声卡型号&#xff0c;那么怎么查看电脑的声卡型号?下面小编就为大家详细介绍一下&#xff0c;一起来看看吧&#xff01;使用命令查看1、首先呢&#xff…

spring 配置只读事务_只读副本和Spring Data第1部分:配置数据库

spring 配置只读事务这是有关我们为利用只读副本来提高应用程序性能而寻求的一系列博客文章。 对于这个项目&#xff0c;我们的目标是建立我们的spring数据应用程序&#xff0c;并使用read仓库进行写操作&#xff0c;并基于read副本进行读操作。 为了模拟这种环境&#xff0c…

XML—— XSL 转换

【0】README 0.1&#xff09; 本文文字描述转自 core java volume 2 &#xff0c; 旨在理解 XML—— XSL 转换 的基础知识 &#xff1b; 0.2&#xff09;XSL 转换&#xff1a; XSL 转换&#xff08;eXtensible StyleSheet Language扩展样式表语言&#xff09; (for detailed…

算法三之堆排序

一、堆(Heap)定义 &#xff08;1&#xff09;n个关键字序列Kl&#xff0c;K2&#xff0c;…&#xff0c;Kn称为&#xff08;Heap&#xff09;&#xff0c;当且仅当该序列满足如下性质&#xff08;简称为堆性质&#xff09;&#xff1a; k(i)<k(2i&#xff09;且k(i)<k(2i…

计算机宏如何设置方法,excel 如何启用宏的方法,以及如何设置excel启用宏

如何启用宏呢&#xff1f;在进行如何启用宏讲解之前&#xff0c;先来认识&#xff0c;Excel几个其余宏相关的知识点。如果Excel工作簿中包含宏&#xff0c;则将在打开工作簿之前对其进行扫描&#xff0c;以检查是否存在已知病毒。Excel宏设置有四个选项&#xff0c;如下图所示&…

怎么清理句柄_JAR文件句柄:混乱后清理!

怎么清理句柄在Ultra ESB中&#xff0c;我们使用特殊的热交换类加载器 &#xff0c;该加载器使我们可以按需重新加载Java类。 这使我们能够从字面上热交换我们的部署单元 -加载&#xff0c;卸载&#xff0c;使用更新的类重新加载&#xff0c;以及正常地逐步退出-无需重启JVM。 …

XML——生成 XML 文档(读入 XML的反向过程)

【0】README 0.1&#xff09; 本文文字描述转自 core java volume 2 &#xff0c; 旨在理解 XML——生成 XML 文档&#xff08;读入 XML的反向过程&#xff09; 的基础知识 &#xff1b; 0.2&#xff09; for source code, please visit https://github.com/pacosonTang/core…

算法四之冒泡排序

一、冒泡排序&#xff08;Bubble Sort&#xff09;思想 &#xff08;1&#xff09;冒泡排序&#xff08;Bubble Sort&#xff09;&#xff0c;是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果他们的顺序错误…

java 使用sdk_使用SDKMAN管理多个Java SDK! 轻松

java 使用sdkSDKMAN&#xff01; 是用于管理多个软件开发套件的并行版本的便捷工具。 该工具对Java开发人员特别有用&#xff0c;因为它支持JVM的SDK&#xff0c;例如Java&#xff0c;Groovy&#xff0c;Scala&#xff0c;Kotlin和Ceylon。 还支持Gradle&#xff0c;Maven&…