2010-11-19 81 views
1

我已經創建了一個基於XML的(特定於領域的)語言,我希望它會被廣泛使用。爲了「實現」它,我使用了一個xsd文件。如何選擇新的XML語言的名稱空間名稱?

直到現在我用這樣一個URL作爲XML的語言命名空間:

http://languagemainsite.org/lang/1.0/ 

現在,我不知道這是要選擇的命名空間的最佳方式,長期:

  1. 也許命名空間中的版本號是矯枉過正?它已經在「版本」屬性中定義過了,但我認爲每個版本都有不同的url會很好。
  2. 對此使用url總是好的嗎?
  3. ?????

有關爲基於xml的語言命名命名空間的任何建議嗎?

回答

2

如果在命名空間http://languagemainsite.org/lang/1.0/foo元素在語義上是不同的概念,命名空間中的一個http://languagemainsite.org/lang/1.1/元素foo,命名空間應該是不同的。如果他們不,如果郎-1.1 foo只是一個Lang-1.0 foo也許帶有一些額外的功能 - 它們應該在同一個命名空間中

例如,考慮XHTML 1.0中的<p>元素,XHTM L 1.1和XHTML5。它在所有版本的XHTML中在語義上是相同的(一段),因此它們都可以位於名稱空間中,即使它們在不同語言版本中具有不同的功能。

在命名空間中包含一個版本號使得向後兼容非常困難。支持兩種語言版本的應用程序必須切換命名空間以處理相同的命名元素,而支持版本1的應用程序實際上根本不能讀取版本2文檔。

因此,只有使用版本化命名空間纔能有意完全降低向後兼容性的新「主要版本」更新。否則,根元素上的version屬性通常是更好的主意。

是的,你應該使用一個URL,以避免與他人的名字空間衝突。將一些描述性信息放在您使用的網址上很有禮貌。

+0

因此,例如,您建議使用更類似http://languagemainsite.org/lang/1.x/的東西,對同一語言版本的所有兼容版本都有一個命名空間。那麼如果我不得不打破這個界面,就從http://languagemainsite.org/lang/2.x/這個新的命名空間開始吧? – Klaim 2010-11-19 09:46:44

+0

謝謝我正在使用languagemainsite.org/lang/1.x方法 – Klaim 2010-11-23 16:40:19

+0

是的,這就是這樣的事情。通常'.../lang1'和'.../lang2'。 – bobince 2010-11-23 22:17:41

0

我認爲這看起來像一個合理的名稱空間URI。

至於版本號;我認爲這是一個好主意。不能使用xml聲明中的版本號(它必須是1.0或者可能是1.1,並且規定xml解析本身是如何工作的,而不是包含數據或語言的版本。這是一種常用的做法,我沒有看到太多的價值在不包括它在那裏。