可以使用默认命名空间 (xmlns) 和指向同一 URI 的前缀命名空间吗?
我们正在尝试生成一些命名空间 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 中为每个元素添加前缀 - 利用默认值来使内容更具可读性。
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.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,这样做是完全可以的。例如,它通常在 XSD 中完成。
Yes, it's quite OK to do this. It's often done in XSD, for example.