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

We're trying to generate some namespaced XML (attributes and all) but we're noticing some issues when outputting prefixes with both SimpleXML and DOMDocument in PHP. This is our test output:

<?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>

The reason I ask - we wanted to include the attributes in the namespace, but we're aware that attributes do not take the namespace of their containing element. We normally have a default namespace for our nodes. Thus, we concluded a prefix namespaced declaration would also be needed. However, when generating XML via SimpleXML or DOMDocument, prefixes are never added to the attributes.

Is there a better way? We were trying to avoid prefixing every element in the XML - utilising the default to make the content more readable.

Yes, it's quite OK to do this. It's often done in XSD, for example.