2016-04-14 7 views
1

ではありません。XSDエラー:型が宣言されていない、または私は2つの異なるXSDを使用しています。この説明のために単純型

customEntry.xsd

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema id="customEntry" 
    targetNamespace="http://tempuri.org/customEntry.xsd" 
    elementFormDefault="qualified" 
    xmlns="http://tempuri.org/customEntry.xsd" 
    xmlns:mstns="http://tempuri.org/customEntry.xsd" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"   
    > 
    <xs:simpleType name="customEntry"> 
    <xs:restriction base="xs:string"> 
     <xs:pattern value="[A-Za-z0-9_%./]*"/> 
    </xs:restriction> 
    </xs:simpleType> 
</xs:schema> 

element_ArtStyleSuffix.xsdを:

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema id="element_ArtStyleSuffix" 
    targetNamespace="http://tempuri.org/element_ArtStyleSuffix.xsd" 
    elementFormDefault="qualified" 
    xmlns="http://tempuri.org/element_ArtStyleSuffix.xsd" 
    xmlns:mstns="http://tempuri.org/element_ArtStyleSuffix.xsd" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    > 
    <xs:import namespace="http://tempuri.org/customEntry.xsd" schemaLocation="customEntry.xsd"/> 

    <!-- Civilizations ArtStyleSuffix Enumeration --> 
    <xs:simpleType name="enum_ArtStyleSuffix"> 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="_EURO"/> 
     <xs:enumeration value="_AFRI"/> 
     <xs:enumeration value="_AMER"/> 
     <xs:enumeration value="_ASIA"/> 
    </xs:restriction> 
    </xs:simpleType> 

    <!-- ArtStyleSuffix GameData Schema Information --> 
    <xs:element name="GameData"> 
    <xs:complexType> 
     <xs:all> 
     <xs:element minOccurs="0" maxOccurs="1" name="ArtStyleSuffix"> 
      <xs:annotation> 
      <xs:documentation> 
       Select a default ArtStyleSuffix or you may create your own custom one and place its TypeName here. 
      </xs:documentation> 
      </xs:annotation> 
      <xs:simpleType> 
      <xs:union memberTypes="customEntry enum_ArtStyleSuffix"/> 
      </xs:simpleType> 
     </xs:element> 
     </xs:all> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

私の問題は、次の行にされています

<xs:union memberTypes="customEntry enum_ArtStyleSuffix"/> 

のVisual Studio 2015のコミュニティには、エラーがスローされます。

Type ' http://tempuri.org/element_ArtStyleSuffix.xsd:customEntry ' is not declared, or is not a simple type.

それは私には、単純なタイプのように見えると私は、インポート行がそれを宣言したと思ったので、多分私は完全に「インポート」を理解していません私はユニオンラインだけのインポートラインから何のエラーも受け取っていないからです。私はこれを正しくしていますか?

答えて

1

実際には単純なタイプです。ただし、現在のXSDのターゲット名前空間で宣言されていません。インポートされたXSDの名前空間で宣言されています。あなたはxs:union宣言でそれを使用することができるように

xmlns:ce="http://tempuri.org/customEntry.xsd" 

:あなたのメインXSDのxs:schema要素に名前空間接頭辞を宣言し、具体的に...エラーを排除するために、インポートhttp://tempuri.org/customEntry.xsd名前空間に

customEntryを参照:

<xs:union memberTypes="ce:customEntry enum_ArtStyleSuffix"/> 

あなたのエラーは消えます。

サイドノート:XSDファイルへのURLとしてネームスペースを指定することは可能ですが、必須でもなく、慣習的でもありません。拡張子を「.xsd」にすることを検討してください。

関連する問題