Java Xerces-SchemaFactory无法识别功能,但验证器可以识别

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

我正在尝试为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.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邮件列表是回答您问题的正确位置