JAVA中的XSD验证错误

时间:2012-01-13 00:21:10

标签: java xml validation xsd

我正在尝试使用以下代码

从给定的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'.

问题是什么,我应该如何解决?

1 个答案:

答案 0 :(得分:6)

您的架构中有错误,全局表示元素不能有约束(maxOccurs =“1”minOccurs =“1”),您需要删除它们(全局使用min / max没有意义)元素,这些约束在其他元素的上下文中是有意义的)。 有关XSD入门的更多信息:http://www.w3.org/TR/2004/REC-xmlschema-0-20041028/#Globals