类和属性参数
ESCAPE
CONTENT
XMLTIMEZONE
DISPLAYLIST
VALUELIST
XMLDEFAULTVALUE
XMLLISTPARAMETER
XMLSTREAMMODE
支持 XML 的对象通常包括由 IRIS
数据类型定义的属性。每个数据类型类都定义 LogicalToXSD()
和 XSDToLogical()
方法。每当为对象请求 XM
L 输出时, IRIS XML
工具都会自动为每个属性调用 LogicalToXSD()
方法,以将数据转换为在 XML 中使用的适当格式。同样,每当使用 XML
文档作为输入时,IRIS XML
工具都会调用 XSDToLogical()
方法将数据转换为 IRIS
的正确格式。
例如,数据类型类的 %Binary
中,LogicalToXSD()
方法使用 $SYSTEM.Encryption.Base64Encode()
方法转换出站值。同样,XSDToLogical()
方法使用 $SYSTEM.Encryption.Base64Decode()
方法转换入站值。
IRIS
类还可以包含流值属性,但流类不定义 LogicalToXSD()
和 XSDToLogical()
方法。相反,当流类用作支持 XML
的类的属性时,XML
工具会特别对待它们。具体来说:
XML
特殊字符的存在而需要进行的更改之外,不会进行任何更改,如下一节所述。IRIS
导出到 XML
时,它会将二进制流属性转换为采用 Base-64
编码的字符串(也就是说,它以这种方式对数据进行编码,然后将其导出)。当 IRIS
从 XML
导入时,它会执行相反的操作。当使用支持 XML
的对象时,有时需要考虑无法直映射影到 XML
的值或由于其他原因想要转换的值的特殊情况。
XML
字符根据上下文,当 IRIS XML
支持在字符串或字符流类型的属性中找到与符号 (&
) 和某些其他字符时,它会转义这些字符。
注意:ESCAPE
属性参数控制哪些字符被识别为特殊字符。此参数是“XML”
(默认值)或“HTML”
(文档中未讨论)。
对于这些特殊字符,可以通过设置 CONTENT
属性参数来控制转义的执行方式。文字格式和编码格式的详细信息有所不同,如下所示:
SOAP
编码格式的转义形式Value of CONTENT (Case-insensitive) |XML Document in Literal
Format| XML Document in SOAP-encoded Format
—|—|—
"STRING" (the default)
|CData
|CData
"ESCAPE"
| XML entity
|XML entity
"ESCAPE-C14N
| XML entity*
|XML entity*
"MIXED"
|No escaping is done
| CData
*对于“ESCAPE-C14N
”,转义是根据XML
规范化标准完成的。主要区别在于回车符被转义为
Class ResearchXForms.CONTENT Extends (%RegisteredObject, %XML.Adaptor)
{
Parameter XMLNAME = "Demo";
Property String1 As %String;
Property String2 As %String(CONTENT = "STRING");
Property String3 As %String(CONTENT = "ESCAPE");
Property String4 As %String(CONTENT = "MIXED");
}
String2
和 String1
始终以相同的方式处理,因为 String2
使用 CONTENT
的默认值。
此类的文字 XML
输出可能如下所示:
<Demo>
<String1>String1>
<String2>String2>
<String3>value 1 & value 2String3>
<String4>value 1 & value 2String4>
Demo>
SOAP
编码的 XML
输出将如下所示:
<CONTENT xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<String1>String1>
<String2>String2>
<String3>value 1 & value 2String3>
<String4>String4>
CONTENT>
还有另一种方法可以防止特殊 XML
字符的转义。可以将该属性定义为特殊 XML
类型之一:%XML.String
、%XML.FileCharacterStream
或 %XML.GlobalCharacterStream
。对于这些数据类型类,CONTENT
为“MIXED”
。