是否可以使用默认命名空间(xmlns)和指向同一URI的带前缀的命名空间?

时间:2011-09-05 08:20:15

标签: php xml simplexml domdocument xml-namespaces

我们正在尝试生成一些命名空间的XML(属性和所有),但我们在PHP中输出带有SimpleXML和DOMDocument的前缀时会注意到一些问题。这是我们的测试输出:

<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:a="http://default" xmlns:b="http://extra" xmlns="http://default">
  <a:test_default>alpha</a:test_default>
  <b:test_extra>bravo</b:test_extra>
</root>

我问的原因 - 我们想在命名空间中包含属性,但我们知道属性不会占用其包含元素的命名空间。我们的节点通常有一个默认命名空间。因此,我们总结了一个前缀命名空间声明也是必需的。但是,通过SimpleXML或DOMDocument生成XML时,前缀永远不会添加到属性中。

有更好的方法吗?我们试图避免为XML中的每个元素添加前缀 - 利用默认值使内容更具可读性。

1 个答案:

答案 0 :(得分:0)

是的,这样做很好。例如,它通常在XSD中完成。