почему я могу импортировать этот тип из схемы xsd? - PullRequest
1 голос
/ 11 марта 2010

В приведенной ниже схеме строка <xs:element type="cmn:AddressType" name="ResidentialAddress" minOccurs="1" maxOccurs="1" /> выдает ошибку Type 'http://company.com/Common:AddressType' is not declared.

Кто-нибудь знает почему? Это отображается в редакторе Visual Studio 2008, а также, если я пытаюсь проверить файл XML с XDocument.

Схема Student.xsd:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="Student"
    xmlns:cmn="http://company.com/Common"
    targetNamespace="http://company.com/Student"
    elementFormDefault="qualified"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>

  <xs:import id="cmn" schemaLocation="Address.xsd" 
             namespace="http://company.com/Common" />

  <xs:element name="Student" nillable="false">
    <xs:complexType>
      <xs:sequence minOccurs="1">
        <xs:element name="Id" type="xs:integer" nillable="false" minOccurs="1" maxOccurs="1"  />
        <xs:element type="cmn:AddressType" name="ResidentialAddress" minOccurs="1" maxOccurs="1" />
      </xs:sequence>
    </xs:complexType>

  </xs:element>
</xs:schema>

Схема Address.xsd:

<xs:schema 
    targetNamespace="http://company.com/Common"
    elementFormDefault="qualified"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
  <xs:element name="AddressType">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Line1" minOccurs="1" maxOccurs="1" />
        <xs:element name="Line2" minOccurs="0" maxOccurs="1" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

1 Ответ

2 голосов
/ 12 марта 2010

Это потому, что вы фактически объявили AddressType как элемент , а не тип . Если вы хотите использовать его как элемент в своей основной схеме, используйте:

<xs:element ref="cmn:AddressType" minOccurs="1" maxOccurs="1" />

Если вы хотите, чтобы это был тип, то избавьтесь от объявления элемента в вашей адресной схеме и введите вместо него <xs:complexType name="AddressType">.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...