文章目录
- 第二十六章 控制到 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
中的示例。