在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"/>

这是否假设XSD架构命名空间别名为xs(不确定这是否是正确的术语(。

是的,必须声明名称空间前缀(如xs(:

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

是的,你可以使用foo而不是xs,但使用xsxsd,因为它们已经成为惯例,所以不会给读者带来任何惊喜。


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

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

并使用它:

xsi:type="xs:string"

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

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

<?xml version="1.0" encoding="UTF-8"?>
<foo:schema xmlns:foo="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<foo:simpleType name="newSimpleType">
<foo:restriction base="foo:string"/>
</foo:simpleType>
</foo:schema>

最新更新