假設我有兩個項目,A和B.Java項目,萬一這很重要。跨項目指定XSD schemaLocation的正確方法是什麼?
項目A包含一堆表示核心類型和元素的XSD文件。它們都被放置在一個稱爲「定義」的包中。這建立到project-a.jar
。
項目B代表一個擴展項目,它允許定義它自己的類型和元素。我創建了一個新的模式並將其放置在「definition.extension」包中。這被構建到project-b.jar
。
現在,對於項目B中的XSD,我應該將schemaLocation
作爲include
的具體值嗎?
schemaLocation="../core-types.xsd"
沒有太大的工作(我知道,它需要一個URI),但究竟是適當的還是標準的方法呢?谷歌發現我更多的人問這個問題,明確的標準方法是什麼纔是真正解決這個問題的正確方法。
這不能說我在編譯期間以編程方式調整schemaLocation
...或者我需要一個構建步驟/腳本,在編譯過程中動態替換schemaLocation
...對嗎?
我不是在尋找像「把他們放在一個共享位置」的答案。我正在尋找更多的東西,沿着使用相對引用而不是硬編碼引用的開發環境。
僅供參考,我使用的是IntelliJ IDEA,以防有IDE特定的方法。
[EntityResolver的](http://docs.oracle.com/javase/6/docs/api/ org/xml/sax/EntityResolver.html)可能是運行時的技術解決方案。 – Claude 2013-03-13 09:25:35
URI也可以引用嵌入到jar中的文件。見[這篇文章](http://stackoverflow.com/questions/2049659/get-a-file-or-uri-object-for-a-file-inside-an-archive-with-java)。 – geert3 2013-03-13 15:52:02
也許Class.getResource()或ClassLoader.getResource()?看到[這篇文章](http://stackoverflow.com/questions/6608795/what-is-the-difference-between-class-getresource-and-classloader-getresource) – CAB 2013-03-15 18:43:57