为什么我们需要XML名称空间的URI?


23

我试图弄清楚为什么我们需要用于XML名称空间的URI,而我找不到这样做的目的。谁能在一个具体的例子中使我有所作为呢?

编辑:

好吧,例如:我来自w3schools

<root
xmlns:h="http://www.w3.org/TR/html4/"
 xmlns:f="http://www.w3schools.com/furniture">

 <h:table>
   <h:tr>
     <h:td>Apples</h:td>
     <h:td>Bananas</h:td>
   </h:tr>
 </h:table>

 <f:table>
   <f:name>African Coffee Table</f:name>
   <f:width>80</f:width>
   <f:length>120</f:length>
 </f:table>

 </root>

那么应该http://www.w3schools.com/furniture持有什么呢?



7
必填w3fools评论。
yannis 2011年

那么XML名称空间是否必须采用URI格式?还是可以只使用“ My.Namespace.Foo”之类的字符串?
2012年

Answers:


20

一个命名空间是说“这样的Foo”是由“那种富的”不同,即使它们拼写相同的方式。或者,如果您更喜欢“ 我的类型的Foo”与“ 其他人的类型的Foo”不同。

说这是“ 的Foo命名空间的URI”的技术方法不同于其他人为其Foo命名空间的URI。换句话说,URI只是允许您这样说的字符串。

然后,诀窍是说“嘿,URL是有效的URI”,然后使用与您控制下的URL对应的URI。如果每个人都这样做,那么可以避免意外的名称空间冲突。您也可以说名称空间“ A”和名称空间“ B”,但是您冒着其他人也将使用相同的名称空间的风险,然后您的Foo类型不再与它们的Foo不同,这正是您要避免的。

然后,您可以向用作URI的URL添加其他约定,例如,该URL必须与包含文档或XSD或类似内容的页面相对应,但这不是必需的。很方便。


好的,但是名称空间A和名称空间w3.org/1999/xhtml有什么区别?用户都可以使用它们两者,而不必知道他们使用了相同的名称空间。
Patryk

1
@Patryk,这就是为什么您使用可以控制的URL。xhtml命名空间URL受定义XHTML规范的W3C的控制。

2
@Patryk,还要注意的是定义 URL的命名空间。然后其他所有人都可以使用它们。

1
那么名称空间a将完全有效吗?愚蠢,但有效吗?还是必须是URI?
Rudie 2014年

5
如果几年前使用该约定的前几个人还在这些URL上放置了简洁明了的架构文档,那真是太棒了吗?微软的OpenXML名称空间schemas.openxmlformats.org/drawingml/2006/chart指向无内容
原型

16

一般而言,任何唯一标识符都可以用作名称空间;但是,由于该标准在全球范围内是唯一的,因此该标准要么必须授权某个仲裁机构,要么使用同时具有全球唯一性但易于掌握并证明属于您的另一资源。

哦,看!如果您拥有一个域,那么显然只有您一个域,并且很容易证明它是您的域!

例如,他们想避免两个不同的书店开始使用“书”作为命名空间,内部定义完全不同的情况。当他们在内部使用它时,没有问题;但是其中一个人想要发布自己的规范时,一切就一团糟。

相反,如果鼓励您使用域,那么任何人(好吧,拥有域的任何人)都可以定义自己的私有名称空间,并确信其他人都不会使用完全相同的标识符。

另外,您可以选择将名称空间的定义存储在URI中,以使其具有自记录功能。

对我来说似乎是个好主意。


感谢您的回答,但我需要更具体的内容来理解这一点。我添加了一些示例代码,您可以以此为基础,请看一看。
Patryk

1
@patryk-什么都没有,它不是地址-它只是一个唯一的令牌,您确定没有其他人可以将xml文件与has混合使用。它只是说名称<table>等将不会在顶部具有www.w3.org名称的任何xml文件中以任何不同的含义使用
Martin Beckett

好的,但是当维基百科说出用户可以将w3.org/1999/xhtml用作命名空间时,很多人将拥有相同的命名空间。我对吗 ?
Patryk

@Patryk,仅当您想将其用于相同用途时。如果您想定义一个新的名称空间,建议您使用自己的域
Javier

@Javier“相同用途”是什么意思?
Patryk

1

DOM级别2在2000年末发布。它引入了“ getElementById”功能以及事件模型,并支持XML名称空间和CSS。

xmlIns指定什么?
作为名称为“ xmlns”或“ xmlns:xxx”的属性节点,其名称空间与源XML文档中的名称完全相同。这是DOM提出的模型。

URI包含什么?
使用保留的XML伪属性xmlns或xmlns:prefix声明XML名称空间,其值必须是有效的名称空间名称。

例如,以下声明将“ xhtml:”前缀映射到XHTML命名空间:

xmlns:xhtml =“ http://www.w3.org/1999/xhtml”

正如我在阅读Wikipedia上的文章后发现的那样。URI包含名称空间的XML格式规范,提供了一种避免元素名称冲突的方法。

也许您知道xml文档XML Schema用于XML文档元素的element / table / class结构。

http://www.w3schools.com/furniture应该持有什么?

答案是在您了解XML命名空间的页面上。查阅Namespaces in Real Use有关W3Schools 文章的部分

检查下面的stackoverflow链接,该链接显示了该URI所承载的一些内容:

如何创建和使用XML名称空间?


-1

URI =名称空间的全局唯一名称或标识符

考虑建立有关石油行业物流财务管理的数据库或文档。这将需要为每个主题使用特定的词汇表(即受控术语):数据库,文档,管理,财务,物流,石油和工业。

如果这七个词汇中没有一个词重叠,则只需一个URI。但是,对于这些词汇中与其他词汇重叠的每个词汇,您需要在URI或IRI中标识的其他特定于主题的词汇。解决此问题的一种方法是创建合并的分类法,其中包含较宽泛的通用术语和较窄的主题特定术语。

然后,可以将其扩展为同义词库,该同义词库还显示术语的术语同义词,并允许在这些术语同义词中指定首选术语。


2
这篇文章很难阅读(文字墙)。您介意将其编辑为更好的形状吗?
t
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.