10 package de.uni_hamburg.corpora.validation;
17 import java.io.FileInputStream;
18 import java.io.FileNotFoundException;
19 import java.io.IOException;
21 import java.util.ArrayList;
22 import java.util.regex.Matcher;
23 import java.util.regex.Pattern;
24 import javax.xml.transform.Source;
25 import javax.xml.validation.Schema;
26 import javax.xml.validation.SchemaFactory;
27 import javax.xml.validation.Validator;
28 import javax.xml.XMLConstants;
29 import org.apache.commons.cli.Option;
30 import org.xml.sax.SAXException;
50 stats = exceptionalCheck(data);
51 }
catch(SAXException saxe) {
53 }
catch(IOException ioe) {
60 private Report exceptionalCheck(String data)
61 throws SAXException, IOException {
63 Pattern xsdpattern = Pattern.compile(
"xsi2:schemaLocation\\s*=\\s*" +
64 "[\"']\\s*http://www.clarin.eu/cmd/?\\s\\s*([^\"']*)",
66 Matcher xsdmatch = xsdpattern.matcher(data);
67 String cmdiProfileXsdURL;
68 if (!xsdmatch.find()) {
70 stats.
addCritical(
"cmdi-xsd",
"No CMDI XML schema found " +
72 "xsi2:schemalocation=\"http://www.clarin.eu/cmd )");
75 cmdiProfileXsdURL = xsdmatch.group(1);
77 URL cmdiXsdURL =
new URL(cmdiProfileXsdURL);
79 SchemaFactory schemaFactory =
80 SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
81 Schema schema = schemaFactory.newSchema(cmdiXsdURL);
82 Validator validator = schema.newValidator();
84 validator.setErrorHandler(eh);
85 validator.validate(xmlStream);
91 "Checks CMDI file against XML Schema",
92 "If input is a directory, performs recursive check " +
93 "from that directory, otherwise checks input file");
96 System.out.println(
"Checking CMDI files against schema...");
101 System.out.println(
" * " + f.getName());
106 }
catch (FileNotFoundException fnfe) {
107 fnfe.printStackTrace();
113 public static void main(String[] args) {
CommandLine handleCommandLine(String[] args, List< Option > extraOptions)
Collection< File > getInputFiles()
static StreamSource String2StreamSource(String s)
static void main(String[] args)
Report doMain(String[] args)
void addCritical(String description)
static String InputStream2String(InputStream is)
Report check(String data)
void addException(Throwable e, String description)