Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

XML の背景

この付録では、Caché %XML クラスを使用するユーザのための補足資料として、XML の用語や概念の概要を説明します。この付録は、読者が XML の基本的な構文に精通していることを前提にしており、XML の初級解説ではありません。例えば、構文や予約文字のリストについては説明しません。ただし、参考資料として、用語とその簡単な定義のリストを示します。

attribute

名前と値の組み合わせで、形式は以下のとおりです。

ID="QD5690"

以下に示すように、属性は要素内に存在し、要素には任意の数の属性を含めることができます。

<Patient ID="QD5690">Cromley,Marcia N.</Patient>
CDATA セクション

検証する必要のないテキストを、以下のように示します。

<myelementname><![CDATA[ 
Non-validated data goes here.  
You can even have stray "<" or ">" symbols in it. 
]]></myelementname>

CDATA (文字データ) セクションには文字列 ]]> を含めることはできません。これは、この文字列がセクションの終了を表すためです。つまり、CDATA セクションは入れ子にできないという意味もあります。

CDATA セクションの内容は、XML ドキュメントの残りの部分で指定されているように、XML ドキュメントに対して指定されているエンコードに従う必要があります。

comment

XML ドキュメントのメイン・データを構成しない、挿入されたメモ。コメントは、以下のようになります。

<!--Output for the class: GXML.PersonNS7-->

コンテンツ・モデル

XML 要素の利用可能なコンテンツに関する抽象的な説明です。利用可能なコンテンツ・モデルは、以下のとおりです。

  • 空のコンテンツ・モデル (子要素やテキスト・ノードは不許可)

  • 単純なコンテンツ・モデル (テキスト・ノードのみ許可)

  • 複雑なコンテンツ・モデル (子要素のみ許可)

  • 複合コンテンツ・モデル (子要素とテキスト・ノードの両方を許可)

いずれの場合も、要素は、属性を含んでいることも、含んでいないこともあります。コンテンツ・モデルは、要素内に属性があるかないかに言及するものではありません。

既定のネームスペース

任意のコンテキストで、未修飾の要素が属するネームスペース。既定のネームスペースは、接頭語を付けずに追加されます。以下はその例です。

<Person xmlns="http://www.person.org">
  <Name>Isaacs,Rob G.</Name>
  <DOB>1981-01-29</DOB>
</Person>

このネームスペースの宣言では接頭語を使用しないので、<Person><Name>、および <DOB> 要素はすべてこのネームスペースに属します。

以下の XML は既定のネームスペースを使用しないので、事実上前述の例と等しくなることに注意してください。

<s01:Person s01:xmlns="http://www.person.org">
  <s01:Name>Isaacs,Rob G.</s01:Name>
  <s01:DOB>1981-01-29</s01:DOB>
</s01:Person>
DOM

ドキュメント・オブジェクト・モデル (DOM) は XML と関連する形式を表すためのオブジェクト・モデルです。

DTD (ドキュメント・タイプの定義)

XML ドキュメントまたは外部ファイル内に含まれる、一連のテキスト指示文。ドキュメント内で使用できるすべての要素および属性を定義します。DTD 自体は XML 構文を使用しません。

element

要素は通常、2 つのタグ (開始タグと終了タグ) で構成され、テキストおよびその他の要素を囲む場合があります。要素のコンテンツは、これら 2 つのタグの間にあるすべてのもので、テキストや子要素 (存在する場合) が含まれます。以下は、開始タグ、テキスト・コンテンツ、および終了タグを含む完全な XML 要素です。

<Patient>Cromley,Marcia N.</Patient>

要素には、任意の数の属性および任意の数の子要素を含めることができます。

空白の要素には、開始タグと終了タグを含めるか、タグを 1 つだけ含めることができます。以下の例は同じものです。

<EndDate></EndDate>

<EndDate/>

実際には、以下のように要素はデータ・レコードの異なる部分を参照する傾向があります。

<Student level="undergraduate">
   <Name>Barnes,Gerry</Name>
   <DOB>1981-04-23</DOB>
