Re[4]: Schema, xsd.exe и import
От: Andrew Grega Украина  
Дата: 06.12.06 21:02
Оценка: 11 (2)
Здравствуйте, _FRED_, Вы писали:

Разобрался я с этой проблемой. Все оказалось просто, и, самое главное где-то на подсознании мелькала у меня правильная мысль...

Кому интересно:
Подробное объяснение здесь

Вкратце:
Xsd.exe не полностью процессит импорт-директивы. Утилита игнорирует атрибут schemaLocation. Чтобы все заработало, кроме основной схемы в той же командной строке надо скормить и схемы, перечисленные в импортах.

Спасибо.
Schema, xsd.exe и import
От: Andrew Grega Украина  
Дата: 06.12.06 13:25
Оценка:
Доброго дня.

Возник следующий вопрос:
Есть схема, в нее делается импорт других схем. Фрагмет:


<xs:schema targetNamespace="http://www.gribuser.ru/xml/fictionbook/2.0"
           xmlns="http://www.gribuser.ru/xml/fictionbook/2.0"
           xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink"
           xmlns:genre="http://www.gribuser.ru/xml/fictionbook/2.0/genres"
           elementFormDefault="qualified" attributeFormDefault="unqualified">

    <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="FictionBookLinks.xsd"/>
    <xs:import namespace="http://www.gribuser.ru/xml/fictionbook/2.0/genres" schemaLocation="FictionBookGenres.xsd"/>
    <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="FictionBookLang.xsd"/>

...


Так вот, при попытке сгенерировать по этой схеме класс с помощью xsd.exe, утилита выдает нижеследующее:

Schema validation warning: Атрибут 'http://www.w3.org/1999/xlink:type' не объявлен. Line 581, position 4.
Schema validation warning: Атрибут 'http://www.w3.org/1999/xlink:href' не объявлен. Line 583, position 4.
Schema validation warning: Атрибут 'http://www.w3.org/1999/xlink:type' не объявлен. Line 967, position 4.
Schema validation warning: Атрибут 'http://www.w3.org/1999/xlink:href' не объявлен. Line 969, position 4.
Schema validation warning: Тип 'http://www.gribuser.ru/xml/fictionbook/2.0/genres:genreType' не объявлен. Line 79, position 15.

Warning: Schema could not be validated. Class generation may fail or may produce incorrect results.

Error: Error generating classes for schema 'FictionBook2'.
— Отсутствует тип данных 'http://www.gribuser.ru/xml/fictionbook/2.0/genres:genreType'.


Я правильно понял, что xsd.exe некорректно обрабатывает import?
Как такое побороть?

Спасибо.
Re: Schema, xsd.exe и import
От: _FRED_ Черногория
Дата: 06.12.06 15:49
Оценка:
Здравствуйте, Andrew Grega, Вы писали:

AG>Возник следующий вопрос:

AG>Есть схема, в нее делается импорт других схем. Фрагмет:
[xml]
AG><xs:schema targetNamespace="http://www.gribuser.ru/xml/fictionbook/2.0"
AG>           xmlns="http://www.gribuser.ru/xml/fictionbook/2.0"
AG>           xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink"
AG>           xmlns:genre="http://www.gribuser.ru/xml/fictionbook/2.0/genres"
AG>           elementFormDefault="qualified" attributeFormDefault="unqualified">

AG>    <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="FictionBookLinks.xsd"/>
AG>    <xs:import namespace="http://www.gribuser.ru/xml/fictionbook/2.0/genres" schemaLocation="FictionBookGenres.xsd"/>
AG>    <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="FictionBookLang.xsd"/>
AG>...
[/xml]
AG>Так вот, при попытке сгенерировать по этой схеме класс с помощью xsd.exe, утилита выдает нижеследующее:

AG>Schema validation warning: Атрибут 'http://www.w3.org/1999/xlink:type' не объявлен. Line 581, position 4.

AG>Я правильно понял, что xsd.exe некорректно обрабатывает import?

Нет, не правильно. Импорт работает.

AG>Как такое побороть?


Покажи, где и как ты используешь типы, которые "не объявлены".
... << RSDN@Home 1.2.0 alpha rev. 665>>
Now playing: «Тихо в лесу…»
Help will always be given at Hogwarts to those who ask for it.
Re[2]: Schema, xsd.exe и import
От: Andrew Grega Украина  
Дата: 06.12.06 17:30
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>Здравствуйте, Andrew Grega, Вы писали:


_FR>Покажи, где и как ты используешь типы, которые "не объявлены".


Ну вот несколько фрагментов:

<xs:element name="genre" maxOccurs="unbounded">
    <xs:complexType>
        <xs:simpleContent>
            <xs:extension base="genre:genreType">
                <xs:attribute name="match" type="xs:integer" use="optional" default="100"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
</xs:element>


<xs:complexType name="imageType">
    <xs:attribute ref="xlink:type"/>
    <xs:attribute ref="xlink:href"/>
    <xs:attribute name="alt" type="xs:string" use="optional"/>
</xs:complexType>


Да, схема не моя...
Re[3]: Schema, xsd.exe и import
От: _FRED_ Черногория
Дата: 06.12.06 17:55
Оценка:
Здравствуйте, Andrew Grega, Вы писали:

_FR>>Покажи, где и как ты используешь типы, которые "не объявлены".


AG>Ну вот несколько фрагментов:

AG><xs:element name="genre" maxOccurs="unbounded">
AG>    <xs:complexType>
AG>        <xs:simpleContent>
AG>            <xs:extension base="genre:genreType">
…

Описание genre есть в описании xsd:schema, тут должно быть всё верно…

AG><xs:complexType name="imageType">
AG>    <xs:attribute ref="xlink:type"/>
AG>    <xs:attribute ref="xlink:href"/>
AG>    <xs:attribute name="alt" type="xs:string" use="optional"/>
AG></xs:complexType>


А вот описания префикса xlink нет, потому и ругается.

И имена файлов какие-то странные:

<xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="FictionBookLinks.xsd"/>
<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="FictionBookLang.xsd"/>


в этих файлах есть описания типав, на которые ругаются?
... << RSDN@Home 1.2.0 alpha rev. 665>>
Now playing: «Тихо в лесу…»
Help will always be given at Hogwarts to those who ask for it.
Re[4]: Schema, xsd.exe и import
От: Andrew Grega Украина  
Дата: 06.12.06 18:06
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>Здравствуйте, Andrew Grega, Вы писали:


_FR>Описание genre есть в описании xsd:schema, тут должно быть всё верно…


Ага, только и на это он тоже ругается...

_FR>А вот описания префикса xlink нет, потому и ругается.


И это описание есть, просто я в первом посте случайно в отдельную строчку его не вынес:

AG>           xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink"


_FR>И имена файлов какие-то странные:

...
_FR>в этих файлах есть описания типав, на которые ругаются?

Есть там описания типов. И лежат эти файлы тут же рядом.
Более того, XML Spy абсолютно нормальо проводит валидацию схемы и показывает все типы и т.п.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.