我想知道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:*
?
答案 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>