</Student>
entity

1 つ以上の文字を表す (XML ファイル内の) テキストの単位です。エンティティの構造は以下のとおりです。

&characters;
グローバル要素

グローバル要素およびローカル要素の概念は、ネームスペースを使用するドキュメントに適用されます。グローバル要素の名前は、ローカル要素の名前とは別のシンボル・スペースに配置されます。グローバル要素は、タイプにグローバル・スコープを含む要素です。つまり、そのタイプが、対応する XML スキーマの最上位レベルで定義される要素です。<xs:schema> 要素の子として表示される要素宣言は、グローバル宣言と見なされます。ref 属性を通してグローバル宣言を参照することによって実質的にグローバル要素にしない限り、その他の要素宣言はローカル要素です。

属性も同様にグローバルまたはローカルになります。

ローカル要素

グローバルではない XML 要素。ローカル要素は、要素が修飾されない限り、明示的にどのネームスペースにも属しません。修飾およびグローバル要素を参照してください。

ネームスペース

ネームスペースは識別子のドメインを定義する一意の文字列であり、XML ベースのアプリケーションで異なるタイプのドキュメント同士が混同されることを防止します。一般的には、URL (ユニフォーム・リソース・ロケーション) の形式の URI (ユニフォーム・リソース・インジケータ) として指定されます。これは、実際の Web アドレスには対応する場合もしない場合もあります。例えば、"http://www.w3.org" はネームスペースです。

以下の構文のいずれかを使用して、ネームスペース宣言を含めます。

xmlns="your_namespace_here"
pre:xmlns="your_namespace_here"

いずれの場合も、ネームスペースはネームスペース宣言を挿入したコンテキスト内でのみ使用します。後者の場合、ネームスペースは指定された接頭語 (pre) に関連付けられます。要素または属性にこの接頭語が含まれる場合にのみ、その要素または属性はこのネームスペースに属します。以下はその例です。

<s01:Person xmlns:s01="http://www.person.com">
   <Name>Ravazzolo,Roberta X.</Name>
   <DOB>1943-10-24</DOB>
</s01:Person>

このネームスペース宣言では、s01 の接頭語を使用します。<Person> 要素もこの接頭語を使用するので、この要素はこのネームスペースに属します。ただし、<Name> 要素および <DOB> 要素は、明示的にどのネームスペースにも属しません。

処理命令 (PI)

XML ドキュメントの使用方法または XML ドキュメントを使用して実行する内容をアプリケーションに指示するための、(プロローグ内の) 命令。例は以下のとおりです。これは、スタイルシートとドキュメントを関連付けます。

<?xml-stylesheet type="text/css" href="mystyles.css"?>
プロローグ

XML ドキュメントのルート要素の前の部分。プロローグは XML 宣言 (使用される XML バージョンを示します) で始まり、次に処理命令および、DTD 宣言またはスキーマ宣言を含む場合があります (実際には、DTD もスキーマも不要です。また、実際には、同じファイルに両方を含めることもできます)。

ルート、ルート要素、ドキュメント要素

各 XML ドキュメントには、最も外側のレベルに要素を 1 つだけ含める必要があります。これは、ルート、ルート要素、またはドキュメント要素と呼ばれます。ルート要素はプロローグの後に位置します。

修飾

要素または属性がネームスペースに明示的に割り当てられる場合、その要素または属性は修飾されます。以下の例を考えてみます。ここでは、<Person> の要素および属性は修飾されていません。

<?xml version="1.0" encoding="UTF-8"?>
<Root>
   <s01:Person xmlns:s01="http://www.person.com" GroupID="J1151">
      <Name>Frost,Sally O.</Name>
      <DOB>1957-03-11</DOB>
   </s01:Person>
</Root>

ここでは、ネームスペース宣言で s01 の接頭語を使用します。既定のネームスペースはありません。<Person> 要素もこの接頭語を使用するので、この要素はこのネームスペースに属します。<Name> 要素および <DOB> 要素、または <GroupID> 属性には接頭語がないので、明示的にどのネームスペースにも属しません。

