我正在尝试使用以下代码
从给定的XSD文件验证我的XML文件 Source xmlFile = new StreamSource(fXmlFile);
SchemaFactory schemaFactory = SchemaFactory
.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(new File("presentation.xsd"));
Validator validator = schema.newValidator();
try {
validator.validate(xmlFile);
System.out.println(xmlFile.getSystemId() + " is valid");
} catch (SAXException e) {
System.out.println(xmlFile.getSystemId() + " is NOT valid");
System.out.println("Reason: " + e.getLocalizedMessage());
}
我上传了我的XSD文件到这里给你看:http://orhancanceylan.com/stack/presentation.xsd
但是当我运行我的代码时,我收到了这个错误:
org.xml.sax.SAXParseException: s4s-att-not-allowed: Attribute 'maxOccurs' cannot appear in element 'element'.
问题是什么,我应该如何解决?
答案 0 :(得分:6)
您的架构中有错误,全局表示元素不能有约束(maxOccurs =“1”minOccurs =“1”),您需要删除它们(全局使用min / max没有意义)元素,这些约束在其他元素的上下文中是有意义的)。 有关XSD入门的更多信息:http://www.w3.org/TR/2004/REC-xmlschema-0-20041028/#Globals