文章目录

  • 第二十六章 控制到 XML 模式的映射 – 影响架构的编译器关键字
  • 影响架构的编译器关键字
    • 影响 `XML` 模式的参数
        • `CONTENT`
        • `DISPLAYLIST`
        • `MAXLEN`
        • `MAXVAL`
        • `MINLEN`
        • `MINVAL`

第二十六章 控制到 XML 模式的映射 – 影响架构的编译器关键字

影响架构的编译器关键字

required 关键字通过删除 minOccurs="0" 属性来影响 XML 架构。例如,考虑以下类:

Class Schema.PropKeywords Extends (%RegisteredObject, %XML.Adaptor){Parameter XMLTYPENAMESPACE="mytypes";Property Property1 As %String;Property Property2 As %String [ Required ];}

如果我们为此处使用的命名空间生成架构,我们会看到以下内容:

<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:s="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="test"><complexType name="PropKeywords"><sequence><element minOccurs="0" name="Property1" type="s:string"/><element name="Property2" type="s:string"/></sequence></complexType></schema>

请注意,minOccurs 的默认值为 1;也就是说,Property2 是必需的。

注意:出于兼容性原因,%XML.Reader 默认情况下不检查必需的属性,但可以使其这样做;请参阅使用 XML 工具中的检查所需元素和属性。另外,默认情况下, IRIS Web 服务不会检查所需的属性,但可以使其这样做;请参阅检查必需的元素和属性。

没有其他属性关键字影响数据类型类的架构。

影响 XML 模式的参数

IRIS 数据类型类使用许多参数。 (有关列出每个数据类型类支持的参数的表,请参阅定义和使用类中的数据类型。)在大多数情况下,还可以将它们指定为属性参数。

影响 XML 模式的参数如下:

CONTENT

影响属性值的转义方式;请参阅处理特殊 XML 字符。

与其他可能的值相比,“MIXED”值会导致架构发生变化。考虑下面的类:

Class Schema.CONTENT Extends (%RegisteredObject, %XML.Adaptor){Parameter XMLTYPENAMESPACE = "mytypes";Property Property1 As %String;Property Property2 As %String(CONTENT = "STRING");Property Property3 As %String(CONTENT = "ESCAPE");Property Property4 As %String(CONTENT = "MIXED");}

如果我们为此处使用的命名空间生成架构,我们会看到以下内容:

<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:s="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="mytypes"><complexType name="CONTENT"><sequence><element minOccurs="0" name="Property1" type="s:string"/><element minOccurs="0" name="Property2" type="s:string"/><element minOccurs="0" name="Property3" type="s:string"/><element name="Property4"><complexType mixed="true"><choice maxOccurs="unbounded" minOccurs="0"><any processContents="lax"/></choice></complexType></element></sequence></complexType></schema>

请注意,这三个属性具有相同的类型信息,因为 XML 以相同的方式处理它们。然而, IRIS 对属性的处理方式有所不同,如处理特殊 XML 字符中所述。

如果使用该对象作为 Web 方法的输入或输出,并且 SoapBodyUse 已针对该方法进行编码,则 IRIS 会将混合内容视为默认的字符串内容。也就是说,如果将 CONTENT 指定为“MIXED”,则该值将被忽略。

DISPLAYLIST

如果还指定了 VALUELIST 并且 XMLLISTPARAMETER 等于“DISPLAYLIST”,则会影响架构。请参阅这两个参数的讨论。

MAXLEN

控制 maxLength 属性,它是一个方面或限制。 Facet 定义 XML 类型可接受的值。以下示例显示了其中的几个。考虑下面的类:

Class Schema.BasicFacets Extends (%RegisteredObject, %XML.Adaptor){Parameter XMLTYPENAMESPACE = "mytypes";Property Property1 As %Integer (MINVAL=10, MAXVAL=1000);Property Property2 As %String (MINLEN=20, MAXLEN=100);}

如果我们为此处使用的命名空间生成架构,我们会看到以下内容:

<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:s="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="mytypes"><complexType name="BasicFacets"><sequence><element minOccurs="0" name="Property1"><simpleType><restriction base="s:long"><maxInclusive value="1000"/><minInclusive value="10"/></restriction></simpleType></element><element minOccurs="0" name="Property2"><simpleType><restriction base="s:string"><maxLength value="100"/><minLength value="20"/></restriction></simpleType></element></sequence></complexType></schema>

SOAP 向导或 XML 架构向导在架构中发现 maxLength 限制时,它会在生成的类中根据需要设置 MAXLEN 属性参数。

MAXVAL

控制 maxInclusive 属性。请参阅 MAXLEN 中的示例。

MINLEN

控制 minLength 属性。请参阅 MAXLEN 中的示例。

当 SOAP 向导或 XML 架构向导在架构中发现 minLength 限制时,它会在生成的类中根据需要设置 MINLEN 属性参数。

MINVAL

控制 minInclusive 属性。请参阅 MAXLEN 中的示例。