在编程语言,我已经习惯了嵌套xml名称空间的做法是什么?
namespace foo
{
namespace bar
{
void DoIt()
{
}
}
}
int main()
{
foo::bar::DoIt()
}
在架构(XSD),我想定义复合类型
<xsd:schema targetNamespace="http://www.stackoverflow.com/foo">
<xsd:complexType name="bar1">
...
</xsd:complexType>
<xsd:complexType name="bar2">
</xsd:complexType>
...
<xsd:complexType name="foo1" type = "bar1">
...
</xsd:complexType>
</xsd:schema>
概念我想BAR1和BAR2时候做类似的事情嵌套在http://www.stackoverflow.com/foo::bar命名空间(::从C++借用)中。我已经看到了什么似乎完全是为酒吧定义的第二个命名空间的例子。在这些例子中,bar stuff会在第二个命名空间“http://www.stackoverflow.com/foo/bar”中定义,如下例所示。这是我看到的最接近“嵌套”名称空间的。
这么一件事我可以种做的是从不同的模式导入棒的东西
<xsd:schema targetNamespace="http://www.stackoverflow.com/foo"
xmlns:bar = "http://www.stackoverflow.com/foo/bar">
<xsd:schema namespace="http://www.stackoverflow.com/foo/bar"
<xsd:complexType name="foo1">
<xsd:element name="bar1Instance" type="bar:bar1"/>
...
</xsd:complexType>
</xsd:schema>
部分。这是我只是想神交命名空间如何在XML不同VS说C++。 XML中是否存在嵌套命名空间的概念,或者每个命名空间都是独立的?嵌套命名空间的概念如何实现或通常完成?它是否像我上面的例子一样完成?命名空间是完全独立的还是有创建嵌套关系的?
只有一个尼特:XML名称空间*是必需的*是合法的IRI(国际化资源标识符),它是URI的超集,它是URL的超集。虽然你的真实点是绝对正确的;解析器将该名称空间视为完全不透明的字符串。 Ref:http://www.w3.org/TR/REC-xml-names/ – Peeja 2009-05-01 19:13:22