第(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>
答案 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时,不更改命名空间名称。
希望这有帮助,