Как в Oracle XDK проверить когда-то созданный XMLDocument на основании схемы?
import oracle.xml.parser.schema.XMLSchema;
import oracle.xml.parser.schema.XSDBuilder;
import oracle.xml.parser.v2.DOMParser;
import oracle.xml.parser.v2.XMLDocument;
import oracle.xml.parser.v2.XMLParseException;
import org.w3c.dom.Element;
import org.xml.sax.InputSource;
import java.io.StringReader;
public class DomValidateTest {
public static void main(String[] args)
throws Exception {
// Schema
XSDBuilder builder = new XSDBuilder();
InputSource schemaSource = new InputSource(
new StringReader(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n" +
" <xs:element name=\"root\" nillable=\"false\">\n" +
" <xs:complexType>\n" +
" <xs:sequence>\n" +
" <xs:element name=\"value\" type=\"xs:string\" nillable=\"false\"/>\n" +
" </xs:sequence>\n" +
" </xs:complexType>\n" +
" </xs:element>\n" +
"</xs:schema>"
)
);
XMLSchema schema = builder.build(schemaSource);
// First document
XMLDocument doc = new XMLDocument();
Element rootElement = doc.createElement("root");
doc.appendChild(rootElement);
rootElement.appendChild(doc.createElement("value"));
doc.print(System.out);
try {
doc.validateContent(schema);
System.out.println("document validation succeed.");
} catch (XMLParseException e) {
System.err.println("document validation error: " + e.getMessage());
}
// Second document
DOMParser parser = new DOMParser();
parser.parse(new StringReader("<root><value/></root>"));
XMLDocument doc2 = parser.getDocument();
doc2.print(System.out);
try {
doc2.validateContent(schema);
System.out.println("document2 validation succeed.");
} catch (XMLParseException e) {
System.err.println("document2 validation error: " + e.getMessage());
}
}
}
Вывод:
<root>
<value/>
</root>
document validation error: Element not completed: 'null'
<root>
<value/>
</root>
document2 validation succeed.
Почему в первом случае идет ошибка валидации?
Здравствуйте, Denis Popov, Вы писали:
DP>DP><root>
DP> <value/>
DP></root>
DP>document validation error: Element not completed: 'null'
DP><root>
DP> <value/>
DP></root>
DP>document2 validation succeed.
DP>
Есть ли stacktrace ошибки? А исходный код парсера? Попробуй в дебаггере посмотреть оба документа. Может там ссылка на родителя не проставилась али ещё что.
Blazkowicz wrote:
> Есть ли stacktrace ошибки? А исходный код парсера? Попробуй в дебаггере
> посмотреть оба документа. Может там ссылка на родителя не проставилась
> али ещё что.
Исходников к Oracle XDK по-моему нет, к сожалению, и нет архивов, собранных с дополнительной
отладочной информацией, как в JDBC. Трасса небольшая:
oracle.xml.parser.v2.XMLParseException: Element not completed: 'null'
at oracle.xml.parser.v2.XMLError.flushErrors(XMLError.java:271)
at oracle.xml.parser.v2.XMLElement.validateContent(XMLElement.java:2781)
at oracle.xml.parser.v2.XMLElement.validateContent(XMLElement.java:2697)
at local.oracle.xml.dom.DomValidateTest.main(DomValidateTest.java:50)
вот и гадай тут..
Posted via RSDN NNTP Server 2.1 beta