Java XSD:仅通过强制方式进行验证

Java XSD:仅通过强制方式进行验证,java,xml,validation,xsd,Java,Xml,Validation,Xsd,我有以下XSD验证: SchemaFactory schemaFactory = SchemaFactory .newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); Schema schema = schemaFactory.newSchema(new File(xsdPath)); validator = schema.newValidator(); Source xml = new StreamSource(new ByteA

我有以下XSD验证:

SchemaFactory schemaFactory = SchemaFactory
           .newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(new File(xsdPath));
validator = schema.newValidator();
Source xml = new StreamSource(new ByteArrayInputStream(xml));
validator.validate(vastXml);
如何仅通过必填字段/元素验证XML
(minOccur>0,use=“required”)

i、 e如果XML中存在不在XSD中的上下文,则验证将成功。

只有当其中一个必填字段丢失时,才会失败。

XML架构支持未在架构中定义的元素的占位符,但这独立于
minOccurs
属性:

<xs:any processContents="lax"/>
  • 应该如何严格处理。在您的情况下,
    lax
    将确保即使未定义元素,XML文档也会进行验证<但是,code>strict要求存在模式定义
    skip
    只接受任何内容

    <xs:any namespace="##any" processContents="lax"/>
    <xs:any namespace="##any" processContents="strict"/>
    <xs:any namespace="##any" processContents="skip"/>
    
    
    

  • 如果要检查某些约束,但不检查其他约束,唯一的方法是修改模式,使其仅包括要检查的约束。我认为任何模式处理器都不会允许您有选择性地检查某些约束,但不会检查其他约束。

    有效,谢谢!
    <xs:any namespace="##any" processContents="lax"/>
    <xs:any namespace="##any" processContents="strict"/>
    <xs:any namespace="##any" processContents="skip"/>