我正在創建一個eclipse rcp應用程序,我正在使用SAXParser來解析XML文檔。該「EventsDefinition.xsd」這我使用驗證XML文檔以下導入:如何告訴解析器在哪裏查找xml.xsd的本地副本?
<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
我把「EventsDefinition.xsd」 &「xml.xsd」在導出RCP的eclipse文件夾產品。
爲了訪問「EventsDefinition.xsd」,我使用了下面的代碼。
URL fileURL = new URL(Platform.getInstallLocation().getURL() + "EventsDefinition.xsd");
File eventsDefinitionFile = new File(fileURL.getPath());
parser.setProperty("http://java.sun.com/xml/jaxp/properties/schemaSource", eventsDefinitionFile);
這樣,解析器能夠訪問 「EventsDefinition.xsd」,而不是 「xml.xsd」 它引用,因爲它試圖找到與執行rcp應用程序的目錄相關的xml.xsd。
是否有類似的方法告訴解析器在eclipse文件夾而不是在當前的工作目錄中找到「xml.xsd」?
我試着在EventsDefinition.xsd中指定schemaLocation =「http://www.w3.org/2001/xml.xsd」,但它無法讀取模式。所以我必須使用導出產品的eclipse文件夾中存在的「xml.xsd」本地副本。
任何建議將非常有幫助。
我嘗試重命名命名空間名稱和命名空間前綴後,但它不起作用。 – 2012-04-19 07:18:22
事實上,我必須在我的rcp應用程序的eclipse文件夾中使用本地「xml.xsd」副本。它適用於從eclipse文件夾(其中存在xml.xsd文件)執行應用程序時,但是當我從其他目錄執行它時,它無法找到xml.xsd的相對位置。我只需要找到一種方法來通知解析器在哪裏尋找由我的EventsDefinition.xsd引用的「xml.xsd」。 – 2012-04-19 07:40:59