2016-04-14 8 views
1

Für diese Erklärung, die ich 2 verschiedene XSDs bin mit:XSD Fehler: Typ nicht angegeben, oder ist kein einfacher Typ

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> 

Mein Problem mit der folgenden Zeile ist:

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

Visual Studio 2015-Gemeinschaft wirft den Fehler:

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

Es sieht aus wie eine einfache Art zu mir und ich dachte, die Import-Linie es erklärt, vielleicht verstehe ich nicht „Import“ voll weil ich keine Fehler von der Importlinie nur die Vereinigungslinie empfange. Mache ich das richtig?

Antwort

1

Es ist in der Tat ein einfacher Typ. Es ist jedoch nicht im Zielnamespace der aktuellen XSD deklariert; Es wird im Namespace der importierten XSD deklariert. Referenz customEntry im importierten http://tempuri.org/customEntry.xsd Namespace, den Fehler zu beseitigen ...

Insbesondere erklärt ein Namespacepräfix auf das xs:schema Element Ihrer Haupt XSD:

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

, so dass Sie es in Ihrer xs:union Erklärung verwenden können :

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

und Ihr Fehler wird weggehen.

Seitennotiz: Es ist akzeptabel, aber weder erforderlich noch herkömmlich, Ihre Namespaces als URLs für XSD-Dateien zu benennen. erwägen, die .xsd Erweiterung fallen zu lassen.

Verwandte Themen