XML targetNamespace и неквалифицированное объявление элементов - PullRequest
3 голосов
/ 12 октября 2011

Я несколько озадачен тем, как атрибут targetNamespace в схеме XML влияет на именование элементов. Я получаю сообщение об ошибке, подтверждающее следующее:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="test" version="1.0">
    <xs:element name="testType" type="testType"/>
    <xs:complexType name="testType">
        <xs:sequence>
            <xs:element name="testSubtype" type="testSubType" />
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="testSubType">
        <!-- some fields -->
    </xs:complexType>
</xs:schema>

XMLSpy заявляет об этом Cannot resolve the unqualified declaration or definition 'testSubType'. Как я могу решить эту проблему? Мне нужно сохранить там атрибут targetNamespace. Я пытался изменить testSubType на test:testSubType в различных областях, но, похоже, это не сработало.

1 Ответ

6 голосов
/ 12 октября 2011

Либо добавьте атрибут xmlns="test" к элементу схемы, чтобы объявить, что пространство имен по умолчанию для этой схемы - "test", либо добавьте xmlns:t="test", чтобы объявить, что t - это префикс для пространства имен "test", и используйте этопрефикс типа type=t:testSubType при ссылке на типы, которые вы определили в этом пространстве имен (что вы делаете, говоря, что test - это ваше targetNamespace).

...