---
title: "XML Schema 1.1 的新特性有哪些？"
date: "2016-03-21"
categories: 
  - "development"
  - "tools"
  - "xml"
tags: 
  - "altova-online-training"
  - "xml-schema"
  - "xml-schema-1-1"
  - "xmlspy"
description: 探索 XML Schema 1.1 中的关键改进，包括断言和条件类型替代方案，这些功能旨在提高 XML 开发中的灵活性和验证能力。
---
Status: #blog

Tags:  #altova-online-training #xml-schema #xml-schema-1-1 #xmlspy

Categories: [development](/blog/zh/category/development.md) | [xml](/blog/zh/category/xml.md)
# XML Schema 1.1 的新特性有哪些？

自 XML Schema 1.0 问世以来，该标准已被广泛采用。多年来，开发人员提出了许多改进建议，其中最重要的是能够指定和验证更细致的业务规则，以及允许灵活的模式演进。该标准在以下方面进行了诸多改进和增强： [XML Schema 1.1 规范建议](http://www.w3.org/TR/xmlschema11-1/) 旨在解决这些问题。

让我们来看看 XML Schema 1.1 中一些最值得关注的新功能，以及一些学习资源，帮助您更深入地了解它，或者立即开始使用。

![shutterstock_137938508](/blog/images/shutterstock_137938508.jpg)

<!--more-->

### 了解 XML Schema 1.1 的新特性

我们在免费的资料中，对 XML Schema 1.1 中新增和改进的功能进行了全面的解释 [在线 XML 模式培训课程](https://www.altova.com/zh/aot/online-training.html), 您可以随时访问并按照自己的节奏完成课程。如果您是一位经验丰富的模式开发人员，并且只是想了解XSD 1.1版本的新增和改进内容，可以直接跳到第9章。本课程是学习XML Schema 1.1的绝佳方式，可以帮助您快速了解新功能，并相应地调整您的模式。

 

![XML Schema 1.1 培训课程](/blog/images/xml-schema-1-1-training.png)

 

本文将介绍一些主要功能，并向您展示如何使用 XMLSpy 来实现这些新功能。XMLSpy 2014 及更高版本提供了对 XML Schema 1.1 的完整支持，包括基于 XML Schema 1.1 的 XSD 和 XML 实例文件的验证，以及图形界面中的智能 XSD 1.1 编辑工具 [XML Schema 1.1 编辑器](https://www.altova.com/zh/xmlspy/xml-schema-editor.html).

### 断言

XML Schema 1.1 中的断言（也称为约束条件）允许基于规则地验证涉及多个元素的业务策略。这些规则使用 XPath 表达式进行定义。例如，您可以使用新的 <assert> 元素来测试费用是否小于或等于允许的金额，日期是否在特定时间范围内，等等。在这个例子中，断言指定会议的结束时间必须大于开始时间。您可以在 XML Schema 的设计视图中看到以下表示：

![断言 - 图形化视图](https://lh6.ggpht.com/-0AwouJhf1UA/UtREYaoYlRI/AAAAAAAAAbQ/YtTI7Z7spJI/clip_image003_thumb.png?imgmax=800 "Assertions - Graphical View")

 

而在相应的代码中：

 

![XML Schema 1.1 约束条件](https://lh4.ggpht.com/-3cHGIZ4GF6U/UtREbHVLWOI/AAAAAAAAAbg/iFpwT04A808/clip_image004_thumb.png?imgmax=800 "XML Schema 1.1 Assertions")

 

使用“全局”视图可以轻松查看 XML Schema 1.1 文档中定义的各种断言。该视图提供了一个“断言”选项卡，您可以在这里添加新的断言，并选择 XPath 的默认命名空间。

 

![添加断言](https://lh5.ggpht.com/-p3B5JogWx24/UtREdQH_lkI/AAAAAAAAAbw/XZobzGyHc-M/clip_image005_thumb.png?imgmax=800 "Adding assertions")

 

或者，您可以在内容模型视图中定义这些约束。方法是，在内容模型视图中右键单击一个元素，然后选择“添加子约束”。您可以通过“详细信息”辅助窗口，直接在内容模型中定义 XPath 测试。

 

![断言对话](https://lh4.ggpht.com/-oKQlRSmEUjs/UtREfY8OlJI/AAAAAAAAAb8/4S0voU3k5B0/clip_image006_thumb.png?imgmax=800 "Assertion dialog")

 

这种定义和验证业务规则的能力是 XML Schema 1.1 的一个重要优势，而这种图形化视图可以帮助您更好地理解和完成这个过程。

### 条件句的替代表达方式

条件类型替代方案是另一个旨在增强XSD功能的特性，它通过增加内置的灵活性来实现。这些方案允许根据XML实例文档中的属性值，动态地将特定类型分配给一个元素。`xs:alternative`元素有两个属性：`type`和`test`。以下是一个使用我们之前使用的“会议”模式的示例。

 

![条件类型替代方案](https://lh3.ggpht.com/-iPc-_0cC1f4/UtREhR6JsxI/AAAAAAAAAcM/u0exmkn1Pk0/image_thumb.png?imgmax=800 "Conditional type alternative")

 

如果会议结束时间在中午之前，则会议类型为“上午会议”（MorningMeeting）。如果会议结束时间在中午之后，则为“下午会议”（AfternoonMeeting）。为了在...中定义这一点， [XML 模式设计器](https://www.altova.com/zh/xmlspy/xml-schema-editor.html), 我们只需右键单击“会议”元素，然后选择“添加子元素/备选元素”。使用“详细信息”输入辅助工具，输入一个 XPath 表达式，然后从下拉菜单中选择一个类型，该类型将动态地分配给该元素。

 

![XSD 1.1 条件类型替代方案](https://lh4.ggpht.com/--KlKrmowu-M/UtREis-NKcI/AAAAAAAAAcc/vECoVx9djRY/clip_image007_thumb.png?imgmax=800 "XSD 1.1 conditional type alternative")

 

现在，在 XML 实例中，任何“会议”（Meeting）元素，如果其结束时间在 12:00:00 之后，将使用“下午会议”（AfternoonMeeting）类型。使用图形化的 [XSD 编辑器](https://www.altova.com/zh/xmlspy/xsd-editor.html) 可以轻松地可视化和配置这些关系。

### 整个模式的属性

XML Schema 1.1 允许您定义一组默认属性，这些属性会自动应用于 schema 中所有复杂类型。例如，在我们的“会议”schema 中，将属性 startTime 和 endTime 应用于所有元素，而无需手动添加，这非常有用。手动添加既繁琐，而且容易出错，尤其是在包含大量元素的 schema 中。XML Schema 1.1 中的 xs:schema 元素包含一个可选的 defaultAttributes 元素，用于标识一个属性组。 (如果您希望在某些特定元素中不应用默认属性，可以使用 defaultAttributesApply="false" 来指定。) 您可以在 XML Schema 编辑器的“全局”视图中轻松添加一个属性组，并在其中定义默认属性。

 

![整个模式的属性](https://lh5.ggpht.com/-kCqG7vqfWx8/UtREj-x9iMI/AAAAAAAAAcs/6cq-TJtaOG8/clip_image008_thumb.png?imgmax=800 "Schema-wide attributes")

 

然后，通过“模式设计”菜单访问“模式设置”对话框，从中选择您刚刚创建的属性组，将其作为默认属性。您可以通过下拉列表进行选择。

 

![选择属性组](https://lh3.ggpht.com/-DjkS3RvyNDk/UtRElO-eQoI/AAAAAAAAAc8/Z3L23X4_hz4/clip_image009_thumb.png?imgmax=800 "Selecting an attribute group")

 

以下是一些XML Schema 1.1版本所提供的主要更新。其他更新包括可继承的属性、增强的替换组功能、以及`xs:error`数据类型等。这些内容都将在本书的第九章中详细介绍，并附有实际应用示例文件 [XML 模式在线培训](https://www.altova.com/zh/aot/online-training.html) 课程。

### 更多资源和工具：

> [XML Schema 1.1 Recommendation](http://www.w3.org/XML/Schema) XMLSpy [XML Schema 1.1 Editor](https://www.altova.com/zh/xmlspy/xml-schema-editor.html) and [validator](https://www.altova.com/zh/xmlspy/xml-validator.html) RaptorXML [XML Schema 1.1 Validation Server](https://www.altova.com/zh/raptorxml.html) Free Online [XML Schema 1.1 Training](https://www.altova.com/zh/aot/online-training.html)
