博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XML初步认识 自己的读书笔记 为了日后复习 w3school
阅读量:5742 次
发布时间:2019-06-18

本文共 3916 字,大约阅读时间需要 13 分钟。

什么是 XML?

? XML 指可扩展标记语言(EXtensible Markup Language)

? XML 是一种标记语言,很类似 HTML

? XML 的设计宗旨是传输数据,而非显示数据

? XML 标签没有被预定义。您需要自行定义标签。

? XML 被设计为具有自我描述性。

? XML 是 W3C 的推荐标准

XML 不是对 HTML 的替代

XML 是对 HTML 的补充。

XML 不会替代 HTML,理解这一点很重要。在大多数 web 应用程序中,XML 用于传输数据,而 HTML 用于格式化并显示数据。

对 XML 最好的描述是:

XML 是独立于软件和硬件的信息传输工具。

XML 属性必须加引号

属性值必须被引号包围,不过单引号和双引号均可使用。

避免 XML 属性?

因使用属性而引起的一些问题:

? 属性无法包含多重的值(元素可以)

? 属性无法描述树结构(元素可以)

? 属性不易扩展(为未来的变化)

? 属性难以阅读和维护

请尽量使用元素来描述数据。而仅仅使用属性来提供与数据无关的信息。

在此我们极力向您传递的理念是:元数据(有关数据的数据)应当存储为属性,而数据本身应当存储为元素

XML Schema 

XML Schema 是基于 XML 的 DTD 替代者。

XML Schema 描述 XML 文档的结构。

XML Schema 是 DTD 的继任者

我们认为 XML Schema 很快会在大部分网络应用程序中取代 DTD。

理由如下:

? XML Schema 可针对未来的需求进行扩展

? XML Schema 更完善,功能更强大

? XML Schema 基于 XML 编写

? XML Schema 支持数据类型

? XML Schema 支持命名空间XML Schema 最重要的能力之一就是对数据类型的支持。

XML Schema 最重要的能力之一就是对数据类型的支持

通过对数据类型的支持:

o 可更容易地描述允许的文档内容

o 可更容易地验证数据的正确性

o 可更容易地与来自数据库的数据一并工作

o 可更容易地定义数据约束(data facets)

o 可更容易地定义数据模型(或称数据格式)

可更容易地在不同的数据类型间转换数据

定义简易元素

定义简易元素的语法:

<xs:element name="xxx" type="yyy"/>

此处 xxx 指元素的名称,yyy 指元素的数据类型。XML Schema 拥有很多内建的数据类型。

简易元素无法拥有属性。假如某个元素拥有属性,它就会被当作某种复合类型。但是属性本身总是作为简易类型被声明的。

如何声明属性?

定义属性的语法是:

<xs:attribute name="xxx" type="yyy"/>

在此处,xxx 指属性名称,yyy 则规定属性的数据类型。XML Schema 拥有很多内建的数据类型。

实例

这是带有属性的 XML 元素:

<lastname lang="EN">Smith</lastname>

这是对应的属性定义:

<xs:attribute name="lang" type="xs:string"/>

数据类型的限定

限定 描述

enumeration 定义可接受值的一个列表

fractionDigits 定义所允许的最大的小数位数。必须大于等于0。

length 定义所允许的字符或者列表项目的精确数目。必须大于或等于0。

maxExclusive 定义数值的上限。所允许的值必须小于此值。

maxInclusive 定义数值的上限。所允许的值必须小于或等于此值。

maxLength 定义所允许的字符或者列表项目的最大数目。必须大于或等于0。

minExclusive 定义数值的下限。所允许的值必需大于此值。

minInclusive 定义数值的下限。所允许的值必需大于或等于此值。

minLength 定义所允许的字符或者列表项目的最小数目。必须大于或等于0。

pattern 定义可接受的字符的精确序列。

totalDigits 定义所允许的阿拉伯数字的精确位数。必须大于0。

whiteSpace 定义空白字符(换行、回车、空格以及制表符)的处理方式。

什么是复合元素?

复合元素指包含其他元素及/或属性的 XML 元素。

有四种类型的复合元素:

空元素

包含其他元素的元素

仅包含文本的元素

包含元素和文本的元素

注释:上述元素均可包含属性!

在 XML Schema 中,我们有两种方式来定义复合元素:

1. 通过命名此元素,可直接对"employee"元素进行声明,就像这样:

<xs:element name="employee">

  <xs:complexType>

    <xs:sequence>

      <xs:element name="firstname" type="xs:string"/>

      <xs:element name="lastname" type="xs:string"/>

    </xs:sequence>

  </xs:complexType>

