Java Xerces-SchemaFactory无法识别功能,但验证器可以识别
我正在尝试为Xerces XML验证设置功能。我很难找到/理解哪些功能对Java Xerces-SchemaFactory无法识别功能,但验证器可以识别,java,xerces,xml-validation,Java,Xerces,Xml Validation,我正在尝试为Xerces XML验证设置功能。我很难找到/理解哪些功能对SchemaFactory和验证器有效 我有以下代码: SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_US_URI); factory.setFeature("http://xml.org/sax/features/validation", true); Schema schema = factory.newSch
SchemaFactory
和验证器有效
我有以下代码:
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:功能'http://xml.org/sax/features/validation
但是,如果我注释掉SchemaFactory
的setFeature
,那么设置该功能对验证器
有效
因此,问题是:
为什么我可以在验证器
上设置该功能,而不能在SchemaFactory
上设置该功能
在哪里可以找到哪些功能对验证器
和SchemaFactory
有效的文档
仅供参考:我得到的SchemaFactory
是com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory
编辑
我尝试设置的其他一些功能没有成功:
http://xml.org/sax/features/namespaces
http://xml.org/sax/features/namespace-prefixes
来自
设置此SchemaFactory的功能,即此工厂创建的架构,
通过扩展,验证程序和验证处理程序由这些
模式
实现者和开发人员应该特别注意
处理newSchema()返回的特殊架构对象。在某些方面
例如,当SchemaFactory和类
加载模式来自不同的实现,可能不是
可以自动继承SchemaFactory功能。
开发人员应确保安全处理等功能,
在两个位置都显式设置
如您所见,由于某些限制,某些功能可能无法继承。话虽如此,.但问题不在于该功能没有传播到验证器,而是工厂无法识别它。此外,我不知道从哪里可以看到工厂和/或验证器可以识别哪些功能,因为我没有找到工厂可以识别的功能,而验证器只能识别其中一个。@JohnB xerces邮件列表是回答您问题的正确位置