第二十八章 控制到 XML 模式的映射 - 流类到 XML 类型的映射

文章目录

  • [第二十八章 控制到 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 (架构未指定集合项的类型)
相关推荐
caolib10 分钟前
无需云服务器的内网穿透方案 -- cloudflare tunnel
运维·服务器·内网穿透·tunnel·cloudflared
誰能久伴不乏1 小时前
Linux系统调用概述与实现:深入浅出的解析
linux·运维·服务器
程序员学习随笔1 小时前
Linux进程深度解析(2):fork/exec写时拷贝性能优化与exit资源回收机制(进程创建和销毁)
linux·运维·服务器
mortimer1 小时前
安装NVIDIA Parakeet时,我遇到的两个Pip“小插曲”
python·github
-SGlow-1 小时前
MySQL相关概念和易错知识点(2)(表结构的操作、数据类型、约束)
linux·运维·服务器·数据库·mysql
@昵称不存在1 小时前
Flask input 和datalist结合
后端·python·flask
爱装代码的小瓶子2 小时前
数据结构之队列(C语言)
c语言·开发语言·数据结构
代码改变世界ctw2 小时前
Linux内核设计与实现 - 第14章 块I/O层
linux·运维·服务器
赵英英俊2 小时前
Python day25
python
东林牧之2 小时前
Django+celery异步:拿来即用,可移植性高
后端·python·django