</xs:element>

假如您使用上面所描述的方法,那么仅有 "employee" 可使用所规定的复合类型。请注意其子元素,"firstname" 以及 "lastname",被包围在指示器 <sequence>中。这意味着子元素必须以它们被声明的次序出现。您会在 XSD 指示器 这一节学习更多有关指示器的知识。

2. "employee" 元素可以使用 type 属性,这个属性的作用是引用要使用的复合类型的名称:

<xs:element name="employee" type="personinfo"/>

<xs:complexType name="personinfo">

  <xs:sequence>

    <xs:element name="firstname" type="xs:string"/>

    <xs:element name="lastname" type="xs:string"/>

  </xs:sequence>

</xs:complexType>

如果您使用了上面所描述的方法,那么若干元素均可以使用相同的复合类型,比如这样:

<xs:element name="employee" type="personinfo"/>

<xs:element name="student" type="personinfo"/>

<xs:element name="member" type="personinfo"/>

<xs:complexType name="personinfo">

  <xs:sequence>

    <xs:element name="firstname" type="xs:string"/>

    <xs:element name="lastname" type="xs:string"/>

  </xs:sequence>

</xs:complexType>

指示器

有七种指示器:

Order 指示器:

  • All
  • Choice
  • Sequence

Occurrence 指示器:

  • maxOccurs
  • minOccurs

Group 指示器:

  • Group name
  • attributeGroup name

    All 指示器

    <all> 指示器规定子元素可以按照任意顺序出现,且每个子元素必须只出现一次:

    Choice 指示器

    <choice> 指示器规定可出现某个子元素或者可出现另外一个子元素(非此即彼)

    Sequence 指示器

    <sequence> 规定子元素必须按照特定的顺序出现:

    Occurrence 指示器

    Occurrence 指示器用于定义某个元素出现的频率。

    注释:对于所有的 "Order" 和 "Group" 指示器(any、all、choice、sequence、group name 以及 group reference),其中的 maxOccurs 以及 minOccurs 的默认值均为 1

    maxOccurs 指示器

    <maxOccurs> 指示器可规定某个元素可出现的最大次数:

    Group 指示器

    Group 指示器用于定义相关的数批元素。

    属性组

    属性组通过 attributeGroup 声明来进行定义:

    XSD <any> 元素

    <any> 元素使我们有能力通过未被 schema 规定的元素来拓展 XML 文档!

    XSD 元素替换(Element Substitution)

    通过 XML Schema,一个元素可对另一个元素进行替换。

    元素替换

    让我们举例说明:我们的用户来自英国和挪威。我们希望有能力让用户选择在 XML 文档中使用挪威语的元素名称还是英语的元素名称。

    为了解决这个问题,我们可以在 XML schema 中定义一个 substitutionGroup。首先,我们声明主元素,然后我们会声明次元素,这些次元素可声明它们能够替换主元素。

    在上面的例子中,"name" 元素是主元素,而 "navn" 元素可替代 "name" 元素。

    用 substitutionGroup

    可替换元素的类型必须和主元素相同,或者从主元素衍生而来。假如可替换元素的类型与主元素的类型相同,那么您就不必规定可替换元素的类型了。

    阻止元素替换

    为防止其他的元素替换某个指定的元素,请使用 block 属性:

转载地址:http://pzizx.baihongyu.com/

你可能感兴趣的文章
underscore.js学习笔记
查看>>
windows下常用命令
查看>>
1.5编程基础之循环控制_29:数字反转
查看>>
组策略 之 设备安装设置
查看>>
人工智能还能干这些?这8种AI应用你可能意想不到
查看>>
实现Hyper-V 虚拟机在不同架构的处理器间迁移
查看>>
简单使用saltstack
查看>>
针对web服务器容灾自动切换方案
查看>>
突破媒体转码效率壁垒 阿里云首推倍速转码
查看>>
容器存储中那些潜在的挑战和机遇
查看>>
R语言的三种聚类方法
查看>>
55%受访企业将物联网战略视为有效竞争手段
查看>>
深入理解Python中的ThreadLocal变量(上)
查看>>
如果一切即服务,为什么需要数据中心?
查看>>
《游戏开发物理学(第2版)》一导读
查看>>
Erlang简史(翻译)
查看>>
深入实践Spring Boot2.4.2 节点和关系实体建模
查看>>
信息可视化的经典案例:伦敦地铁线路图
查看>>
10个巨大的科学难题需要大数据解决方案
查看>>
Setting Up a Kerberos server (with Debian/Ubuntu)
查看>>