1

XML ファイルをそのスキーマに対して検証するときに出力されるデフォルトのエラー メッセージを特定の形式で設定したいと考えています。

  1. エラー メッセージにスキーマ エラー コードを含めたくありません。すなわち、cvc-complex-type-2-4-b、cvc-mininclusive-valid など、

  2. 名前空間がエラー メッセージに出力されないようにします。たとえば、'{" 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) {

}

これを達成する方法があれば教えてください。

4

1 に答える 1