命名空间后实际使用的uri是什么?

时间:2010-11-29 15:48:28

标签: xml xsd xml-validation

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

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

2 个答案:

答案 0 :(得分:5)

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

当然,使用URN可以将的可能性指向实际资源,例如xsd文件,但这是一个额外的好处,而且不是必需的。

“tempuri”事物只是默认名称(“temp”+“uri”),您应该用真实的URN替换它以避免命名空间碰撞。

XMLSchema名称空间实际上指向包含有关XML-Schema的信息的网站。

如果您经常使用XML-Documents和Schemas,请至少阅读primer,以了解XML-Schema的可能性。有关XML Namespaces的更多信息,请参见here

答案 1 :(得分:4)

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

由于易于使用DNS注册并且保证全局唯一,因此在您发布的架构中使用这些名称是一种常见做法。但是它不需要并且GUID可以工作(尽管它需要一个符合URI规范的方案前缀)。

回答你的问题:

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

更改命名空间的URI时,不更改命名空间名称。

希望这有帮助,