【发布时间】:2010-10-09 23:44:55
【问题描述】:
在编程语言中,我习惯了
namespace foo
{
namespace bar
{
void DoIt()
{
}
}
}
int main()
{
foo::bar::DoIt()
}
在 schema(xsd) 中,我想在定义 complexTypes 时做类似的事情
<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 东西定义的完全第二个命名空间的示例。在这些示例中,bar stuff 将在第二个命名空间“http://www.stackoverflow.com/foo/bar”中定义,如下例所示。这是我见过的最接近“嵌套”命名空间的地方。
所以我可以做的一件事是从不同的架构导入 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 与 C++ 中的命名空间有何不同。 XML 中有嵌套命名空间的概念,还是每个命名空间独立?嵌套命名空间的概念是如何实现或通常完成的?是不是像我上面的例子一样?命名空间是完全独立的还是存在嵌套关系?
【问题讨论】:
标签: xml namespaces xsd