У меня есть схема XML, которая была построена со старой версией спецификации XML (http://www.w3.org/1999/XMLSchema). Я пытаюсь проанализировать сообщения XML, используя схему (показанную ниже). По умолчанию синтаксический анализатор Xerces 1.1 ищет схему вкорневой каталог домена приложения. Я пытаюсь переместить схему в общедоступное место в нашем веб-каталоге. Кажется, я не могу указать URL-адрес в качестве расположения схемы в моей программе синтаксического анализа с использованием библиотеки Xerces 1.1.
Поэтому я попытался обновить мою программу, чтобы использовать JAXP DocumentBuilderFactory и ее метод setSchema (). Похоже, что эта схема находит схему с URL-адресом схемы, которую я предоставляю, за исключением того, что она дает ошибки синтаксического анализа, поскольку схема (предположительно) не соответствует более позднейверсия спецификации (например, я получаю ошибки, потому что мой элемент Ticket не заключает своих членов в xs: Sequence).
Я не могу обновить свою схему, так как в настоящее время я не могузаставьте внешних клиентов переписывать свои приложения, которые отправляют нам сообщения.
Может кто-нибудь сказать мне, как использоватьJAXP для успешного анализа / проверки с использованием старой версии спецификации схемы?Или, в качестве альтернативы, есть ли способ указать DOMParser Xerces 1.1 на использование схемы, определенной URL-адресом (а не местоположением файла)?
Вот пример того, как выглядит схема:
<?xml version="1.0" encoding="UTF-8" ?>
<schema>
<element name="Ticket">
<complexType>
<element ref="ID" />
<element ref="User" />
</complexType>
</element>
<element name="ID" type='string' />
<element name="UserID" type='string' />
</schema>
Документ XML выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Ticket xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xsi:noNamespaceSchemaLocation='TicketSubmission.xsd'>
<ID>2010:December2:Dec:12:05:33:245</ID>
<UserID>user123</UserID>
</Ticket>
Спасибо!