XML ファイルをそのスキーマに対して検証するときに出力されるデフォルトのエラー メッセージを特定の形式で設定したいと考えています。
エラー メッセージにスキーマ エラー コードを含めたくありません。すなわち、cvc-complex-type-2-4-b、cvc-mininclusive-valid など、
名前空間がエラー メッセージに出力されないようにします。たとえば、'{" http://sample.org/xml_schema ":schema_version}' のいずれかが期待されます。注 - XML と XSD は名前空間を使用します。
例えば、
デフォルトのエラー メッセージ:
"cvc-complex-type.2.4.a: 要素 'report_version' で始まる無効なコンテンツが見つかりました。'{" http://sample.org/xml_schema ":schema_version}' のいずれかが予期されます。"
予想されるエラー メッセージ:
「要素 'report_version' で始まる無効なコンテンツが見つかりました。'{schema_version}' のいずれかが必要です。」
コード :
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
try {
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = sf.newSchema(ClassLoader.getSystemResource("sample_schema.xsd"));
factory.setSchema(schema);
DocumentBuilder builder = factory.newDocumentBuilder();
builder.setErrorHandler(new ErrorHandler() {
@Override
public void warning(SAXParseException exception) {
System.out.println(exception.getMessage());
}
@Override
public void fatalError(SAXParseException exception) throws SAXException {
System.out.println(exception.getMessage());
}
@Override
public void error(SAXParseException exception) {
System.out.println(exception.getMessage());
}
});
doc = builder.parse(inputSource);
} catch(Exception e) {
}
これを達成する方法があれば教えてください。