سؤال

وأنا أتساءل فقط إذا كان شخص ما يمكن أن تعطي لي رمز التحقق من الصحة XML لأكثر من مرة لمعرفة ما إذا أنا أفعل ذلك الحق. وهنا يكمن جزء من التعليمات البرمجية التي يتم إعطائي المتاعب ...

SAXParserFactory factory = SAXParserFactory.newInstance();

SchemaFactory schemaFactory = SchemaFactory
    .newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);

// *** CODE FAILS ON THE BELOW LINE **/
factory.setSchema(schemaFactory
    .newSchema(new Source[] { new StreamSource(schemaStream) }));

SAXParser parser = factory.newSAXParser();

SAXReader reader = new SAXReader(parser.getXMLReader());
reader.setValidation(false);
reader.setErrorHandler(new ResultProducingErrorHandler());
reader.read(content);

وكلما كنت تشغيل التعليمات البرمجية أعلاه، أحصل على خطأ على غرار:

src-resolve: Cannot resolve the name 'ns:myStructure' to a(n) 'type definition' component.

والعناصر المذكورة في رسائل الخطأ كلها تلك التي يتم استيرادها إلى مخطط عن طريق المكالمات إلى . يبدو أن مخطط للتحقق من صحة OK عبر W3C XML مخطط المصادقة .

هل يجب أن تشمل كل من هذه المخطط بشكل فردي أو غير جافا ذكي بما فيه الكفاية لتنفجر وجلب هذه المخطط اضافية في غاية؟ حاولت إضافتها في مجموعة تمريرها إلى دعوة newSchema ولكن ذلك لم يحدث أي فارق.

وأنا لا أعتقد أنني يمكن أن نعطيه الرابط إلى المخطط، لذلك أنا حقا تبحث فقط عن نعم أو لا فيما إذا كان رمز بلادي تبدو على الأقل مقبولة.

هل كانت مفيدة؟

المحلول

وتأكد من أن القيمة xs: بيانات الواردات تشير إلى المسارات التي يمكن الوصول إليها من الدليل الحالي من التطبيق الخاص بك. الدليل الحالي قد لا يكون ما كنت أعتقد أنه هو.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top