目次へ

1.3 schema要素

XML Schemaのルート要素は、schema要素です。schema要素内のコンテンツでは、以下のものを定義します。

image

型定義

要素の内容や、属性値等のデータ型の定義を行う

要素宣言

要素宣言を行う

属性宣言

属性の宣言を行う
属性グループ定義 属性型宣言をグループにして、定義したもの。モジュール化して再利用することを目的としている

モデルグループ定義

子供要素の出現回数や出現順、子供要素のデータ型など、要素の内容をグループにして定義したもの。モジュール化して再利用することを目的としている

記法宣言

記法の宣言を行う

コメント

文書をわかりやすくするために挿入する注釈

例えば、8.2で示したスキーマ、PO1では、element要素で、要素宣言をしています。また、complexType要素およびsimpleType要素で型定義をしています。さらに、annotation要素がコメントになります。

schema要素の子供要素で宣言・定義されるものには、それぞれ名前があるものがあります。例えば、要素宣言で宣言されている要素には要素名が、型定義で定義されている型には、型の名前があります。そして、それらの名前は、すべて「Target Namespace」に属しています。 Target Namespaceは、schema要素の属性です。以下に例を示します。

image

以上の例は、8.2で示したスキーマ、PO1のNamespaceを図に表したものです。まず、ルート要素であるschema要素のTargetNamespace属性値にURI 「http://www. example.com/PO1」が設定されています。これにより、このschema要素内の「名前」はすべて、「http://www.example.com/PO1」という名前のNamespaceに属していることになります。 注意しなければいけないのは、URI 「http://www.example.com/PO1」は、言語のスキーマを定義している、XML schemaファイルの場所を表しているわけではない、ということです。これは、「日本語」「英語」のように、XML文書が「http://www.example.com/PO1」という名前の言語でかかれていることを示しています。

上の図は、Namespaceの区分も表しています。例えば、上記図の濃い緑色の部分に含まれている4つの名前、「purcahseOrder」要素、「ZIP」型、「USAddress」型、「PurchaseOrderType」型は、schema要素の直下の子供要素で指定されている名前です。これらはGlobal Nameと呼ばれます。Global Nameは他の「言語」で記述されたXML文書より参照可能です。対して、PurchaseOrderTypeの下の四角や、USAddressの下の四角の中に区分されている名前はLocalNameと呼ばれます。Local Nameは、他の言語で記述された言語から直接参照することはできません。そのかわり、例えば、PurchaseOrderType内とUSAddress内で、別のデータ型で同じ名前の要素を定義することが可能です。XML Schemaにおける、Namespaceの取り扱いに関して、詳細なことは、後ほど説明します。

その他、schema要素の属性の意味について、以下に記します。

version 本スキーマのバージョン
xml:lang 本スキーマの記述言語
targetNamespace スキーマを記述するNamespaceのURI
elementFormDefault Localに属する要素に関して、XML文書中にNamespaceを明示的に記述する必要があるかどうか、指定する属性。
attributeFormDefault Localに属する属性に関して、XML文書中にNamespaceを明示的に記述する必要があるかどうか、指定する属性。
blockDefault

既存の型を拡張および制限して、新たな型を作成した場合に、それを既存の型の代わりとして、使用していいか、決定するもの。

finalDefault 既存の型を拡張および制限して、新たな型を作成できるかどうか、指定するもの。
id XML1.0におけるID型属性

さらに、ひとつの言語のスキーマを複数のファイルに分割することができます。以下に例を示します。

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 targetNamespace="http://www.example.com/IPO">
<include schemaLocation="http://www.example.com/schemas/address.xsd>
</xsd:schema> 

ipo.xsd

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 targetNamespace="http://www.example.com/IPO">
...
</xsd:schema> 

address.xsd

以上の例では、スキーマを定義しているファイルが2つ存在しています。つまり、schema要素が2つ、存在します。2つのschema要素のtargetNamespace属性の値を確認してください。両方とも、同じURI「http://www.example.com/IPO」を示しています。

1.4 まとめ

  • DTDには、Namespaceに対応していない、データ型が貧弱、XMLの構文に従っていない、などの問題がある
  • XML SchemaはXMLの究極のスキーマ言語として、W3Cより勧告されたスキーマ言語
  • XML Schemaのルート要素はschema要素
  • schema要素の内容では、要素、属性、記法の宣言、型の定義、モデルグループの定義、属性グループの定義をおこなう
  • schema要素の属性では、Namespaceや、派生する型に関する情報を定義する。

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp