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