2016-07-28 4 views
0

私はXMLとXSDを使い始めています。私は単純なxsdというファイルをという名前でnarrative.xsdとし、別のものをというgoal.xsdと呼びます。これには物語が含まれています。私は名前空間を省略した場合XSDカスタムネームスペース

the http://mdmw.co.uk:Timescale is not declared. 

、それが働いている:

問題は、私はこのエラーを取得するTimescaleタイプのgoal.xsdでいることです。

名前空間を使用するにはどうすればよいですか?

ありがとうございます。

これはnarrative.xsdある:

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema id="narrative" 
     elementFormDefault="qualified" 
     targetNamespace="http://mdmw.co.uk" 
     xmlns="http://mdmw.co.uk" 
     xmlns:xs="http://www.w3.org/2001/XMLSchema" > 
    <xs:element name="Timescale"> 
     <xs:simpleType> 
      <xs:restriction base="xs:string"> 
       <xs:enumeration value="1 Month" /> 
       <xs:enumeration value="2 Months" /> 
       <xs:enumeration value="3 Months" /> 
       <xs:enumeration value="6 Months" /> 
       <xs:enumeration value="9 Months" /> 
       <xs:enumeration value="1 Year" /> 
      </xs:restriction> 
     </xs:simpleType> 
    </xs:element> 
</xs:schema> 

これはgoal.xsdある:

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema id="goal" 
     elementFormDefault="qualified" 
     targetNamespace="http://mdmw.co.uk" 
     xmlns="http://mdmw.co.uk" 
     xmlns:xs="http://www.w3.org/2001/XMLSchema" >  
    <xs:include schemaLocation="narrative.xsd"/>  
    <xs:element name="goals"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:choice minOccurs="0" maxOccurs="unbounded"> 
        <xs:element name="goalType" type="xs:string" /> 
        <xs:element name="timeScale" type="Timescale" /> 
        <xs:element name="currentResult" type="xs:decimal"/> 
        <xs:element name="currentResultDate" type="xs:date"/> 
        <xs:element name="comments" type="xs:string"/> 
       </xs:choice> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 
+0

XMLが良好に見えます。次のメニューからVSで確認しました:プロジェクト:新規アイテムの追加:Xmlファイル次に、xmlをビューに貼り付けます。エラーは他のコンパイラエラーと同様にエラーリストに表示されます。 – jdweng

答えて

1

timeScale要素宣言がタイプTimescaleを意味するが、Timescale要素であります、タイプではありません。

Timescale要素内の匿名単純型が、narrative.xsdにこの名前の最上位単純型に変換されている場合、エラーは消えます。

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema id="narrative" 
    elementFormDefault="qualified" 
    targetNamespace="http://mdmw.co.uk" 
    xmlns="http://mdmw.co.uk" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" > 
    <xs:simpleType name="Timescale"> 
     <xs:restriction base="xs:string"> 
      <xs:enumeration value="1 Month" /> 
      <xs:enumeration value="2 Months" /> 
      <xs:enumeration value="3 Months" /> 
      <xs:enumeration value="6 Months" /> 
      <xs:enumeration value="9 Months" /> 
      <xs:enumeration value="1 Year" /> 
     </xs:restriction> 
    </xs:simpleType> 
</xs:schema> 
+0

Ghislainありがとう、私は明日の朝にそれを試します。名前空間についてはOKですか?私はxmlns、elementFormDefaultなどについての明確な文書を見つける必要があります... Googleは私が推測する私の最高のfrienndになるでしょう – brillox

+0

私の喜び、brillox。はい。ネームスペースは、スキーマの可読性を向上させ、ターゲットネームスペースをデフォルトにするのではなくプレフィックスにバインドするのが一般的ですが、よく見えます。また、ヘルプの新しいstackoverflowドキュメント機能を開始点として見つけることもできます(http://stackoverflow.com/documentation/xml/topics)。コミュニティが貢献するにつれ、XMLスキーマはおそらく後に続くでしょう。 –

+0

wow .. stackoverflowは神話です...ドキュメントプロジェクトではさらに優れています! – brillox