XML
XMLストリームは、XMLを扱うためのストリームです。
ストリームプロパティ
プロパティ名 | 値 | XML宣言に記述するDTDのシステム識別子 | DOCTYPE宣言として記述するシステム識別子(SystemId)を指定します。 ※外部から読み込んだXMLに既にDOCTYPE宣言がついていた場合、ここで指定した値で置換します。 |
||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
外部エンティティを読み込む | 外部エンティティを読み込むかどうかを指定します。外部参照については、下記「外部参照」を参照してください。
|
||||||||||||
DTDによる妥当性を検証 | DTDによる妥当性を検証するどうかを指定します。外部参照については、下記「外部参照」を参照してください。
|
||||||||||||
出力エンコーディング |
ストリームのエンコーディングを指定します。XMLにエンコーディングが記述されているので、外部からストリームを読み込む場合、実際のエンコーディングと異なっていても構いません。
|
||||||||||||
改行コード | XML内の改行コードを指定します。 ※CRを指定することはできません。
|
||||||||||||
出力時の整形処理 | 出力時の整形処理を指定します。
|
||||||||||||
出力時にXML宣言を記述する | 出力時にXML宣言を記述するどうかを指定します。
|
||||||||||||
空要素タグを使用する | 空要素の出力に空要素タグを使用するかどうかを指定します。
|
||||||||||||
名前空間 | 名前空間を指定します。指定方法は下記「名前空間プロパティ」を参照してください。 |
名前空間プロパティ
フィールド定義で、要素名、属性名にPrefix付きの名前を使用する場合、そのPrefixを名前空間プロパティで指定する必要があります。指定が無い場合、エラーが発生します。
デフォルトネームスペースを使用する場合、Prefixフィールドに「#default」を入力します。
名前空間を指定するには、以下の手順で行います。
外部参照
DTDやエンティティの外部参照が相対的なURIとして記述されている場合、システム標準のDTDフォルダーを起点にします。システム標準のDTDフォルダーとは、初期値では[DATA_DIR]/system/schemaです。
例
以下のようなDOCTYPE宣言を持つXMLを検証するためには、上記のシステム標準のDTDフォルダーにtest.dtdを置く必要があります。
<!DOCTYPE test SYSTEM "test.dtd">
フィールド定義
フィールド名、データ型、繰り返し、ノードタイプ、表示名を定義します。
フィールド名 | 要素名または属性名を指定します。 |
---|---|
データ型 | String、Boolean、Integer、Double、Decimal、DateTimeのいずれか。Binaryは指定できません。 |
繰り返し | 要素が繰り返すかどうか指定します。最上位の要素と属性には繰り返しを指定できません。また、同じ階層に同じ名前の要素を複数定義した場合、その要素に繰り返しを指定きません。 |
ノードタイプ | 要素または属性を選択します。 |
表示名 | マッパーでの表示名を指定します。フィールド名である要素名、属性名がわかりにくい場合、マッピングウィンドウで参照するフィールド名を表示名で表示することにより、わかりやすくマッピングを行うことができます。 |
フィールドの階層を移動するには、移動したいフィールドを選択し、右クリックして表示されるメニューから「下の枝に移動」「上の枝に移動」をクリックします。
注意
XMLのフィールド定義はXMLの階層構造をそのままに表現しています。以下の点に注意してください。
- 最上位の要素は1つのみ。
- 同じ階層に同じ名前の要素を定義できます。
- 同じ階層に同じ名前の属性は定義できません。
- 同じ階層に同じ名前の要素を複数定義した場合、「繰り返し」フィールドを「あり」に指定できません。
フィールド名
フィールド名はルートからのXPath形式となります。同じ階層に同じ名前の要素が複数ある場合はインデックスがつけられます。
XMLフィールド定義の例
名前 | 繰り返し | ノードタイプ | フィールド名 ※1 |
---|---|---|---|
root | なし | 要素 | /root |
record | あり | 要素 | /root/record |
attr1 | なし | 属性 | /root/record/@attr1 |
element1 | なし | 要素 | /root/record/element1[1] |
element1 | なし | 要素 | /root/record/element1[2] |
element2 | なし | 要素 | /root/record/element2 |
x:element3 ※2 | あり | 要素 | /root/record/element2/x:element3 |
※1 実際にはこのフィールド名をユーザーが直接使用することはありません。
※2 Prefix「x」に対して何らかのNamespaceURIが定義されているものとします。
注意
名前に利用できる文字列として以下の条件があります。
!\"#$%&'()=~^|\\@`+*;:{}[],.<>/?\tおよび半角空白を除く文字が使用可能
- 名前の長さには制限なし
- 英字の大文字と小文字は区別される
- 日本語は使用可能
- 全角数字などのXMLの要素名、属性名として許可されていない文字は使用不可
フィールドの値
フィールドの値は、「ノードタイプ」が要素の場合は要素内容、属性の場合は属性値です。フィールド定義に該当する要素または属性がない場合はnullとなります。子要素を持つ要素のフィールド値は、要素のテキスト部分が連結された文字列になります。
以下のようなXMLの場合、要素の値は「abcdefghi」になります。
<p> abc <a href=”http://foo.bar/”> def </a> ghi </p>
レコード数
ストリームのレコード数は、繰返し可能な要素によって以下のように決まります。
- フィールド定義中に繰返し可能要素が1つもない場合、レコード数は1になります。
- 繰返し可能要素が一つだけある場合、レコード数はその要素の繰り返し回数になります。
- 繰返し可能要素が階層関係を持たずに複数ある場合、レコード数はそれぞれの要素数の直積になります。
- 繰返し可能要素が階層関係を持って複数ある場合は、それぞれの繰返し可能な要素のレコード数は下位のレコード数となり、全体のレコード数はその総和となります。ただし、マッパーではマッピングに使用されているフィールドだけでフィールド定義が再構成されるので、ストリームのレコード数とマッパーで使用されるレコード数が異なる場合があります。
空のストリーム
XMLストリームの空のストリームは以下のXMLとなります。
<?xml version="1.0" encoding="utf-8"?> <root/>