3

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

当我将它们指向 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>
4

2 回答 2

5

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

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

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

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

如果您经常使用 XML-Documents 和 Schemas,请至少阅读入门书,以了解 XML-Schema 的可能性。有关 XML 命名空间的更多信息在这里

于 2010-11-29T15:54:45.373 回答
4

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

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

要回答您的问题:

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

当您更改命名空间的 URI 时,您更改的是命名空间名称,仅此而已。

希望这可以帮助,

于 2010-11-29T15:56:28.993 回答