何时使用W3C的xmlns和xmlns:xsi名称空间?

时间:2011-07-05 13:43:38

标签: xml namespaces xsd

我在这里有一个关于XML的基本问题。声明元素的xmlns属性时,使用http://www.w3.org/2001/XMLSchema是否合法?在声明xmlns:xsi属性时,使用http://www.w3.org/2001/XMLSchema-instance作为值是否合法?

我问这个是因为我看到一些XML编辑器自动生成的XML引用了这些命名空间,但是(至少在XMLSchema-instance页面上)W3C说“这个模式永远不应该这样使用: the XML Schema Recommendation禁止在此命名空间中声明属性“。

所以我很困惑;说出类似的话总是违法的:

<?xml version="1.0" encoding="UTF-8"?>
<myElement xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    [...]
</myElement>

...如果没有,为什么W3C似乎说永远不应该使用命名空间?一个人会用它做什么?我试图阅读XML 1.0规范,但它非常冗长且难以理解。

1 个答案:

答案 0 :(得分:2)

该命名空间不应该用于其他任何事情。它必须用于引用在该命名空间中声明的属性。

您不能在名称空间中声明属于其他人的任何元素或属性。这意味着您不能在“XMLSchema”命名空间中声明myElement


<?xml version="1.0" encoding="UTF-8"?> 
<root xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <genericElement xsi:type="xs:string">string</genericElement>
</root>