2015-04-09 3 views
1

У нас есть два файла схемы (XSD), а один файл - другой. Когда мы загружаем файл схемы для проверки файлов XML, он не загружается должным образом в веб-приложении. Он бросает ошибку для включенных элементов файла схемы.Как загрузить несколько XSD в веб-приложении?

 Source[] sources = new StreamSource[2]; 

      Source schemaFile = new StreamSource(Test.class.getClassLoader().getResourceAsStream(“a.xsd”)); 
      sources[0] = schemaFile; 

      Source schemaFile1 = new StreamSource(Test.class.getClassLoader().getResourceAsStream(“b.xsd”)); 
      sources[1] = schemaFile1; 

      Schema schema = factory.newSchema(sources); 

b.xsd содержит файл a.xsd. Но тот же код работает нормально, когда мы запускаем его в основном методе.

Может кто-нибудь дать предложение исправить эту проблему?

Мы можем сделать это с помощью LSResourceResolver в пакете org.w3c.dom.ls. Problem validating an XML file using Java with an XSD having an include

Есть ли способ сделать это с помощью javax в приложении для веб-баз?

Ошибка:

org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'ns:Request'. 
     at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source) 
     at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source) 
     at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) 
     at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) 
     at org.apache.xerces.impl.xs.XMLSchemaValidator.handleStartElement(Unknown Source) 
     at org.apache.xerces.impl.xs.XMLSchemaValidator.startElement(Unknown Source) 
     at org.apache.xerces.jaxp.validation.DOMValidatorHelper.beginNode(Unknown Source) 
     at org.apache.xerces.jaxp.validation.DOMValidatorHelper.validate(Unknown Source) 
     at org.apache.xerces.jaxp.validation.DOMValidatorHelper.validate(Unknown Source) 
     at org.apache.xerces.jaxp.validation.ValidatorImpl.validate(Unknown Source) 
     at javax.xml.validation.Validator.validate(Unknown Source) 
+1

какая ошибка вы получаете? –

ответ

1

LSResourceResolver является хорошим, используя весь XML разрешающую инфраструктуры.

Простой хак будет:

  • вместо того, чтобы использовать потоки из загрузчика классов, копирование обоих файлов схемы для временного расположения
  • использовать пути файлов копируемых файлов вместо

Или намного проще

  • хранить свои схемы не в папке src рядом с классовой s, но в папке с веб-сайтом. Вы можете получить реальные пути к ресурсам в Интернете и использовать их для запуска схем.
Смежные вопросы