一方、以下の場合を考えてみます。ここでは、<Person> の要素および属性が修飾されています。

<?xml version="1.0" encoding="UTF-8"?>
<Root>
   <Person xmlns="http://www.person.com" GroupID="J1151">
      <Name>Frost,Sally O.</Name>
      <DOB>1957-03-11</DOB>
   </Person>
</Root>

この場合、<Person> 要素は既定のネームスペースを定義し、そのネームスペースは子要素および属性に適用されます。

Note:

XML スキーマ属性である elementFormDefault 属性と attributeFormDefault 属性は、要素と属性が指定されたスキーマで修飾されるかどうかを制御します。Caché XML サポートでは、クラス・パラメータを使用して要素が修飾されるかどうかを指定します。

スキーマ

DTD の代わりに、一連の XML ドキュメントのメタ情報を指定するドキュメント。DTD では、スキーマを使用して特定の XML ドキュメントのコンテンツを検証できます。XML スキーマは、以下のような特定の用途に対して、DTD を上回る利点がいくつかあります。

  • XML スキーマは、有効な XML ドキュメントであり、スキーマ上で操作するツールをより簡単に開発できます。

  • XML スキーマは、より豊富な一連の機能を指定でき、値の型情報を取り込みます。

形式的には、スキーマ・ドキュメントは W3 XML スキーマの仕様 (http://www.w3.org/XML/SchemaOpens in a new tab) に準拠する XML ドキュメントです。スキーマ・ドキュメントは、XML の規則に従っており、いくつかの追加構文を使用します。通常、ファイルの拡張子は .xsd です。

スタイル・シート

任意の XML ドキュメントを別の XML またはその他の “人間が読める” ドキュメントに変換する方法を説明する、XSLT で記述されたドキュメントです。

テキスト・ノード

開始要素とそれに対応する終了要素の間に含まれる 1 つ以上の文字。以下はその例です。

<SampleElement>
sample text node
</SampleElement>
type

データの解釈で課される制約。XML スキーマでは、各要素と属性の定義は、タイプに対応しています。

タイプは、単純複雑のいずれかです。

各属性には単純なタイプがあります。さらに、単純なタイプは、属性も子要素も持たない (テキスト・ノードのみを持つ) 要素を表します。複雑なタイプは、それ以外の要素を表します。

以下のスキーマのフラグメントは、タイプ定義をいくつか示しています。

<s:complexType name="Person">
    <s:sequence>
        <s:element name="Name" type="s:string" minOccurs="0" />
        <s:element name="DOB" type="s:date" minOccurs="0" />
        <s:element name="Address" type="s_Address" minOccurs="0" />
    </s:sequence>
    <s:attribute name="GroupID" type="s:string" />
</s:complexType>
<s:complexType name="s_Address">
    <s:sequence>
        <s:element name="City" type="s:string" minOccurs="0" />
        <s:element name="Zip" type="s:string" minOccurs="0" />
    </s:sequence>
</s:complexType>

未修飾

要素または属性がネームスペースに明示的に割り当てられない場合、その要素または属性は未修飾です。修飾を参照してください。

適格な XML

開始タグに一致する終了タグがあるなど、XML の規則に従う XML ドキュメントまたはフラグメント。

XML 宣言

任意のドキュメントで使用される XML のバージョン (およびオプションで文字セット) を示す文。これを含める場合は、ドキュメントの最初の行に置く必要があります。以下に例を示します。

<?xml version="1.0" encoding="UTF-8"?>

XPath

XPath (XML Path Language) は、XML ドキュメントからデータを取得するための XML ベースの式言語です。結果は、スカラまたは元のドキュメントの XML サブツリーのいずれかです。

XSLT

XSLT (Extensible Stylesheet Language Transformations) は XML ベースの言語であり、これを使用して指定の XML ドキュメントを別の XML ドキュメントまたは別の “人が読める形式の” ドキュメントに変換する方法を記述します。

FeedbackOpens in a new tab