Java XSD:仅通过强制方式进行验证
我有以下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
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"/>