Ich versuche, einen Atom-Feed mit Java 5 (JRE 1.5.0 Update 11) zu validieren. Der Code, den ich habe, funktioniert ohne Probleme in Java 6, schlägt aber fehl, wenn er in Java 5 mit einer
org.xml.sax.SAXParseException: src-resolve: Cannot resolve the name 'xml:base' to a(n) 'attribute declaration' component.
Ich glaube, ich erinnere mich, etwas über die Version von Xerces gebündelt mit Java 5 mit einigen Problemen mit einigen Schemas zu lesen, aber ich kann nicht die Problemumgehung finden. Ist das ein bekanntes Problem? Habe ich einen Fehler in meinem Code?
public static void validate() throws SAXException, IOException {
List<Source> schemas = new ArrayList<Source>();
schemas.add(new StreamSource(AtomValidator.class.getResourceAsStream("/atom.xsd")));
schemas.add(new StreamSource(AtomValidator.class.getResourceAsStream("/dc.xsd")));
// Lookup a factory for the W3C XML Schema language
SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
// Compile the schemas.
Schema schema = factory.newSchema(schemas.toArray(new Source[schemas.size()]));
Validator validator = schema.newValidator();
// load the file to validate
Source source = new StreamSource(AtomValidator.class.getResourceAsStream("/sample-feed.xml"));
// check the document
validator.validate(source);
}
Update : Ich habe die folgende Methode ausprobiert, aber ich habe immer noch das gleiche Problem, wenn ich Xerces 2.9.0 verwende. Ich habe auch versucht, xml.xsd zur Liste der Schemata hinzuzufügen (da xml:base in xml.xsd definiert ist), aber dieses Mal habe ich
Exception in thread "main" org.xml.sax.SAXParseException: schema_reference.4: Failed to read schema document 'null', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not <xsd:schema>.
Update 2: Ich habe versucht, einen Proxy mit den VM-Argumenten zu konfigurieren -Dhttp.proxyHost=<proxy.host.com> -Dhttp.proxyPort=8080
und jetzt funktioniert es. Ich werde versuchen, von zu Hause aus eine "richtige Antwort" zu geben.
und sorry, ich kann nicht als Kommentar antworten: aus Sicherheitsgründen ist XHR bei der Arbeit deaktiviert ...