首页 > 解决方案 > 在 XSD 类型属性中使用 XSD 命名空间前缀

问题描述

在这样的资源中,我们看到这样的例子:

<xs:element name="name" type="xs:string"/>

类型为"xs:string". 这是否假定 XSD 命名空间的前缀为xs.

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

<foo:schema xmlns:foo="http://www.w3.org/2001/XMLSchema">

如果我们这样做,第一个例子会变成吗?

<foo:element name="name" type="foo:string"/>

标签: xmlxsdxml-namespacesxsd-validationxml-validation

解决方案


这是否假设 XSD Schema 命名空间是别名(不确定这是否是正确的术语)为xs.

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

xmlns:xs="http://www.w3.org/2001/XMLSchema"

是的,您可以使用foo而不是xs,但使用xsor xsd,因为它们已成为惯例,因此至少会让读者感到惊讶。


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

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

并使用它:

xsi:type="xs:string"

另请参阅如何在 XSD 中使用 xsi:type 限制 XML 元素的值?


推荐阅读