---
title: "XMLスキーマ1.1の主な変更点"
date: "2016-03-21"
categories: 
  - "development"
  - "tools"
  - "xml"
tags: 
  - "altova-online-training"
  - "xml-schema"
  - "xml-schema-1-1"
  - "xmlspy"
description: XMLスキーマ1.1における主要な改良点について解説します。具体的には、アサーションや条件付きの型代替など、XML開発における柔軟性と検証機能を向上させるための機能について説明します。
---
Status: #blog

Tags:  #altova-online-training #xml-schema #xml-schema-1-1 #xmlspy

Categories: [development](/blog/ja/category/development.md) | [xml](/blog/ja/category/xml.md)
# XMLスキーマ1.1の主な変更点

XML Schema 1.0が導入されて以来、この標準は広く採用されています。長年にわたり、開発者からはいくつかの変更要望が寄せられており、特に、より詳細なビジネスルールを定義・検証できる機能や、柔軟なスキーマの進化を可能にする機能が求められてきました。これらの課題に対応するため、[XML Schema 1.1 Recommendation](http://www.w3.org/TR/xmlschema11-1/)には、数多くの変更点と改善が盛り込まれています。

XML Schema 1.1の最新機能で特に注目すべき点と、さらに詳しく学ぶための情報源、またはすぐに使い始めるためのリソースをご紹介します。

![shutterstock_137938508](/blog/images/shutterstock_137938508.jpg)

<!--more-->

### XMLスキーマ1.1の最新情報を学びましょう

XML Schema 1.1 の新機能および改善点について、詳細な解説が弊社の無料提供資料に掲載されています [オンラインでのXMLスキーマに関するトレーニングコース](https://www.altova.com/ja/aot/online-training.html), いつでもアクセスでき、ご自身のペースで学習を進めることができます。もしあなたがすでにXMLスキーマの開発に慣れており、XSD 1.1で新たに導入された機能や改善点について知りたいだけであれば、9章へ直接進んでください。このコースは、XMLスキーマ1.1について学ぶための優れた方法であり、新しい機能を活用するために、迅速に既存のスキーマを調整することができます。

 

![XMLスキーマ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スキーマ1.1 エディタ](https://www.altova.com/ja/xmlspy/xml-schema-editor.html).

### 主張

XML Schema 1.1におけるアサーション（co-constraintとも呼ばれます）は、複数の要素に関わるビジネスルールに基づいた検証を可能にします。これらのルールは、XPath式を使用して定義されます。例えば、新しい<assert>要素を使用して、経費が許可された金額以下であるか、日付が特定の期間内にあるかなどを検証できます。この例では、アサーションは、会議の終了時間が開始時間よりも大きいことを指定しています。この内容は、XML Schemaのデザインビューで以下のように表現されます

![アサーション - グラフ表示](https://lh6.ggpht.com/-0AwouJhf1UA/UtREYaoYlRI/AAAAAAAAAbQ/YtTI7Z7spJI/clip_image003_thumb.png?imgmax=800 "Assertions - Graphical View")

 

そして、それに対応するコードでは：

 

![XMLスキーマ1.1におけるアサーション（制約）](https://lh4.ggpht.com/-3cHGIZ4GF6U/UtREbHVLWOI/AAAAAAAAAbg/iFpwT04A808/clip_image004_thumb.png?imgmax=800 "XML Schema 1.1 Assertions")

 

XMLスキーマ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`という2つの属性があります。以下に、先ほど使用した会議のスキーマを使った例を示します。

 

![条件分岐の代替手段](https://lh3.ggpht.com/-iPc-_0cC1f4/UtREhR6JsxI/AAAAAAAAAcM/u0exmkn1Pk0/image_thumb.png?imgmax=800 "Conditional type alternative")

 

会議の終了時間が正午より前であれば、会議の種類は「午前会議」です。正午以降であれば、「午後会議」となります。これをプログラムで定義するには、以下のようになります [XMLスキーマ設計ツール](https://www.altova.com/ja/xmlspy/xml-schema-editor.html), 単に「Meeting」要素を右クリックし、「子要素の追加」または「代替要素の追加」を選択します。詳細エントリヘルパーを使用して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以降の場合、自動的に「MeetingType AfternoonMeeting」が適用されます。 グラフィカルな[XSDエディタ](https://www.altova.com/ja/xmlspy/xsd-editor.html)を使用することで、これらの関係性を視覚的に把握し、設定することが容易になります。

### スキーマ全体の属性

XML Schema 1.1では、スキーマ内のすべての複合型に自動的に適用される一連のデフォルト属性を定義できます。例えば、当社の会議スキーマでは、開始時間（startTime）と終了時間（endTime）の属性を、すべての要素に手動で追加することなく適用できるようにすると便利です。手動での追加は手間がかかり、特に要素数が多くのスキーマでは、エラーが発生する可能性もあります。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 Schemaオンライン研修](https://www.altova.com/ja/aot/online-training.html)コースの第9章で、具体的な事例ファイルを用いて詳細に解説されています。

### 追加のリソースとツール：

> [XML Schema 1.1 Recommendation](http://www.w3.org/XML/Schema) XMLSpy [XML Schema 1.1 Editor](https://www.altova.com/ja/xmlspy/xml-schema-editor.html) and [validator](https://www.altova.com/ja/xmlspy/xml-validator.html) RaptorXML [XML Schema 1.1 Validation Server](https://www.altova.com/ja/raptorxml.html) Free Online [XML Schema 1.1 Training](https://www.altova.com/ja/aot/online-training.html)
