Я пытаюсь проверить простейший файл XSD против XMLSchema.xsd:Проверка правильности XML-схемы против XMLSchema.xsd
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="a" type="xs:int"/>
</xs:schema>
Для этого я скачал файл XMLSchema.xsd и передать его в мой org.w3c.dom.ls.LSResourceResolver
в убедитесь, что локально предоставлено XMLSchema.XSD
, а не выбрано через Интернет. Код работает с Saxon-HE-9.4.jar
на моем пути к классам.
Однако это не удается с:
org.xml.sax.SAXParseException; cvc-elt.1: Не удается найти объявление элемента 'xs: schema'.
, который, как представляется, связано с предыдущим сообщением (излучаемый мой заказ LSResourceResolver
подкласса):
Не удалось прочитать документ схемы '[...] XMLSchema.xsd', потому что 1) может не найти документ; 2) документ не может быть прочитан; 3) корневой элемент документа не < xsd: схема >.
Когда же я закомментировать весь DOCTYPE
раздел в файле XMLSchema.XSD
она работает.
Я думаю, это означает, что анализатор не может обрабатывать статьи DOCTYPE
и ATTLIST
в XMLSchema.xsd
.
Поэтому у меня есть два вопроса:
- почему анализатор не в состоянии справиться с
XMLSchema.xsd
XML пролог? и есть ли способ исправить это, не редактируя файлXMLSchema.xsd
? - , если нет пути вокруг # 1, как я могу загрузить файл
XMLSchema.xsd
с http://www.w3.org/2001/XMLSchema.xsd без пролога XML, поэтому мне не нужно редактировать вручную. Простойwget
также извлекает пролог XML (что BTW не появляется, когда ссылка посещается в браузере).
Это действительно слишком большое, чтобы обеспечить SSCCE, но если кто-то хочет взглянуть, я предоставил хранилище github тестовым случаем.
Просто интересно: используете ли вы документ DOM? Если это так, вы установили проверку на false или вы оставили его по умолчанию по умолчанию? – nablex
@nablex yes Файл читается как 'org.w3c.dom.Document'; на объекте 'DocumentBuilderFactory' я вызываю:' setValidating (false); ' –
Вы отметили это как с« саксоном », так и« скерами ». Оба они предоставляют валидаторы схемы, но вы не дали понять, что используете. Я получаю впечатление от сообщений об ошибках, что вы используете валидатор схемы xerces; так почему вы отметили вопрос «саксоном»? –