Модераторы: diadiavova
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка проверки по схеме, JAXP 1.3 
:(
    Опции темы
LSD
Дата 5.7.2005, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 8
Всего: 538



Есть XML документ, я его парсерю с проверкой по схеме. Во время парсиринга выдается ошибка. Парсерю с помощью JAXP 1.3, если проверку по схеме отключить, то парсеринг проходит нормально. Другие парсеры(XMLSpy и Oracle XML Parser) не ругаются вообще.
Ругается на тег <g_start xsi:nil="true"></g_start>, в схеме этому элементу соответсвует такое описание <xsd:element name="g_start" type="xsd:date" minOccurs="0" nillable="true"/>.
Выдается следующая ошибка: org.xml.sax.SAXParseException: http://www.w3.org/TR/xml-schema-1#cvc-type...g_start&xsi:nil, поиск по www.w3.org дал следующее описание на нее:
Цитата
cvc-type.3.1.1 element is not locally valid: its type definition is simple, but it has attributes other than xsi:type, xsi:nil, xsi:schemaLocation, and xsi:noNamespaceSchemaLocation.

и все. В чем может быть проблема, неправильный XML или ошибка в парсере?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
3,14
Дата 11.7.2005, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1614
Регистрация: 18.6.2004
Где: Н. Новгород

Репутация: 10
Всего: 24



Заголовок с xmlns кинь.


--------------------
Может быть, это только мой бред,
Может быть, жизнь не так хороша,
Может быть, я не выйду на свет,
Но я летал, когда пела душа...
PM MAIL   Вверх
Bikutoru
Дата 11.7.2005, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлекающийся
**


Профиль
Группа: Участник
Сообщений: 522
Регистрация: 24.5.2005
Где: Москва

Репутация: 2
Всего: 22



LSD, а чего-нибудь типа пробела или переноса строки между <g_start xsi:nil="true"> и </g_start> нет? Возможно, проблема из-за этого...

Это сообщение отредактировал(а) Bikutoru - 11.7.2005, 17:27


--------------------
Человек, словно в зеркале мир — многолик, 
Он ничтожен — и он же безмерно велик!
Омар Хайям
PM   Вверх
LSD
Дата 11.7.2005, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 8
Всего: 538



Вот небольшой примерчик который показывает эту проблему:
Схема
Код
<?xml version = "1.0" encoding="UTF-8" standalone="yes"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <xsd:element name="root">
  <xsd:complexType>
   <xsd:choice maxOccurs="unbounded">
    <xsd:element name="elem" type="xsd:boolean" minOccurs="0" nillable="true"/>
   </xsd:choice>
  </xsd:complexType>
 </xsd:element>
</xsd:schema>

XML:
Код
<?xml version = "1.0" encoding="UTF-8" standalone="yes"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <elem xsi:nil="true"></elem>
</root>

Программа:
Код
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(new File("schema.xsd"));
DocumentBuilderFactory documentFactory = DocumentBuilderFactory.newInstance();
documentFactory.setSchema(schema);
DocumentBuilder documentBuilder = documentFactory.newDocumentBuilder();
Document document = documentBuilder.parse(new File("data.xml"));

Причем следующий код отрабатывает без ошибок:
Код
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(new File("schema.xsd"));
Validator validator = schema.newValidator();
validator.validate(new StreamSource("data.xml"));

Добавлено @ 17:22
Цитата(Bikutoru @ 11.7.2005, 18:18)
LSD, а чего-нибуть типа пробела или переноса строки между <g_start xsi:nil="true"> и </g_start> нет? Возможно, проблема из-за этого...

Нет, ошибка остается и при <g_start xsi:nil="true"/>.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
3,14
Дата 12.7.2005, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1614
Регистрация: 18.6.2004
Где: Н. Новгород

Репутация: 10
Всего: 24



Ну для начала, судя по докам у тебя ошибка в java коде, хотя не уверен, сам с этим не работал. Вот описание к ф-ии validate:

public abstract void validate(Source source,
Result result)
throws SAXException,
IOException

Validates the specified input and send the augmented validation result to the specified output.

This method places the following restrictions on the types of the Source/Result accepted.
Source/Result accepted:
SAXSource DOMSource
null OK OK
SAXResult OK Err
DOMResult Err OK

Note that StreamSource instances are not allowed. To process a StreamSource, or to validate one Source into another kind of Result, use the identity transformer (see TransformerFactory.newTransformer()).

Errors found during the validation is sent to the specified ErrorHandler.

If a document is valid, or if a document contains some errors but none of them were fatal and the ErrorHandler didn't throw any exception, then the method returns normally.



--------------------
Может быть, это только мой бред,
Может быть, жизнь не так хороша,
Может быть, я не выйду на свет,
Но я летал, когда пела душа...
PM MAIL   Вверх
LSD
Дата 12.7.2005, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 8
Всего: 538



Этот код взят из примера идущего в комплекте с Java Web Services Developer Pack. К тому же если верить справке:
Цитата
Throws: IllegalArgumentException - If the Result type doesn't match the Source type, or if the specified source is neither SAXSource nor DOMSource.

но никаких ошибок не выбрасывается.
Я попробую переделать валидатор, но мне кажется это вполне нормальный код.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
LSD
Дата 13.7.2005, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 8
Всего: 538



Я переделал пример с Validator
Код
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(new File("schema.xsd"));

DocumentBuilderFactory documentFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentFactory.newDocumentBuilder();
Document document = documentBuilder.parse(new File("data.xml"));

DOMSource domSourece = new DOMSource(document);

Validator validator = schema.newValidator();
validator.validate(domSourece);

никаких ошибок не выдается, все работает именно так как и ожидалось. Поэтому я думаю, что проблема в парсере.

Это сообщение отредактировал(а) LSD - 13.7.2005, 09:26


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась.

Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение.

Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел

Желаем удачи в Вашем деле!


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | XML, XSL | Следующая тема »


 




[ Время генерации скрипта: 0.0702 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.