"类型[namespace:type]未声明"我认为是正确输入的

时间:2014-04-24 16:06:57

标签: xsd xsd-validation

我正在使用Visual Studio 2013来开发一个XSD架构,该架构导入另一个架构以使用它的"颈部"类型。出于某种原因,Visual Studio不喜欢我使用type =" wn:Neck",导致标题中提到的错误。下面是我的父模式,之后是子模式。在视觉上,架构看起来正确,但VS2013不同意。有谁知道为什么会这样?我见过类似的问题,但没有找到直接解决这个问题的方法。

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:wn="http://fxb.co/xsd/warmoth/neck.xsd"           
           targetNamespace="http://fxb.co/xsd/warmoth/customitem.xsd">
  <xs:import namespace="http://fxb.co/xsd/warmoth/neck.xsd" schemaLocation="./Neck.xsd"/>
  <xs:element name="CustomItems">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="CustomItemOption">
          <xs:complexType>
            <xs:sequence>                  
              <xs:element minOccurs="0" maxOccurs="unbounded" name="Neck" type="wn:Neck" />            
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"            
           xmlns:xs="http://www.w3.org/2001/XMLSchema"                
           targetNamespace="http://fxb.co/xsd/warmoth/neck.xsd" >
  <xs:element id="Neck" name="Neck">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Headstock">
          <xs:complexType>
            <xs:attribute name="active" type="xs:boolean" default="true" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

1 个答案:

答案 0 :(得分:2)

在父XSD中,更改

<xs:element minOccurs="0" maxOccurs="unbounded" name="Neck" type="wn:Neck" />            

<xs:element minOccurs="0" maxOccurs="unbounded" ref="wn:Neck" />            

因为您希望从子XSD的命名空间引用Neck元素,而不是