Разбор встроенной XML-схемы (Xerces для Java)

Можно ли проанализировать файл XML со встроенной схемой с помощью Xerces? Я пытался всеми возможными способами сделать эту работу, но у меня не получилось. Он всегда выдает исключение в последней строке кода ниже (схема — это строка, содержащая xml и встроенную схему):

private XSModel getXSModel(String schema) throws XNIException, IOException{
    XMLGrammarPreparser preparser = new XMLGrammarPreparser();  
    preparser.registerPreparser(XMLGrammarDescription.XML_SCHEMA, null);  
    XSGrammar g = (XSGrammar)preparser.preparseGrammar(XMLGrammarDescription.XML_SCHEMA,new XMLInputSource(null, null, null,new ByteArrayInputStream(schema.getBytes()), "ISO-8859-1"));  
    return g.toXSModel(); 
}

Ошибка следующая:

[Ошибка]: 1: 9586: s4s-elt-character: символы, отличные от пробелов, не допускаются в элементах схемы, кроме «xs: appinfo» и «xs: documentation»...

Это сообщение появляется для каждой строки, принадлежащей XML (вне тега схемы).


Обновление: вот пример:

<root>
    <schema xmlns="http://www.w3.org/2001/XMLSchema">
        <element name="age" type="integer"/>
    </schema>
    <!--HERE THE XML BEGINS-->
    <age>35</age>
</root>

person Paulo S.    schedule 20.01.2011    source источник
comment
Xerces Java или C++? Кроме того, что вы подразумеваете под встроенной схемой? Покажите нам пример.   -  person skaffman    schedule 20.01.2011


Ответы (2)


Оказывается, он поддерживает встроенные схемы: http://xerces.apache.org/xerces2-j/samples-jaxp.html#InlineSchemaValidator

person Jahan    schedule 30.04.2014

Возможно, вы захотите прочитать файл как обычный файл xml, используя выражение xpath для выбора элемента схемы, а затем преобразовать его во входной поток. Затем вызовите парсер для этого входного потока.

person Karthik Ramachandran    schedule 20.01.2011