我想知道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:*
属性?我只在那里看到网页,而不是定义这个名称空间的单个定义。
正如XML名称空间的工作原理一样,URL永远不会被解析。但是我解析的文档不包含这个链接(名称空间定义)。
此外,在上面的问题中,还定义了名称空间。他们在哪里定义这个名称空间正是human:*
?
"这个链接是如何定义/告诉SimpleXML提取
xml:*
属性的?我只在那里看到网页,而不是定义这个命名空间的单个定义。"
xml:
是XML规范中预定义的一个特殊前缀。它是命名空间名称http://www.w3.org/XML/1998/namespace
绑定到的前缀,这就是"链接"连接到前缀xml
的方式。请参阅:W3C:"xml:"命名空间。
"此外,在上面的问题中,有定义的命名空间。他们在哪里定义这个命名空间正是
human:*
?"
前缀human
没有在该XML中的任何位置声明。不过,我认为这是错误的,因为XML在当前形式中的格式不好。前缀声明应该是xmlns:human
,而不是human:body
元素处的xmlns:html
:
<human:body xmlns:human="http://www.example.com/human/">
<human:height>182 cm</human:height>
<human:weight>83 kg</human:weight>
</human:body>