为什么我们不能为XML名称空间使用随机字符串而不是URI?

时间:2019-04-27 18:12:02

标签: xml xsd uri xml-namespaces xml-validation

我试图理解XML命名空间约定的原因(将URI用于命名空间)。

我已经在StackOverflow上阅读了this thread。我知道名称空间的全名应该是唯一的。但是我还是不明白为什么我们不能只使用随机字符串呢?

例如,我们正在尝试将真实汽车与玩具汽车中的汽车区分开:

<?xml version="1.0" encoding="UTF-8"?>
<carstore xmlns:real="http://cxf.apache.org/jaxws/cars/real" xmlns:toy="http://cxf.apache.org/jaxws/cars/toy">
<real:car category="truck">
    <model lang="en">Scania R 770</model>
    <year>2005</year>
    <price currency="US dollar">200000.00</price>
</real:car>
<toy:car category="sedan">
    <title lang="en">Ford Focus</title>
    <year>2012</year>
    <price currency="US dollar">100.00</price>
</toy:car>
</carstore>


<?xml version="1.0" encoding="UTF-8"?>
<carstore xmlns:real="heroigairehgoiaer7272" xmlns:toy="289ry89fhfhbvnsdkljnv">
<real:car category="truck">
<model lang="en">Scania R 770</model>
<year>2005</year>
<price currency="US dollar">200000.00</price>
</real:car>
<toy:car category="sedan">
<title lang="en">Ford Focus</title>
<year>2012</year>
<price currency="US dollar">100.00</price>
</toy:car>
</carstore>

如果有人能解释为什么选择此选项,我将不胜感激

xmlns:real="http://cxf.apache.org/jaxws/cars/real"

比这更好:

xmlns:real="heroigairehgoiaer7272"

使用第二种方法会面对哪些负面后果? 可能有真实的例子吗?

1 个答案:

答案 0 :(得分:3)

随机,唯一,字符串可以用于命名空间值,但是...

基于URI的名称空间相对于随机字符串具有优势:

  1. 利用  域名的就地所有权机制避免了  复制该功能以控制名称空间。
  2. 域名传达所有权,这对于识别  负责名称空间的团体或项目。
  3. 尽管namespace URIs do not have to be retrievable,但它们可以是和  通常是这样,因此成为管理架构的方便的检索方式  或文档。
  4. URI的
  5. 层次结构性质可以反映自然层次结构  组织名称收集。