use of javax.xml.validation.Schema in project nokogiri by sparklemotion.
the class XmlSchema method createSchemaInstance.
static XmlSchema createSchemaInstance(ThreadContext context, RubyClass klazz, Source source) {
Ruby runtime = context.getRuntime();
XmlSchema xmlSchema = (XmlSchema) NokogiriService.XML_SCHEMA_ALLOCATOR.allocate(runtime, klazz);
xmlSchema.setInstanceVariable("@errors", runtime.newEmptyArray());
try {
Schema schema = xmlSchema.getSchema(source, context.getRuntime().getCurrentDirectory(), context.getRuntime().getInstanceConfig().getScriptFileName());
xmlSchema.setValidator(schema.newValidator());
return xmlSchema;
} catch (SAXException ex) {
throw context.getRuntime().newRuntimeError("Could not parse document: " + ex.getMessage());
}
}
use of javax.xml.validation.Schema in project CoreNLP by stanfordnlp.
the class XMLUtils method getValidatingXmlParser.
/**
* Returns a validating XML parser given an XSD (not DTD!).
*
* @param schemaFile File wit hXML schema
* @return An XML parser in the form of a DocumentBuilder
*/
public static DocumentBuilder getValidatingXmlParser(File schemaFile) {
DocumentBuilder db = null;
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(schemaFile);
dbf.setSchema(schema);
db = dbf.newDocumentBuilder();
db.setErrorHandler(new SAXErrorHandler());
} catch (ParserConfigurationException e) {
System.err.printf("%s: Unable to create XML parser\n", XMLUtils.class.getName());
e.printStackTrace();
} catch (SAXException e) {
System.err.printf("%s: XML parsing exception while loading schema %s\n", XMLUtils.class.getName(), schemaFile.getPath());
e.printStackTrace();
} catch (UnsupportedOperationException e) {
System.err.printf("%s: API error while setting up XML parser. Check your JAXP version\n", XMLUtils.class.getName());
e.printStackTrace();
}
return db;
}
use of javax.xml.validation.Schema in project ORCID-Source by ORCID.
the class ValidateV2RC2SamplesTest method unmarshall.
private Object unmarshall(Reader reader, Class<?> type, String schemaPath) throws SAXException, URISyntaxException {
try {
JAXBContext context = JAXBContext.newInstance(type);
Unmarshaller unmarshaller = context.createUnmarshaller();
if (schemaPath != null) {
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = sf.newSchema(new File(getClass().getResource(schemaPath).toURI()));
unmarshaller.setSchema(schema);
}
return unmarshaller.unmarshal(reader);
} catch (JAXBException e) {
throw new RuntimeException("Unable to unmarshall orcid message" + e);
}
}
use of javax.xml.validation.Schema in project ORCID-Source by ORCID.
the class ValidateV2RC2SamplesTest method marshall.
private void marshall(Object object, String path) throws JAXBException, SAXException, URISyntaxException {
JAXBContext context = JAXBContext.newInstance(object.getClass());
Marshaller marshaller = context.createMarshaller();
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = sf.newSchema(new File(getClass().getResource(path).toURI()));
marshaller.setSchema(schema);
marshaller.marshal(object, System.out);
}
use of javax.xml.validation.Schema in project ORCID-Source by ORCID.
the class ValidateV2RC1SamplesTest method validateGroupIdValue.
@Test
public void validateGroupIdValue() throws SAXException, IOException, JAXBException {
SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
Schema schema = factory.newSchema(getClass().getResource("/group-id-2.0_rc1/group-id-2.0_rc1.xsd"));
Validator validator = schema.newValidator();
char[] alphabet = "abcdefghijklmnopqrstuvwxyz".toCharArray();
char[] upperAlphabet = "abcdefghijklmnopqrstuvwxyz".toUpperCase().toCharArray();
char[] numbers = "0123456789".toCharArray();
char[] validCharacters = "^._~:/?#[]@!$&'()*+,;=-".toCharArray();
//All valid characters
char[] allValid = ArrayUtils.addAll(alphabet, upperAlphabet);
allValid = ArrayUtils.addAll(allValid, numbers);
allValid = ArrayUtils.addAll(allValid, validCharacters);
String invalidCharactersString = "{}\"<>\\";
char[] invalidCharacters = invalidCharactersString.toCharArray();
//All valid and non valid characters
char[] allWithInvalids = ArrayUtils.addAll(allValid, invalidCharacters);
GroupIdRecord g1 = new GroupIdRecord();
g1.setDescription("description");
g1.setType("newsletter");
System.out.println("Validating group_id agains a list of 3000 valid values");
for (int i = 0; i < 3000; i++) {
String randomValue = "orcid-generated:" + RandomStringUtils.random(200, allValid);
g1.setName(randomValue);
g1.setGroupId(randomValue);
JAXBContext context;
context = JAXBContext.newInstance(GroupIdRecord.class);
Source source = new JAXBSource(context, g1);
try {
validator.validate(source);
} catch (Exception e) {
fail("fail validating: " + randomValue + " on iteration " + i);
}
}
System.out.println("Validating group_id agains a list of 3000 invalid values");
for (int i = 0; i < 3000; i++) {
String randomValue = "orcid-generated:" + RandomStringUtils.random(200, allWithInvalids);
boolean regenerateString = true;
do {
for (int j = 0; j < randomValue.length(); j++) {
if (invalidCharactersString.contains(String.valueOf(randomValue.charAt(j)))) {
regenerateString = false;
break;
}
}
if (regenerateString) {
randomValue += RandomStringUtils.random(3, invalidCharacters);
regenerateString = false;
}
} while (regenerateString);
g1.setName(randomValue);
g1.setGroupId(randomValue);
JAXBContext context;
context = JAXBContext.newInstance(GroupIdRecord.class);
Source source = new JAXBSource(context, g1);
try {
validator.validate(source);
fail(randomValue + " should not be vaild according to the XSD on iteration " + i);
} catch (Exception e) {
}
}
}
Aggregations