XSD模式:XSD 1.0或1.1
在Schema视图中,您可以选择根据XML Schema 1.0规范(XSD 1.0)或XML Schema 1.1规范(XSD 1.1)对XML Schema(XSD)进行编辑和验证。用于编辑文件的XSD模式基于两种设置:一种在应用程序中,另一种在XSD文档中。
选择XSD模式
Schema视图中的活动文档可以使用哪些编辑和验证功能取决于XSD模式(XSD 1.0或1.1)。您可以:(i) 为整个应用程序进行设置,在这种情况下,Schema视图中的所有XSD文档都将在选定的模式下进行编辑,或者(ii) 您可以在XSD文档中保存XSD版本号,以便应用程序根据此信息自动选择XSD模式。
应用程序范围模式
应用程序范围的设置是在“选项”对话框(工具|选项,参见下方截图)的“文件”部分中进行的。如果选择了V1.0或V1.1单选按钮,则选定的模式将成为应用程序范围模式。在Schema视图中打开的所有XML Schema文档都将在此模式下进行编辑。(如果您选择如果<xs:schema vc:minVersion="1.1",则为v1.1,否则为v1.0设置,则将根据文档中的信息选择模式,并且该模式不会在应用程序范围内使用。有关更多信息,请参见文档特定模式和下面的其他部分。)
您可以通过在“选项”对话框的“XML Schema版本”设置(参见上方截图)中选择所需的选项随时在两种应用程序范围模式(V1.0和V1.1)之间切换。
提示: | 如果当前设置是应用程序范围的设置,然后您使用“Schema设计”工具栏中的XSD 1.0或XSD 1.1按钮(参见下一部分)来切换模式,则该模式切换将是暂时的,并且在重新加载文档时,模式将还原到应用程序范围模式。每次更改视图或刷新Schema视图时都会发生重新加载(通过文件 | 重新加载)。 |
文档特定模式
您还可以选择将XSD模式信息保存在XSD文档本身中。这会在加载文档时自动将Schema视图切换到文档的XSD模式。您可以通过单击“Schema设计”工具栏(参见下方截图)中的XSD 1.0或XSD 1.1按钮将XSD模式信息添加到XSD文档中。执行此操作时,所选模式将保存在顶级xs:schema元素的vc:minVersion特性中。(也可以在文本视图中手动添加vc:minVersion的值。)
注意: | vc:minVersion特性(如果存在)必须位于命名空间http://www.w3.org/2007/XMLSchema-versioning中。在这种情况下,XML Schema文档必须有一个命名空间声明,将vc:命名空间前缀绑定到该命名空间。如果您使用XSD 1.1工具栏按钮(参见上方截图),则会自动添加命名空间。如果文档中没有其他节点名称在此命名空间中,则单击XSD 1.0工具栏按钮将删除此命名空间声明。 |
要激活文档特定模式并指定文档的XSD模式,请执行以下操作:
1.激活文档特定模式:在“选项”对话框(工具 | 选项)的“文件”部分,将XML Schema版本选项设置为如果<xs:schema vc:minVersion="1.1",则为v1.1,否则为v1.0(参见下方截图)。这向XMLSpy指示,应根据xs:schema元素的vc:minVersion特性设置Schema视图中的XSD模式。
2.指定文档的XSD版本:在“Schema设计”工具栏(参见上方截图)中,单击XSD 1.0或XSD 1.1按钮。 此时会弹出一个确认对话框(参见下方截图)。
3.单击是会出现以下情况:(i) 在xs:schema元素的vc:minVersion特性中输入相应的值,以及(ii) 如果选择了XSD 1.1,则将对XMLSchema-versioning命名空间进行声明,并绑定到vc:命名空间前缀;如果选择了XSD 1.0并且XMLSchema-versioning命名空间中没有其他节点,则将删除命名空间声明。XML Schema文档现在包含XSD版本号。保存文件时也会保存XSD模式信息。当您重新打开或重新加载文件时,Schema视图将自动切换到文档的XSD模式,该信息包含在xs:schema元素的vc:minVersion特性中。
注意: | 如果选择了文档特定模式,并且XSD文档没有vc:minVersion特性,或vc:minVersion特性的值不是1.0或1.1,则Schema视图将默认采用XSD 1.0模式。 |
备注: | 不要将vc:minVersion特性与xsd:version特性混淆。前者保存XSD版本号,而后者保存文档的版本号。 |
新文档的XSD模式
当您创建一个新的XSD文档时,系统会询问您是要将其创建为XSD 1.0,还是XSD 1.1文档。如果选择XSD 1.1,则将使用特性/xs:schema/@vc:minVersion="1.1”创建一个新文档,并声明XMLSchema-versioning命名空间并绑定到vc:命名空间前缀。如果选择XSD 1.0,则既不会添加vc:minVersion特性,也不会添加XMLSchema-versioning命名空间声明。但是,在Schema视图中实际启用哪种XSD模式还取决于在“选项”对话框(工具 | 选项)的“文件”部分中选择的XML Schema版本。有关这两个设置如何交互的详细信息,请参见下一部分。
启用的XSD模式
在Schema视图中启用的XSD模式取决于(i) XSD文档的/xs:schema/@vc:minVersion特性的存在/不存在以及值(如果存在);以及(ii) 在“选项”对话框(工具 | 选项,参见下方截图)的“文件”部分中选择的XML Schema版本选项。
以下情况是有可能出现的。下表中的XML Schema版本是指上方显示的“Schema版本”窗格中的选项。下表中的vc:minVersion值是指XML Schema文档中xs:schema/@vc:minVersion特性的值。
XML Schema版本 | vc:minVersion特性 | XSD模式 |
总是v1.0 | 不存在,或以任何值存在 | 1.0 |
总是v1.1 | 不存在,或以任何值存在 | 1.1 |
@vc:minVersion的值 | 特性值为1.1 | 1.1 |
@vc:minVersion的值 | 特性不存在,或特性存在,但值不是1.1 | 1.0 |
注意: | 在前两行描述的情况下,可以在XSD 1.0模式下打开XSD 1.1 Schema,反之亦然。产生的差异将按如下所述进行处理。 |
XSD模式功能
Schema视图的界面和编辑功能会根据启用的XSD模式(XSD 1.0或XSD 1.1)而变化。
如果启用了XSD 1.0模式:
•编辑功能不适用于新的XML Schema 1.1组件和属性。但是,如果XSD文档中已存在XSD 1.1组件或属性,则这些组件或属性将显示并可供删除。
•验证将根据XSD 1.0规范执行。因此,如果Schema(已经)包含XSD 1.1独有的组件或属性,则将报告验证错误。
如果启用了XSD 1.1模式 ,则将为XML Schema 1.1的所有功能提供编辑支持。验证将根据XML Schema 1.1规范执行。
在XSD 1.0模式下处理XSD 1.1功能
下面将介绍如何在XSD 1.0模式下显示和处理文档中XSD 1.0不支持的XSD 1.1功能(例如,断言)。
•断言Assertion:如果在所选简单类型上至少存在一个断言,则在“方面”输入助手中会包括一个断言选项卡。断言不能被编辑,只能被删除。
•断言Assert:如果断言存在,它将显示在复杂类型的图表中。AAIDC窗格中没有可用的“断言”选项卡。无法通过上下文菜单添加断言。属性不能被编辑,只能被删除。
•特性:如果存在,将显示新属性inheritable。只能选择空值(这实际上是删除属性),无法进行编辑。
•复杂类型:新属性defaultAttributesApply(如果存在)将显示在“详细信息”输入助手中。除了选择空值(这实际上是删除属性)外,无法进行编辑。
•文档:Schema视图文档中不包括新的XSD 1.1特定的组件和属性。
•方面:未知的方面会导致验证错误并以红色显示。
•在Schema中查找:新的特定于XSD 1.1的组件和属性都将被忽略。
•标识约束(IDC):属性isRef在引用的情况下显示并且可以被禁用。一旦IDC的名称更改,它将被停用。
•多个替换组:用于选择单个替换组的组合框(XSD 1.0中仅允许单个替换组)。
•开放内容:如果存在,则显示在图表中。无法通过上下文菜单添加。只能删除,不能编辑。默认开放内容不显示在复杂类型中。
•覆盖:如果存在,将显示在全局组件网格中。无法通过菜单添加。无法(对位置)进行编辑,只能删除。覆盖组件(即xs:override的子级)将被忽略,不会出现在“组件”输入助手中。
•Schema设置:新属性defaultAttributes和xpathDefaultNamespace(如果存在)都将显示在对话框中。只能选择空值(这实际上是删除属性),无法进行编辑。
•简单类型:未知的类型会导致验证错误并以红色显示。
•类型替代如果存在,则显示在图表中。无法通过上下文菜单添加。无法(对属性)进行编辑,只能删除。
•通配符:如果存在,将显示新属性。只能选择空值(这实际上是删除属性),无法进行编辑。