2012-04-11 12 views
4

要素で定義されたComplexTypeを拡張するXSDスキーマを作成しようとしています。要素のXML/XSD 'extension'は常に定義されていませんcomplexType

Notepad ++ XMLToolsプラグインを使用して問題をトラブルシューティングしようとしていますが、「Unable to Parse Schema File」が表示されます。エラーの説明なしで、私は詳細を取得するには、ここにあるバリデータを使用している:

http://www.xmlforasp.net/schemavalidator.aspx

私はここから得る出力は次のとおりです。

ステータス: 未定義のcomplexType 'http://test.org:BaseClass'は複合型拡張のベースとして使用されます。

私はxs:schemaタグの:test名前空間を削除しようとしましたが、Test:namespace修飾子をClassHierarchy内のrefから削除しようとしましたが、要素定義に名前空間を追加しようとしましたが、検証をパスするスキーマは得られません。

ご協力いただければ幸いです!おかげ

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema 
    xmlns:test="http://test.org" 
    targetNamespace="http://test.org" 
    elementFormDefault="qualified" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

    <xs:element name="BaseClass"> 
     <xs:complexType> 
      <!-- More referneces in here (Meaning this must be a complex type) but removed out to make a bit simpler --> 
      <xs:attribute name="test_name" type="xs:string" use="required"/> 
      <xs:attribute name="second_name" type="xs:string"/> 
     </xs:complexType> 
    </xs:element> 

    <xs:element name="SubClass"> 
     <xs:complexType> 
      <xs:complexContent> 
       <xs:extension base="test:BaseClass"> 
        <xs:attribute name="min_value" type="xs:float" default="0.0"/> 
        <xs:attribute name="max_value" type="xs:float" default="1.0"/> 
       </xs:extension> 
      </xs:complexContent> 
     </xs:complexType> 
    </xs:element> 


    <xs:element name="ClassHierarchy"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:choice minOccurs="0" maxOccurs="unbounded"> 
        <xs:element ref="test:BaseClass" minOccurs="0" maxOccurs="unbounded"/> 
        <xs:element ref="test:SubClass" minOccurs="0" maxOccurs="unbounded"/> 
       </xs:choice> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 

XMLファイルが含まれています:

<?xml version="1.0"?> 
    <ClassHierarchy 
    xmlns="http://test.org" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://test.org Test.xsd"> 
     <BaseClass test_name="Test1" /> 
     <SubClass test_name="Test2" min_value="0.0" max_value="1.0" /> 
    </ClassHierarchy> 
+0

私はあなたのxsdを投稿し、「欠落しているルート要素」を取得します - これを 'コンパイル'するために何が必要ですか? – KevinDTimm

+0

申し訳ありませんが、私はサンプルXMLファイルを追加しませんでした。 – Mciccarone

答えて

3

事はあなたが要素に基本型の値を設定しようとしているです。しかし、 "タイプ"が期待されます。

<xs:element name="BaseClass" type="BaseType" /> 

<xs:complexType name="BaseType"> 
     ... 
</xs:complexType> 

<xs:complexType name="SubType"> 
    <xs:complexContent> 
     <xs:extension base="BaseType"> 
      .... 
     </xs:complexContent> 
</xs:complexType> 
+0

ああ!それは動作します!ありがとう。しかし、私は 'xmlns ='のデフォルトの名前空間で動作するようにすることができますが、名前空間を修飾しようとすると 'xmlns:test ='という名前のスキーマでBaseTypeを見つけることができません。 – Mciccarone

+0

あなたは大歓迎です:) 私は対象となるスキーマを扱っていません。私の推測は、スキーマ自体では非適格でなければならないが、targetNamespace値を使用して他のドキュメントで参照できるはずです。 –

+0

心配はいりません!これはうまく動作します。再度、感謝します – Mciccarone