3

共有タイプを含む別の xsd に対してビルドされたメインの xsd があります (それらは同じディレクトリにあります)。

それがメインのヘッダーです:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
      xmlns:tns="XMLSchema_Module.xsd"
      xmlns:cs="XML_Common"
      targetNamespace="XMLSchema_Module.xsd"
      elementFormDefault="qualified">

  <xsd:import schemaLocation="XML_Common.xsd" namespace="XML_Common"/>

これは、共有タイプ one のヘッダーです。

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
      targetNamespace="XML_Common"
      elementFormDefault="qualified">

これは、メイン スキーマの属性で使用したい共有型の列挙です。

  <xsd:simpleType name="TypesType">
    <xsd:restriction base ="xsd:token">
      <xsd:enumeration value="int"/>

そして、ここにメインのものの参照があります:

 <xsd:attribute name="Type" type="cs:TypesType"/>

xsd.exe を使用してシリアル化クラスを生成しています (ビルド前のイベントとしてビルド プロセスに統合されています)。これらの xsd は、VisualStudio を使用してビルドされました。

<Exec Command="&quot;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\xsd.exe&quot; XSchemas\XMLSchema_Module.xsd /c /o:SerializationClasses /n:ScenarioManager" /> 

取得した実際のメッセージを翻訳しています:

The type XML_Common:TypesType is not declared or is not a simple type.

インポートの問題のようですが、解決方法がわかりません。

4

2 に答える 2

6

残念ながら、xsd.exe はスキーマのインポートを解決しないようです。この記事から:

タイプが別のファイルで定義されているため、リクエスト XML を作成しようとすると、xsd.exe によって次のエラーが生成されます。 C:\Solution\Project>xsd.exe Request.xsd /c Schema validation warning: Type 「http://www.Example.com/Types:Meeting」は宣言されていません。警告: スキーマを検証できませんでした。クラスの生成に失敗したり、正しくない結果が生成される場合があります。エラー: スキーマ 'C:\Solution\Projects\Request' のクラスを生成中にエラーが発生しました。

  • データ型 ' http://www.Example.com/Types:Meeting ' がありません。さらにヘルプが必要な場合は、「xsd /?」と入力してください。これは、xsd.exe が schemaLocation ヒントを使用してインポートされたスキーマを見つけないためです。パラメータとして含める必要があります。xsd.exe 呼び出し: C:\Solution\Project>xsd.exe Types.xsd Request.xsd /c
于 2013-09-02T08:38:11.970 に答える
2

LB40 の回答の悲観的な冒頭にもかかわらず、その最後の文は解決策をもたらすことを強調する必要があります

C:\Solution\Project>xsd.exe Types.xsd Request.xsd /c

これにより、両方のスキーマのクラスを含む 1 つの cs ソース ファイルが生成されます。

于 2016-09-09T14:50:54.930 に答える