2012-08-22 6 views
1

Xerces XML 유효성 검사 기능을 설정하려고합니다. SchemaFactoryValidator에 대해 어떤 기능이 유효한지 찾기/이해하는 데 어려움을 겪고 있습니다.Xerces - 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

그러나 나는의 SchemaFactorysetFeature을 주석 기능을 설정하면 Validator 작동합니다.

그래서 질문 :

  1. 이유는 Validator에 있지만 SchemaFactory을의 기능을 설정할 수 있습니까?
  2. ValidatorSchemaFactory에 대해 유효한 기능은 어디서 찾을 수 있습니까? 참고로

: 나는 점점 오전 SchemaFactory입니다 com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory

편집

내가 성공하지 설정하려고 한 다른 기능 중 일부는 다음과 같습니다

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

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

답변

0

Fr 옴 JavaDoc of setFeature

이 SchemaFactory를위한 기능을 설정, 스키마는 검사기 그 스키마에 의해 생성 ValidatorHandlers이 공장 에 의해 확장에 의해 만들었습니다.

newSchema()에 의해 반환 된 특수 스키마 객체가 처리되는 방법에 특히주의해야합니다. 예를 들어 의 경우 SchemaFactory와 실제로 스키마를로드하는 클래스 이 다른 구현에서 가져온 경우 SchemaFactory 기능이 자동으로 상속 될 수 없으므로 일 수 있습니다. 개발자는 보안 처리, 과 같은 기능을 명시 적으로 두 위치에 모두 설정해야합니다.

보시다시피 일부 기능으로 인해 일부 기능이 상속되지 않을 수 있습니다. 그런 말로, Xerces 2.7.x version seems to have a bug around this which was fixed from the 2.8.x onwards.

+0

하지만이 기능은 유효성 검사기로 전파되지 않고 공장에서 인식 할 수 없습니다. 또한 공장에서 인식하는 기능을 찾지 못했고 유효성 검사기에서 인식하는 기능을 찾지 못 했으므로 어떤 기능이 공장 및/또는 유효성 검사기에서 인식되는지 어디서 볼지 모르겠습니다. –

+0

@JohnB xerces 메일 링리스트가 귀하의 질문에 적합한 장소입니다. –