質問: CAPECのXMLデータを読み込むツールを作りたいのですが、XMLの知識が乏しいのと型数的に面倒なので、Xml Schemas/DataTypesサポートユーティリティを使ってスキーマからC#のクラスを自動生成しようとしています。 しかし、データ型`http://cybox.mitre.org/cybox-2:ObservablesType`が見つからないというエラーが出てクラスが生成されません。 > > D:\temp\capec_v2.8>xsd ap_schema_v2.7.1.xsd /classes > > Microsoft (R) Xml Schemas/DataTypes サポート ユーティリティ > > [Microsoft (R) .NET Framework, Version 4.6.1055.0] > > Copyright (C) Microsoft Corporation. All rights reserved. > > スキーマ検証警告: 型 '' は宣言されていません。 行572、位置 6 です。 > > スキーマ検証警告: 型 '' は宣言されていません。 行1628、位置 5 です。 > > スキーマ検証警告: 型 '' は宣言されていません。 行1599、位置 14 です。 > > スキーマ検証警告: 型 '' は宣言されていません。 行1600、位置 14 です。 > > スキーマ検証警告: 型 '' は宣言されていません。 行1560、位置 11 です。 > > スキーマ検証警告: 型 '' は宣言されていません。 行1524、位置 11 です。 > > スキーマ検証警告: 型 '' は宣言されていません。 行2213、位置 8 です。 > > スキーマ検証警告: 型 '' は宣言されていません。 行2148、位置 11 です。 > > スキーマ検証警告: 型 '' は宣言されていません。 行2120、位置 11 です。 > > スキーマ検証警告: 型 '' は宣言されていません。 行2092、位置 11 です。 > > > 警告: スキーマを検証できませんでした。クラスが生成できないか、または正しくない結果が生じる可能性があります。 > > > エラー: スキーマ 'ap_schema_v2_7_1' のクラスを生成中にエラーが発生しました。 > > - データ型 '' が見つかりません。 > > > さらにヘルプが必要な場合は、"xsd /?" を入力してください。 > > > `ap_schema_v2.7.1.xsd`からインポートしている`cybox_core.xsd`に`ObservablesType`が宣言されているように見えるのですが、何が問題なのでしょうか? ap_schema_v2.7.1.xsd: ``` ... ``` cybox_core.xsd: ``` The ObservablesType is a type representing a collection of cyber observables. ```
回答: 本家に同様の質問がありました。 * using xsd.exe to generate c# files, getting error and warnings - Stack Overflow これの回答を参考に、インポートしているXSDファイルを同フォルダーに置いてそれらのファイル名も指定すると、C#のクラスが生成されました。 ``` D:\temp\capec_v2.8>xsd /classes ap_schema_v2.7.1.xsd cybox_core.xsd cybox_common.xsd Microsoft (R) Xml Schemas/DataTypes サポート ユーティリティ [Microsoft (R) .NET Framework, Version 4.6.1055.0] Copyright (C) Microsoft Corporation. All rights reserved. ファイル 'D:\temp\capec_v2.8\ap_schema_v2_7_1_cybox_core_cybox_common.cs' に書き込んでいます。 ```