エックスエムエル‐スキーマ【XMLスキーマ】
XML スキーマ (XSD) [XML Schema (XSD)]
XML Schema
XML Schemaとは、構造化文書を記述するためのマークアップ言語について、その概容(スキーマ)を定義する言語であるスキーマ言語の中でも、XML文書の構造を定義する言語のことである。XML Schemaは2001年5月にW3Cによって勧告された。
XMLはマークアップ言語を作成するための言語(メタ言語)であり、それ自身では個々のタグの意味や関連性などが定義されていない。XMLを用いて実際に文書を作成するには、文書中で用いられるタグや属性がどのようなものであるのかを、具体的な構造として定義しなければならない。
XML Schema以前にXMLで用いられてきたスキーマ言語は、DTDと呼ばれる、XMLの母体となったSGML言語で用いられてきたスキーマ言語であった。しかし、DTDではデータ型が定義できなかったり、あるいはDTDの文法がXMLとは特に関係ないものであったりと、様々な点で困難が指摘されていた。その点、XML Schemaは、XMLと同じ文法を持っており(スキーマ自体がXMLで記述されているから)、またデータ型の定義や名前空間(XML名前空間)が扱えるなど、XMLの機能を最大限に引き出せるものになっている。
なお、XML Schemaと同様の技術にRELAXと呼ばれる仕様がある。RELAXは日本で開発されたもので、XML Schemaに劣らない記述性と構造のシンプルさをかね備えているといわれ、国際標準化機構(ISO)の標準となることを目指して普及活動が推進されている。
XmlSchema クラス
アセンブリ: System.Xml (system.xml.dll 内)
構文
解説
セキュリティに関するメモ |
---|
XmlSchema クラスを使用した結果として発生した例外 (XmlSchemaException クラスなど) には、信頼関係のないシナリオで公開されてはならないような機密情報が含まれている場合があります。たとえば、XmlSchemaException の SourceUri プロパティは、例外が発生する原因となったスキーマ ファイルへの URI パスを返します。信頼関係のないシナリオでは、SourceUri プロパティを公開しないでください。こういった機密情報が信頼関係のないシナリオで公開されてしまわないよう、例外は適切に処理する必要があります。 |
Option Explicit On Option Strict On Imports System Imports System.Xml Imports System.Xml.Schema Class XMLSchemaExamples Public Shared Sub Main() Dim schema As New XmlSchema() ' <xs:element name="cat" type="xs:string"/> Dim elementCat As New XmlSchemaElement() schema.Items.Add(elementCat) elementCat.Name = "cat" elementCat.SchemaTypeName = New XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema") ' <xs:element name="dog" type="xs:string"/> Dim elementDog As New XmlSchemaElement() schema.Items.Add(elementDog) elementDog.Name = "dog" elementDog.SchemaTypeName = New XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema") ' <xs:element name="redDog" substitutionGroup="dog" /> Dim elementRedDog As New XmlSchemaElement() schema.Items.Add(elementRedDog) elementRedDog.Name = "redDog" elementRedDog.SubstitutionGroup = New XmlQualifiedName("dog") ' <xs:element name="brownDog" substitutionGroup ="dog" /> Dim elementBrownDog As New XmlSchemaElement() schema.Items.Add(elementBrownDog) elementBrownDog.Name = "brownDog" elementBrownDog.SubstitutionGroup = New XmlQualifiedName("dog") ' <xs:element name="pets"> Dim elementPets As New XmlSchemaElement() schema.Items.Add(elementPets) elementPets.Name = "pets" ' <xs:complexType> Dim complexType As New XmlSchemaComplexType() elementPets.SchemaType = complexType ' <xs:choice minOccurs="0" maxOccurs="unbounded"> Dim choice As New XmlSchemaChoice() complexType.Particle = choice choice.MinOccurs = 0 choice.MaxOccursString = "unbounded" ' <xs:element ref="cat"/> Dim catRef As New XmlSchemaElement() choice.Items.Add(catRef) catRef.RefName = New XmlQualifiedName("cat") ' <xs:element ref="dog"/> Dim dogRef As New XmlSchemaElement() choice.Items.Add(dogRef) dogRef.RefName = New XmlQualifiedName("dog") Dim schemaSet As New XmlSchemaSet() AddHandler schemaSet.ValidationEventHandler, AddressOf ValidationCallbackOne schemaSet.Add(schema) schemaSet.Compile() Dim compiledSchema As XmlSchema = Nothing For Each schema1 As XmlSchema In schemaSet.Schemas() compiledSchema = schema1 Next Dim nsmgr As New XmlNamespaceManager(New NameTable()) nsmgr.AddNamespace("xs", "http://www.w3.org/2001/XMLSchema") compiledSchema.Write(Console.Out, nsmgr) End Sub 'Main Public Shared Sub ValidationCallbackOne(ByVal sender As Object, ByVal args As ValidationEventArgs) Console.WriteLine(args.Message) End Sub 'ValidationCallbackOne End Class 'XMLSchemaExamples
using System; using System.Xml; using System.Xml.Schema; class XMLSchemaExamples { public static void Main() { XmlSchema schema = new XmlSchema(); // <xs:element name="cat" type="xs:string"/> XmlSchemaElement elementCat = new XmlSchemaElement(); schema.Items.Add(elementCat); elementCat.Name = "cat"; elementCat.SchemaTypeName = new XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema"); // <xs:element name="dog" type="xs:string"/> XmlSchemaElement elementDog = new XmlSchemaElement(); schema.Items.Add(elementDog); elementDog.Name = "dog"; elementDog.SchemaTypeName = new XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema"); // <xs:element name="redDog" substitutionGroup="dog" /> XmlSchemaElement elementRedDog = new XmlSchemaElement(); schema.Items.Add(elementRedDog); elementRedDog.Name = "redDog"; elementRedDog.SubstitutionGroup = new XmlQualifiedName("dog"); // <xs:element name="brownDog" substitutionGroup ="dog" /> XmlSchemaElement elementBrownDog = new XmlSchemaElement(); schema.Items.Add(elementBrownDog); elementBrownDog.Name = "brownDog"; elementBrownDog.SubstitutionGroup = new XmlQualifiedName("dog"); // <xs:element name="pets"> XmlSchemaElement elementPets = new XmlSchemaElement(); schema.Items.Add(elementPets); elementPets.Name = "pets"; // <xs:complexType> XmlSchemaComplexType complexType = new XmlSchemaComplexType(); elementPets.SchemaType = complexType; // <xs:choice minOccurs="0" maxOccurs="unbounded"> XmlSchemaChoice choice = new XmlSchemaChoice(); complexType.Particle = choice; choice.MinOccurs = 0; choice.MaxOccursString = "unbounded"; // <xs:element ref="cat"/> XmlSchemaElement catRef = new XmlSchemaElement(); choice.Items.Add(catRef); catRef.RefName = new XmlQualifiedName("cat"); // <xs:element ref="dog"/> XmlSchemaElement dogRef = new XmlSchemaElement(); choice.Items.Add(dogRef); dogRef.RefName = new XmlQualifiedName("dog"); XmlSchemaSet schemaSet = new XmlSchemaSet(); schemaSet.ValidationEventHandler += new ValidationEventHandler(ValidationCallbackOne); schemaSet.Add(schema); schemaSet.Compile(); XmlSchema compiledSchema = null; foreach (XmlSchema schema1 in schemaSet.Schemas()) { compiledSchema = schema1; } XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable()); nsmgr.AddNamespace("xs", "http://www.w3.org/2001/XMLSchema"); compiledSchema.Write(Console.Out, nsmgr); } public static void ValidationCallbackOne(object sender, ValidationEventArgs args) { Console.WriteLine(args.Message); } }
前述のコード例に対して生成される XML ファイルを次に示します。
<?xml version="1.0" encoding="IBM437"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="cat" type="xs:string"/> <xs:element name="dog" type="xs:string"/> <xs:element name="redDog" type="xs:string" substitutionGroup="dog"/> <xs:element name="brownDog" type="xs:string" substitutionGroup ="dog" /> <xs:element name="pets"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="cat"/> <xs:element ref="dog"/> </xs:choice> </xs:complexType> </xs:element> </xs:schema>
System.Xml.Schema.XmlSchemaObject
System.Xml.Schema.XmlSchema
プラットフォーム
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
XmlSchema コンストラクタ
アセンブリ: System.Xml (system.xml.dll 内)
構文
プラットフォーム
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
XmlSchema フィールド
XmlSchema プロパティ
パブリック プロパティ
名前 | 説明 | |
---|---|---|
LineNumber | schema 要素が参照するファイルの行番号を取得または設定します。 ( XmlSchemaObject から継承されます。) | |
LinePosition | schema 要素が参照するファイルの行番号を取得または設定します。 ( XmlSchemaObject から継承されます。) | |
Namespaces | このスキーマ オブジェクトと一緒に使用する XmlSerializerNamespaces を取得または設定します。 ( XmlSchemaObject から継承されます。) | |
Parent | この XmlSchemaObject の親を取得または設定します。 ( XmlSchemaObject から継承されます。) | |
SourceUri | スキーマを読み込んだファイルのソース位置を取得または設定します。 ( XmlSchemaObject から継承されます。) | |
Version | スキーマのバージョンを取得または設定します。 |
XmlSchema メソッド
パブリック メソッド
名前 | 説明 | |
---|---|---|
Compile | オーバーロードされます。 XML SOM (Schema Object Model) を検証用のスキーマ情報にコンパイルします。プログラムによって構築された SOM の構文および意味構造をチェックするために使用します。意味検証チェックは、コンパイル時に実行されます。 | |
Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。) | |
GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。) | |
GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) | |
Read | オーバーロードされます。 XML スキーマを読み込みます。 | |
ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) | |
ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) | |
Write | オーバーロードされます。 XML スキーマを書き込みます。 |
名前 | 説明 | |
---|---|---|
Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) | |
MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |
XmlSchema メンバ
W3C (World Wide Web Consortium) の『XML Schema Part 1: Structures』および『XML Schema Part 2: Datatypes』の仕様で指定されている XML スキーマのインメモリ表現です。
XmlSchema データ型で公開されるメンバを以下の表に示します。
パブリック コンストラクタ
パブリック フィールド
パブリック プロパティ
名前 | 説明 | |
---|---|---|
LineNumber | schema 要素が参照するファイルの行番号を取得または設定します。(XmlSchemaObject から継承されます。) | |
LinePosition | schema 要素が参照するファイルの行番号を取得または設定します。(XmlSchemaObject から継承されます。) | |
Namespaces | このスキーマ オブジェクトと一緒に使用する XmlSerializerNamespaces を取得または設定します。(XmlSchemaObject から継承されます。) | |
Parent | この XmlSchemaObject の親を取得または設定します。(XmlSchemaObject から継承されます。) | |
SourceUri | スキーマを読み込んだファイルのソース位置を取得または設定します。(XmlSchemaObject から継承されます。) | |
Version | スキーマのバージョンを取得または設定します。 |
名前 | 説明 | |
---|---|---|
Compile | オーバーロードされます。 XML SOM (Schema Object Model) を検証用のスキーマ情報にコンパイルします。プログラムによって構築された SOM の構文および意味構造をチェックするために使用します。意味検証チェックは、コンパイル時に実行されます。 | |
Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。) | |
GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。) | |
GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) | |
Read | オーバーロードされます。 XML スキーマを読み込みます。 | |
ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) | |
ToString | 現在の Object を表す String を返します。 (Object から継承されます。) | |
Write | オーバーロードされます。 XML スキーマを書き込みます。 |
名前 | 説明 | |
---|---|---|
Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) | |
MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |
XML Schema
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/08/05 19:25 UTC 版)
XML Schema(XMLスキーマ)は、XML文書の論理的構造を定義する為に開発されたスキーマ言語の一つ。現在、W3Cが開発・標準化にあたっている。
- 1 XML Schemaとは
- 2 XML Schemaの概要
スキーマ言語
(XML Schema から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/01/09 07:08 UTC 版)
スキーマ言語(スキーマげんご)はスキーマ記述を目的とするドメイン固有言語の総称である。すなわちXMLやSGMLの文書構造を定義することに特化した言語の総称である。スキーマ記述言語(英: schema description language, SDL)とも呼ばれる。
- ^ "allows us to talk about ... schemas in a language-agnostic way." GraphQL. Schemas and Types. 2023-01-01閲覧.
- 1 スキーマ言語とは
- 2 スキーマ言語の概要
- XML Schemaのページへのリンク