2010-11-29 97 views
3

URI(5,6,7)實際上是否必須指向任何東西?在命名空間之後實際使用的uri是什麼?

當我將它們指向duff urls時,它似乎仍然可以驗證我的xml,那麼有什麼意義呢?

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema id="UploadXSD" 
    targetNamespace="UploadXSD" 
    elementFormDefault="qualified" 
    xmlns="http://tempuri.org/UploadXSD.xsd" 
    xmlns:mstns="http://tempuri.org/UploadXSD.xsd" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

    <xs:element name="Video"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="Title" minOccurs="1" type="xs:string"></xs:element> 
     <xs:element name="Description" minOccurs="1" type="xs:string"></xs:element> 
     <xs:element name="Contributor" minOccurs="1" type="xs:string"></xs:element> 
     <xs:element name="Subject" minOccurs="1" type="xs:string"></xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 

</xs:schema> 

回答

5

使用URNs作爲命名空間的一點是它們是唯一的。例如,您也可以使用GUID,但這樣它們更具可讀性。

當然,使用的URN給你可能性以使它們指向一個實際的資源,就像一個XSD文件,但是這是一個額外的好處,而不是必要的。

「tempuri」的東西只是默認名稱(「temp」+「uri」),您應該用一個真正的URN替換它以避免命名空間碰撞。

XMLSchema名稱空間實際上指向包含有關XML-Schema的信息的網站。

如果您正在使用XML文檔和Schema,請至少閱讀primer,以瞭解XML-Schema的可能性。有關XML命名空間的更多信息是here

+0

除了@TToni很好的答案,這就是答案*「那有什麼意義呢?」 *這個特定的XML文檔的問題:命名空間URI綁定到`xs`前綴聲明名稱中帶有`xs`前綴的所有元素都屬於XML Schema詞彙表;其他前綴名稱空間聲明通常用於用戶定義的數據類型(而不是`xs:string`,例如)與`xs:import`結合使用。最後,我認爲默認的名稱空間聲明被錯誤地使用了。使用`targetNamespace`屬性將無前綴元素的名稱綁定到特定的名稱空間URI。 – 2010-11-29 19:52:49

4

XML命名空間URI的(不是URL的)只是不透明的字符串。它們旨在防止XML結構中的衝突。就像其他語言的任何名稱空間一樣,它們不指向任何內容,但是它們定義了可以使用其內容的唯一名稱。

由於使用DNS註冊很容易,並且要保證全局唯一性,所以在您發佈的模式中使用這些名稱是一種常見做法。然而,它不是必需的,並且GUID可以工作(儘管它需要符合URI規範的方案前綴)。

回答您的問題:

不,URI的不需要任何點(他們的ID)。

當您更改命名空間的URI時,您將更改命名空間名稱,除此之外沒有別的。

希望這有助於

相關問題