开放内容模型
开放内容模型是XSD 1.1中的新功能。它们在复杂类型上声明,并允许任何元素(即复杂类型的内容模型中未定义的元素)出现任意次数,要么在(i) 内容模型中定义的元素之间,要么在(ii) 内容模型中定义的元素之后。
openContent元素是复杂类型的子元素,并在复杂类型的内容模型之前出现一次(参见下方截图)。
Mode
openContent元素有一个必需的mode特性,它的值可以是interleave、suffix或none(参见下方截图)。默认值为interleave。
这些值有以下含义:
•如果mode="interleave"或mode="suffix",则通配符元素内容(xs:any)必须存在,没有最小或最大出现次数。这意味着允许任意数量的未定义的元素(通配符)。
•如果mode为interleave,则任意数量的未定义的元素可以在内容模型中的每个定义的元素之前或之后。它们位于定义的元素之间。
•如果mode为suffix,则任意数量的未定义的元素可以出现在内容模型的最后一个定义的元素之后。
•如果mode为none,则不会出现未定义的元素(xs:any);内容模型不是开放的。none值是用来覆盖整个Schema内的defaultOpenContent元素。
在内容模型视图中,将开放内容添加为复杂类型的子级(通过上下文菜单中的添加子级)。要指定mode,请双击图表中的openContent框(参见上方截图)并选择一个值(interleave、suffix或none),或在“详细信息”输入助手中选择一个值。
通配符(xs:any)属性
可以在通配符的“详细信息”输入助手中指定通配符的属性。为此,请在图表中选择通配符并在“详细信息”输入助手中输入属性值。
默认开放内容
defaultOpenContent元素是XSD 1.1中的新元素,它指定一个或多个未定义的元素可以被添加到任何复杂类型的混合或仅元素内容中。它类似于openContent元素(也是XSD 1.1的新元素),主要区别在于openContent元素适用于Schema中的单个复杂类型,而defaultOpenContent元素适用于所有复杂类型。
defaultOpenContent元素是全局组件并在文档中出现一次(参见下方截图),在include、import、redefine和override之后,在组件的定义之前。它有一个mode特性,其值可以是interleave或suffix。默认为interleave。
defaultOpenContent元素具有一个您可以在内容模型视图中编辑的内容模型,与openContent元素定义的方式完全相同(参见上文)。一旦声明,defaultOpenContent元素将自动应用于Schema中的所有复杂类型并在其内容模型中显示。在下方截图中,您可以看到defaultOpenContent已自动应用于OfficeType和Desc复杂类型。
要在应用于特定复杂类型时覆盖defaultOpenContent元素,请将openContent子元素添加到该复杂类型。在下方截图中,带有defaultOpenContent元素的Desc元素(参见上方截图)添加了一个openContent元素,它覆盖了defaultOpenContent元素。