Мое приложение проверяет в XML против XSD (, который находится в банке):Application проверяет XML против XSD: разрешить ссылку XSD в XML
private Document createAndValidate(Schema schema) throws IOException, SAXException, ParserConfigurationException {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
documentBuilderFactory.setValidating(false); // DTD validation
documentBuilderFactory.setNamespaceAware(false);
documentBuilderFactory.setSchema(schema);
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
documentBuilder.setErrorHandler(new SaxErrorHandler());
return documentBuilder.parse(file.toFile());
}
Это прекрасно работает до сих пор.
Но так как это проще создать XML с XSD (, который может быть в любом месте на локальном компьютере) ссылается, то XML начинается так:
<?xml version="1.0" encoding="UTF-8"?>
<Definition
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="C:\definition_schema.xsd">
Теперь, когда мое приложение разбирает, что XML файл, он не может проверить из-за этого XSD справки:
CVC-комплекс-type.3.2.2: Атрибут 'XSI: noNamespaceSchemaLocation' является не разрешено появляться в 'Определение'
Я попытался добавить <xs:attribute name="xsi:noNamespaceSchemaLocation" type="xs:string" />
в элемент Definition
, но это имя атрибута недействительно.
Я могу открыть XML-файл и удалить атрибут, прежде чем я (повторно) открою его и проведу его проверку. Но должно быть лучшее решение.
Как с этим справиться?
Отлично, спасибо! Моя схема не имеет пространства имен: '', поэтому мне не нужно добавлять атрибут, правильно? Теперь, с 'setNamespaceAware (true)', 'xsi' распознается как пространство имен. Но я не понимаю, почему атрибут 'xsi: noNamespaceSchemaLocation' теперь переносится XSD. Он до сих пор не определен. –
halloei
Определить пространство имен 'http: // www.w3.org/2001/XMLSchema-instance', но спецификация: XML-схема Часть 1: Структуры, раздел 2.6 [Отметка, связанная с схемой, в проверенных документах] (http://www.w3.org/TR/xmlschema-1/#Instance_Document_Constructions). – Andreas