XML命名空间如何工作?

时间:2015-12-08 11:03:33

标签: php xml namespaces

我想知道XML命名空间是如何工作的。我读过它们应该是独一无二的等等。但没有资源说明它们是如何起作用的。

我的意思是我有像

这样的XML节点
<name xml:lang="en" type="abc">A name</name>

要使用php(SimpleXML)提取xml:lang,我需要使用以下代码:

$obj->attributes('http://www.w3.org/XML/1998/namespace');

此链接如何定义/告诉SimpleXML提取xml:*属性?我只看到那里的网页,而不是定义这个命名空间的单一定义。

由于How do XML namespaces work状态网址永远不会被解析。但是我解析的文档不包含此链接(名称空间定义)。

另外,在上面的问题中,有定义的命名空间。他们在哪里定义这个命名空间正好是human:*

1 个答案:

答案 0 :(得分:2)

  

&#34;此链接如何定义/告诉SimpleXML提取xml:*属性?我只看到那里的网页,而不是定义这个命名空间的单一定义。&#34;

xml:是XML规范中预定义的特殊前缀。它是命名空间名称http://www.w3.org/XML/1998/namespace绑定的前缀,这就是&#39;链接&#39;连接到前缀xml。请参阅:W3C : The "xml:" Namespace

  

&#34;另外,在上面的问题中,有定义的命名空间。他们在哪里定义这个命名空间正好是human:*?&#34;

前缀human未在该XML中的任何位置声明。我认为这是错误的,因为XML目前的形式并不完善。前缀声明应该xmlns:human而不是xmlns:html元素human:body

<human:body xmlns:human="http://www.example.com/human/">
    <human:height>182 cm</human:height>
    <human:weight>83 kg</human:weight>
</human:body>