文章目录
- [第二十八章 控制到 XML 模式的映射 - 流类到 XML 类型的映射](#第二十八章 控制到 XML 模式的映射 - 流类到 XML 类型的映射)
- [将集合属性映射到 `XML` 模式](#将集合属性映射到
XML
模式)
第二十八章 控制到 XML 模式的映射 - 流类到 XML 类型的映射
如果类或属性基于流,则它将投影为 XML
类型,如下表所示:
IRIS 流的 XML 类型
Stream Type | 映射到 XML 时使用的 XSD 类型 |
---|---|
%Library.GlobalCharacterStream , %Library.FileCharacterStream, %Stream.FileCharacter , and %Stream.GlobalCharacter |
string |
%Library.GlobalBinaryStream , %Library.FileBinaryStream , %Stream.FileBinary , and %Stream.GlobalBinary |
base64Binary |
例如,考虑以下类:
java
Class Schema.StreamPropDemo Extends (%Persistent, %XML.Adaptor)
{
Parameter XMLTYPENAMESPACE="mytypes";
Property BinStream As %Library.GlobalBinaryStream;
Property CharStream As %Library.GlobalCharacterStream;
}
该类的架构如下:
xml
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:s="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" targetNamespace="mytypes">
<complexType name="StreamPropDemo">
<sequence>
<element minOccurs="0" name="BinStream" type="s:base64Binary"/>
<element minOccurs="0" name="CharStream" type="s:string"/>
</sequence>
</complexType>
</schema>
将集合属性映射到 XML
模式
对于大多数类型的属性,类定义包含足够的信息来指定完整的 XML
映射 --- 将对象映射为 XML
文档,并定义用于验证目的的完整 XML
模式。然而,对于集合属性, IRIS
支持某些形式的定义,这些定义不能为完整的 XML
模式提供足够的信息。如果在需要架构的上下文中(例如在 Web
服务和客户端中)使用 XML
投影,则必须拥有完整的 XML
架构;否则针对架构的验证将失败。如果不针对架构进行验证,则此注意事项不适用。下表列出了场景:
集合属性的形式及其 XML 映射详细信息
Form of Property Definition | XML Is Usable? | XML Schema Is Usable? |
---|---|---|
Property PropName As List of classname or Property PropName As Array of classname |
Yes |
Yes |
Property PropName As %ListOfDataTypes or Property PropName As %ArrayOfDataTypes |
Yes |
Yes (但是集合项的默认类型是字符串,这可能不合适) |
Property PropName As %ListOfObjects or Property PropName As %ArrayOfObjects |
Yes |
No (架构未指定集合项的类型) |