在同一部分中稍后又提到:“未带前缀的属性名称的命名空间名称始终没有值。”
因此,如果我想为元素(及其子元素)声明默认命名空间,那么我是否还需要为驻留在该命名空间中的任何属性声明前缀-命名空间映射?“默认命名空间声明中的属性值可以为空。在声明的范围内,这与不存在默认命名空间具有相同的效果。”
例如,在此示例中:
<parent xmlns="http://example.com/foo">
<child attrib="value">text</child>
<parent>
我会将上面的定义解释为
attrib
的命名空间为空。因此,如果我需要
attrib
和parent
具有相同的命名空间,则不得不这样做吗?<foo:parent xmlns:foo="http://example.com/foo">
<foo:child foo:attrib="value">text</foo:child>
<foo:parent>
或这个?
<parent xmlns="http://example.com/foo" xmlns:foo="http://example.com/foo">
<child foo:attrib="value">text</child>
<parent>
这对我来说似乎很愚蠢,因为它似乎违背了默认命名空间的目的。我希望我只是误解了规范。
<foo:child />
是@attrib
的'命名空间',那么我不需要添加其他前缀来提供命名空间。换句话说,它将是未限定的,这将被解释为在元素使用的任何命名空间中。这是正确的吗?这意味着我的第一个示例实际上是编写此内容的一种可行方式。 - mckamey