के आधार पर विफलता मैं एक्सएमएल सत्यापन करने की कोशिश कर रहा हूं। मुझे रन-टाइम (संभवतः एक जार में लपेटा गया) पर स्कीमा की एक सूची दी जा रही है। प्रमाणीकरण उस आदेश के आधार पर गुजरता है या विफल रहता है जिसमें मैं स्कीमा फैक्ट्री को स्कीमा प्रदान करता हूं।रनटाइम पर लोडिंग स्कीमा के साथ एक्सएमएल मान्य करें, स्कीमा ऑर्डर
private void validateXml(String xml, List<URI> schemas){
Source[] source = new StreamSource[schemas.size()];
int i=0;
for (URI f : schemas){
source[i++] = new StreamSource(f.openStream());
}
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NA_URI);
sf.setResourceResolver(new MyClassPathResourceResolver());
Schema schema = schemaFactory.newSchema(source);
Validator validator = schema.newValidator();
validator.validate(new StreamSource(new ByteArrayInputStream(xml.getBytes()));
फिर से, इस विफल रहता है स्कीमा के पारित कर दिया सेट स्कीमा के साथ शुरू करने के लिए नहीं है जो एक्सएमएल referrs के मूल तत्व:
यहाँ मैं क्या कर रहा हूँ है। क्या इसमें कोई फिक्स है या क्या मैं कुछ गलत कर रहा हूं?
क्या आप कहीं भी स्कीमा और एक्सएमएल पोस्ट कर सकते हैं? – davidfmatheson
@ डेविडफैमथेसन दुर्भाग्यवश यह संभव नहीं है, मैं कह सकता हूं कि यह स्कीमा का एक सेट है, रूट स्कीमा और दूसरी स्कीमा जो एक अलग टैग के साथ पहली स्कीमा के शरीर के प्रतिस्थापन की अनुमति देती है। –