JAXB-анализ Atom.xsd приводит к ошибкам проверки

Я пытаюсь использовать JAXB для анализа фида Atom, возвращающегося после вызова службы REST Sharepoint 2010, и привязки и компиляции JAXB при сборке в eclipse. Я загрузил пару разных версий атома xsd, которые нашел в Интернете (они отличаются только некоторыми атрибутами заголовка), включая эту (http://www.kbcafe.com/rss/atom.xsd.xml), но ПОСЛЕДОВАТЕЛЬНО получаю следующие ошибки, независимо от того, что я использую:

     [xjc] [WARNING] schema_reference.4: Failed to read schema document 'http://www.w3.org/2001/03/xml.xsd', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not <xsd:schema>.
     [xjc]   line 14 of file:/C:/rest_workspace/eDocs/src/gov/afms/edocs/rest/jaxb/schemas/AtomSchema2.xsd
     [xjc] [ERROR] src-resolve: Cannot resolve the name 'xml:base' to a(n) 'attribute declaration' component.
     [xjc]   line 292 of file:/C:/rest_workspace/eDocs/src/gov/afms/edocs/rest/jaxb/schemas/AtomSchema2.xsd
     [xjc] [ERROR] s4s-elt-must-match.1: The content of 'commonAttributes' must match (annotation?, ((attribute | attributeGroup)*, anyAttribute?)). A problem was found starting at: attribute.
     [xjc]   line 292 of file:/C:/rest_workspace/eDocs/src/gov/afms/edocs/rest/jaxb/schemas/AtomSchema2.xsd

Я видел некоторые комментарии, в которых говорилось, что у Java5 Xerces были некоторые проблемы, но я повторяю свою версию Java из своего сценария ant и использую 1.6. Узел в строке 14:

<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/03/xml.xsd" />

Узел в строке 292:

        <xs:attribute ref="xml:base" />

Обратите внимание, что eclipse также помечает эти вещи как ошибки. Для предупреждения eclipse говорит: «XSD: местоположение« http://www.w3.org/2001/03/xml.xsd »не было разрешено», для строки ошибки он говорит: «XSD: ссылка на атрибут» http: //www.w3.org/XML/1998/namespace#base' не разрешено". Это также ошибка 293, которая похожа на приведенную выше, но указывает на lang вместо base.

Мне странно, что синтаксический анализатор пытается разрешить ссылку на документ пространства имен, поскольку он выглядит просто документом HTML, объясняющим пространства имен, а НЕ XSD или DTD. Но этот Atomschema2.xsd не я придумал, он был скачан.

Что я должен здесь делать? Есть ли лучшая схема атома? Должен ли я изменить загруженную схему, чтобы изменить ссылки? Что-то третье?


person Entropy    schedule 03.02.2012    source источник
comment
Вам может быть полезен следующий пост: blog.bdoughan. com/2010/09/processing-atom-feeds-with-jaxb.html   -  person bdoughan    schedule 03.02.2012


Ответы (1)


Ошибка обычно вызвана DTD DOCTYPE в верхней части файла xml.xsd; Я никогда не пытался разобраться с JAXB, но могу гарантировать, что если вы загрузите, исправите ссылки и удалите ‹!DOCTYPE...[]> из файла xml.xsd, JAXB будет работать из коробки с схема, на которую вы указали (я только что попробовал ее в NetBeans 7.1 без проблем). Я предполагаю, что теперь хороший вопрос заключается в том, как заставить JAXB xjc игнорировать DTD...

ОБНОВЛЕНИЕ: -catalog в командной строке может сделать это, пожалуйста, прочитайте это.

person Petru Gardea    schedule 03.02.2012