Xml 在XSD类型属性中使用XSD命名空间前缀

Xml 在XSD类型属性中使用XSD命名空间前缀,xml,xsd,xml-namespaces,xsd-validation,xml-validation,Xml,Xsd,Xml Namespaces,Xsd Validation,Xml Validation,在参考资料中,我们可以看到如下示例: 其中,类型为“xs:string”。这是否假定XSD名称空间的前缀为xs 例如,打开我们的XSD文档是否合法 如果我们这样做了,第一个例子会变成什么 这是否假定XSD模式名称空间被别名为xs 是,必须声明命名空间前缀,如xs: xmlns:xs="http://www.w3.org/2001/XMLSchema" 是的,你可以使用foo而不是xs,但是可以使用xs或xsd,因为它们已经成为惯例,因此不会让读者感到惊讶 如果

在参考资料中,我们可以看到如下示例:


其中,类型为
“xs:string”
。这是否假定XSD名称空间的前缀为
xs

例如,打开我们的XSD文档是否合法


如果我们这样做了,第一个例子会变成什么


这是否假定XSD模式名称空间被别名为
xs

是,必须声明命名空间前缀,如
xs

xmlns:xs="http://www.w3.org/2001/XMLSchema"
是的,你可以使用
foo
而不是
xs
,但是可以使用
xs
xsd
,因为它们已经成为惯例,因此不会让读者感到惊讶


如果直接在XML中定义类型,还需要声明

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
并使用它:

xsi:type="xs:string"

另请参见

是的,我找到了一种比搜索和阅读更容易回答这个问题的方法。使用OxygenXML,以下内容是有效的



我很好奇,为什么要使用
foo
命名空间前缀作为
http://www.w3.org/2001/XMLSchema
而不是更传统的
xs
xsd
?当有经验的开发人员看到
base=“foo:string”
时,他们一开始会倾向于认为类型是自定义字符串而不是内置字符串。我完全同意@kjhughes。这里有一个关于MS SQL Server中预定义名称空间的好链接:我不想这样做,但我正在编写解析XSD并从中生成代码的代码,因此我至少需要考虑边缘情况,而不是像“xs:string”@MatthewJamesBriggs这样的硬编码错误“完成工作”。理解。如果您使用的是XML解析器,而且您绝对应该这样做,那么您必须尽力开发对所用名称空间前缀细节的依赖性。简单地说,不要那样做。