XML中的名称空间
我正在浏览以前的考试集,其中一个问题与XML文档中名称空间的使用有关。问题如下:XML中的名称空间,xml,namespaces,Xml,Namespaces,我正在浏览以前的考试集,其中一个问题与XML文档中名称空间的使用有关。问题如下: 以下XML文档中元素foo的名称空间是什么 <xyz xmlns="http://baz.net" xmlns:foo="http://www.foo.org"> <namespace xmlns:xyz="http://www.foo.org"/> <def xmlns:dwebtek="http://www.cs.au.dk/dWebTek">
以下XML文档中元素foo的名称空间是什么
<xyz xmlns="http://baz.net" xmlns:foo="http://www.foo.org">
<namespace xmlns:xyz="http://www.foo.org"/>
<def xmlns:dwebtek="http://www.cs.au.dk/dWebTek">
<foo foo:xmlns="http://www.bar.com"/>
</def>
</xyz>
我最初的想法是选择2。我注意到他们在foo元素标记中交换了foo和xmlns。这有什么影响?这仍然被认为是格式良好的XML吗 我的第二个想法是选项1,因为在xyz元素标记中,它们将foo的名称空间定义为“” 然而,检查答题纸,它说正确的答案是选项3。为什么会这样?这可能是答案键中的错误吗?如果不是,为什么选项2不正确
编辑:小修正正确答案是3 让我们详细回顾一下声明的名称空间是什么,以便找出原因 第一行:
<xyz xmlns="http://baz.net" xmlns:foo="http://www.foo.org">
它附加了http://www.foo.org
指向xyz
前缀的命名空间URI<代码>标签已附加到http://baz.net
此时的命名空间URI,因为它没有前缀
第三行
<namespace xmlns:xyz="http://www.foo.org"/>
<def xmlns:dwebtek="http://www.cs.au.dk/dWebTek">
<foo foo:xmlns="http://www.bar.com"/>
这里有一个技巧,foo:xmlns
不是一个命名空间声明,因为它不是以xmlns
开头的。它是属性xmlns
,前缀为foo
(即使这里的属性正确,也不建议将其命名为xmlns)。元素
没有前缀,由于从一开始就使用xmlns
,即http://baz.net
(另一个原因是在文档中的任何其他地方都找不到另一个xmlns
)
注意:
<xyz xmlns="http://baz.net" xmlns:foo="http://www.foo.org">
在您的文档中有这样一行:
<foo xmlns="http://www.bar.com"/>
这次正确答案应该是2。正确答案确实是3 让我们详细回顾一下声明的名称空间是什么,以便找出原因 第一行:
<xyz xmlns="http://baz.net" xmlns:foo="http://www.foo.org">
它附加了http://www.foo.org
指向xyz
前缀的命名空间URI<代码>标签已附加到http://baz.net
此时的命名空间URI,因为它没有前缀
第三行
<namespace xmlns:xyz="http://www.foo.org"/>
<def xmlns:dwebtek="http://www.cs.au.dk/dWebTek">
<foo foo:xmlns="http://www.bar.com"/>
这里有一个技巧,foo:xmlns
不是一个命名空间声明,因为它不是以xmlns
开头的。它是属性xmlns
,前缀为foo
(即使这里的属性正确,也不建议将其命名为xmlns)。元素
没有前缀,由于从一开始就使用xmlns
,即http://baz.net
(另一个原因是在文档中的任何其他地方都找不到另一个xmlns
)
注意:
<xyz xmlns="http://baz.net" xmlns:foo="http://www.foo.org">
在您的文档中有这样一行:
<foo xmlns="http://www.bar.com"/>
这次正确答案应该是2。那么你怎么能说这个解释是正确的呢?可以查询
DECLARE @t XML = '
<xyz xmlns="http://baz.net" xmlns:foo="http://www.foo.org">
<namespace xmlns:xyz="http://www.foo.org"/>
<def xmlns:dwebtek="http://www.cs.au.dk/dWebTek">
<foo foo:xmlns="http://www.bar.com"/>
</def>
</xyz>';
这样就证明了他是正确的。那么你怎么知道他的解释是正确的呢?可以查询
DECLARE @t XML = '
<xyz xmlns="http://baz.net" xmlns:foo="http://www.foo.org">
<namespace xmlns:xyz="http://www.foo.org"/>
<def xmlns:dwebtek="http://www.cs.au.dk/dWebTek">
<foo foo:xmlns="http://www.bar.com"/>
</def>
</xyz>';
这证明了他是。非常感谢。我现在明白问题所在了。把前缀命名为foo,把元素命名为foo,这让我很困惑。谢谢你的帮助!非常感谢你。我现在明白问题所在了。把前缀命名为foo,把元素命名为foo,这让我很困惑。谢谢你的帮助!从技术上讲,名称空间不能是空字符串,但可以是“空名称空间”。从技术上讲,名称空间不能是空字符串,但可以是“空名称空间”。