推論の制限事項
各ドキュメントに含まれている XML 要素によっては、XML から DataSet のスキーマを推論するプロセスにより、異なるスキーマが生成される可能性があります。 たとえば、次のような XML ドキュメントがあるとします。
Document1:
<DocumentElement>
<Element1>Text1</Element1>
<Element1>Text2</Element1>
</DocumentElement>
Document2:
<DocumentElement>
<Element1>Text1</Element1>
</DocumentElement>
推論プロセスでは、"Document1" については、"DocumentElement" という名前の DataSet と "Element1" という名前のテーブルが作成されます。これは、"Element1" が繰り返し出現する要素であるためです。
DataSet: DocumentElement
テーブル: Element1
Element1_Text |
---|
Text1 |
Text2 |
これに対して、"Document2" については、"NewDataSet" という名前の DataSet と "DocumentElement" という名前のテーブルが推論プロセスで生成されます。この場合、属性も子要素も持たない "Element1" は列として推論されます。
DataSet: NewDataSet
テーブル: DocumentElement
Element1 |
---|
Text1 |
これらの 2 つの XML ドキュメントは、同じスキーマを生成することを意図して記述されていますが、推論プロセスでは、各ドキュメントに含まれる要素を基にまったく異なるスキーマが生成されてしまいます。
XML ドキュメントからスキーマを生成するときに生じる可能性のあるこのような矛盾を避けるため、XML から DataSet を読み込むときは、XSD (XML スキーマ定義言語) または XDR (XML-Data Reduced) を使用して、スキーマを明示的に指定することをお勧めします。 XML スキーマを使用して DataSet スキーマを明示的に指定する方法については、「XML スキーマ (XSD) からの DataSet リレーショナル構造の派生」を参照してください。