Xml uri是什么';在名称空间之后实际用于什么?

Xml uri是什么';在名称空间之后实际用于什么?,xml,xsd,xml-validation,Xml,Xsd,Xml Validation,第(5,6,7)行中的URI实际上必须指向任何东西吗 当我将它们指向duffurl时,似乎仍然可以验证我的xml,那么这有什么意义呢 <?xml version="1.0" encoding="utf-8"?> <xs:schema id="UploadXSD" targetNamespace="UploadXSD" elementFormDefault="qualified" xmlns="http://tempuri.org/UploadXSD.xs

第(5,6,7)行中的URI实际上必须指向任何东西吗

当我将它们指向duffurl时,似乎仍然可以验证我的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>

将URN用作名称空间的意义在于它们是唯一的。例如,您也可以使用GUID,但这样它们更具可读性

当然,使用URN可以让您将它们指向实际的资源,如xsd文件,但这是一个额外的好处,不是必需的

“tempuri”只是默认名称(“temp”+“uri”),您应该将其替换为真正的URN,以避免名称空间冲突

XMLSchema名称空间实际上指向一个包含XML模式信息的网站

如果经常使用XML文档和模式,请至少阅读,以了解XML模式的可能性。有关XML名称空间的更多信息如下。

XML名称空间URI(不是URL)只是不透明字符串。它们旨在防止XML结构中的冲突。就像任何支持名称空间的其他语言一样,它们不指向任何东西,而是定义一个唯一的名称,通过该名称可以使用其内容

由于使用DNS注册很容易,并且可以保证其全局唯一性,因此通常在发布的模式中使用这些名称。然而,它是不需要的,GUID也可以工作(尽管它需要一个符合URI规范的方案前缀)

回答您的问题:

不,URI不需要指向任何东西(它们是ID)

更改名称空间的URI时,只更改名称空间名称,而不更改其他名称


希望这会有所帮助,

除了@TToni好的答案之外,这是这个特定XML文档的“那么重点是什么?”问题的答案:绑定到
xs
前缀的名称空间URI声明名称中带有
xs
前缀的所有元素都属于XML模式词汇表;其他带前缀的命名空间声明通常用于用户定义的数据类型(例如,与
xs:import
组合使用的是
xs:string
)。最后,我认为默认名称空间声明被错误地使用了。使用
targetNamespace
属性将未固定元素的名称绑定到特定的命名空间URI。