1

Xerces XML 検証の機能を設定しようとしています。と で有効な機能を見つける/理解するのに苦労していSchemaFactoryますValidator

次のコードがあります。

SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_US_URI);
factory.setFeature("http://xml.org/sax/features/validation", true);

Schema schema = factory.newSchema(mySchemaList);
Validator validator = schema.newValidator;
validator.setFeature("http://xml.org/sax/features/validation", true);

上記を実行すると、次のようになります。 SAXNotRecognizedException: Feature 'http://xml.org/sax/features/validation

ただし、 の をコメント アウトするsetFeatureSchemaFactory、機能の設定が で機能しValidatorます。

だから質問:

  1. では機能を設定できるのに では設定できValidatorないのはなぜSchemaFactoryですか?
  2. Validatorおよびで有効な機能に関するドキュメントはどこにありSchemaFactoryますか?

参考:SchemaFactory私が得ているのはcom.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory

編集

私が設定しようとして成功しなかった他の機能のいくつかは次のとおりです。

http://xml.org/sax/features/namespaces

http://xml.org/sax/features/namespace-prefixes

4

1 に答える 1

0

setFeatureのJavaDoc から

この SchemaFactory 、このファクトリによって作成されたスキーマ、および拡張により、それらのスキーマによって作成された Validators と ValidatorHandlers の機能を設定します。

実装者と開発者は、newSchema() によって返される特別な Schema オブジェクトがどのように処理されるかに特に注意を払う必要があります。たとえば、SchemaFactory と実際にスキーマをロードするクラスの実装が異なる場合など、SchemaFactory の機能を自動的に継承できない場合があります。開発者は、安全な処理などの機能が両方の場所で明示的に設定されていることを確認する必要があります。

ご覧のとおり、いくつかの制限により、一部の機能が継承されない場合があります。そうは言っても、Xerces 2.7.x バージョンにはこれに関するバグがあるようで、2.8.x 以降で修正されています。

于 2012-08-22T13:32:21.583 に答える