具有XML Schema本地副本的XML文件

我正在尝试一些XML Schema示例,并且必须使用示例XML文件对它们进行validation。 架构是本地文件(someFile.xsd)。 我正在使用eclipse并希望在XML文件中包含一个引用来指向这个本地xsd文件,以便eclipse可以向我建议这些元素。

我发现很难想出包含本地文件的语法。 有什么建议么 ?

这样的事情有用吗?

 <?xml version =“1.0”?>
 <注
的xmlns = “http://www.w3schools.com”
的xmlns:的xsi = “http://www.w3.org/2001/XMLSchema-instance”
 xsi:schemaLocation =“http://www.w3schools.com note.xsd”>
   <至>托弗
   <从>亚尼
   <标题>提醒
   本周末别忘了我!
 

复制自http://www.w3schools.com/Schema/schema_howto.asp

您可以将自己的ResourceResolver和LSInput实现设置为SchemaFactory,以便LSInput.getCharacterStream()的调用将提供本地路径的模式。

它试图在这里提供一个全面的例子 。

该方法基本上包括正确实现所谓的内容

 getSchemaAsStream(input.getSystemId(), input.getBaseURI(), localPath))); 

在以下代码的末尾。 此时,您必须使用自己的查找机制来查找本地路径上的模式文件。

 public void validate(InputStream xmlStream, InputStream schemaStream, String baseUri, String localPath) throws SAXException, IOException { Source xmlFile = new StreamSource(xmlStream); SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); factory.setResourceResolver((type, namespaceURI, publicId, systemId, baseURI) -> { LSInput input = new DOMInputImpl(); input.setPublicId(publicId); input.setSystemId(systemId); input.setBaseURI(baseUri); input.setCharacterStream(new InputStreamReader( getSchemaAsStream(input.getSystemId(), input.getBaseURI(), localPath))); return input; });