Использование схемы XML для исправления XML в Java
Кто-нибудь знает инструмент, который позволил бы мне взять строку XML в Java, проверить ее по схеме и исправить, если она искажена?
Например, с учетом следующей схемы и кода XML
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="tag">
<xs:element name="subtag" type="xs:token" />
</xs:element>
</xs:schema>
<tag>
<subtag>content
</tag>
Я ищу инструмент, который может прочитать схему, разобрать XML, заметить отсутствующий тег и добавить его. Для целей этой конкретной программы мне не нужно никаких исправлений, кроме отсутствующих тегов. (Кстати, инструмент, который может найти и добавить отсутствующие теги без использования схемы, тоже подойдет).
Какие-либо предложения?
2 ответа
Проблема, конечно, в том, что для любого экземпляра, который не соответствует схеме, существует бесконечное число "похожих" экземпляров, которые соответствуют схеме, и ваша задача состоит в том, чтобы выбрать тот, который "наиболее похож" "в какой-то мере.
HTML5 пытается сделать это с помощью тщательно продуманного набора правил. Эти правила содержат много знаний о конкретной схеме, например, если tr найдено как дочерний элемент таблицы, то tr обернут в tbody. Вы можете попытаться сделать то же самое для вашей схемы / словаря, но будьте готовы к большой работе.
Делать то же самое для произвольной схемы звучит как интересный докторский проект. Успешное выполнение, вероятно, потребовало бы некоторого исследования причин отклонений от схемы (точно так же, как исправление орфографии должно учитывать, был ли введен ввод пользователем, получен ли он распознаванием голоса или получен с помощью сканирования OCR) - каждый вводит различные виды ошибки.)