今天继续我的XSD questions:
在XSD文档中,有以下内容:
<element />
有效的构造?也就是说,它是一个没有名称,类型,任何东西的元素。完全是匿名的。
如果这是一个有效的XSD,那是什么意思?这样的元素将如何出现在XML中?
答案 0 :(得分:1)
@name
属性必须出现在全局XSD元素声明中。请参阅3.3.2 XML Representation of Element Declaration Schema Components,包括它所声明的位置(强调添加):
请注意,上面允许两个级别的默认值 未指定的类型定义。没有引用的
<element>
或 包含的类型定义将对应于元素声明 它的类型定义与其替换的头部相同 如果它识别一个组,否则为·ur-类型定义·。的 此 具有最小有效元素的重要结果 声明,即只有name属性而没有内容的声明, 也是(几乎)最通用的 ,验证任何文本组合 和元素内容,允许任何属性,并提供 在可能的情况下进行递归验证。
如果您希望允许任何元素,请考虑使用wildcards,例如xs:any
。但请注意,您至少需要命名根元素。
答案 1 :(得分:1)
取决于它的放置位置。
在xs:appInfo
或xs:documentation
(以及其他一些结构)中,任何内容都可能有效。
接下来这个元素:
<element />
不指定命名空间。所以它要么在错误的命名空间中,要么在上下文中的某个地方有xmlns="http://www.w3.org/2001/XMLSchema"
。
假设后者可能是全局(topLevelElement
)或本地(localElement
)元素定义。
在这两种情况下均无效:
name
属性。name
或ref
属性。我认为只是根据架构的schema,它可能在语法上有效,但有are restrictions in the specification:2如果项目的父项不是,则必须满足以下所有条件:
2.1必须存在引用或名称之一,但不能同时存在。