第三十三章 控制到 XML 模式的映射 - 其他支持 XML 的类到 XML 类型的映射

2023-12-14 07:28

本文主要是介绍第三十三章 控制到 XML 模式的映射 - 其他支持 XML 的类到 XML 类型的映射,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 第三十三章 控制到 XML 模式的映射 - 其他支持 XML 的类到 XML 类型的映射
  • 其他支持 `XML` 的类到 `XML` 类型的映射
  • 指定类型的命名空间
  • 抑制类型 `QName` 的命名空间前缀

第三十三章 控制到 XML 模式的映射 - 其他支持 XML 的类到 XML 类型的映射

其他支持 XML 的类到 XML 类型的映射

对于支持 XML 的类或基于支持 XML 的类的属性,XML 类型按如下方式确定: 如果该类具有 XMLTYPE 参数的值,则该值将用作类型名称。否则,短类名将被视为 XML 类型名。

例如,考虑以下类定义:

Class GXML.PersonWithAddress Extends (%Persistent, %XML.Adaptor) 
{
Parameter XMLTYPE = "PersonType";Property Name As %Name;Property DOB As %Date(FORMAT = 5, MAXVAL = "+$h");Property HomeAddress As GXML.Address;}

对于此类的实例,XML 类型是 PersonType,它取自 XMLTYPE 参数。

假设 GXML.Address 类不包含 XMLTYPE 参数。在本例中,对于 <HomeAddress> 元素,XML 类型是 Address,它是短类名。

指定类型的命名空间

XML 类型分配给命名空间,如下所示:

  1. 如果相应的类定义定义了 XSDTYPE 类参数,则该类型位于以下 W3 命名空间中:
http://www.w3.org/2001/XMLSchema

只能在数据类型类中指定 XSDTYPE

注意:数据类型类不继承 XSDTYPE 类参数。也就是说,如果对现有数据类型类进行子类化,并且该类应映射到 XSD 类型之一,则必须指定此参数。

  1. 如果类定义未定义 XSDTYPE 但定义了 NAMESPACE,则该类型位于 NAMESPACE 指定的命名空间中。
  2. 否则该类型不在任何命名空间中。

但是,可以在生成架构时指定命名空间。请参阅使用 XML 工具中的从类生成 XML 模式。

要查看分配类型的命名空间,必须使用 %XML.Schema 并使用 %XML.Write。有关详细信息,请参阅使用 XML 工具中的从类生成 XML 模式。

抑制类型 QName 的命名空间前缀

如使用 XML 工具中所述,当使用 %XML.Writer 生成输出时,可以包含 XML 类型属性;为此,请将 writerOutputTypeAttribute 属性指定为 1

默认情况下,类型属性被写为 QName(限定名称),它指示类型的名称以及该类型所属的命名空间。例如:

<TeamA xmlns:s01="http://mynamespace" xsi:type="s01:TeamA">

可以定义相应的 IRIS 类定义,以便抑制命名空间前缀。例如:

<TeamB xsi:type="TeamB">

例如,考虑以下类定义:

Class STP.TeamA Extends (%RegisteredObject, %XML.Adaptor)
{Parameter NAMESPACE = "http://mynamespace";Property Member1 as %String;Property Member2 as %String;}

STP.TeamB(未显示)具有相同的定义,但还将 SUPPRESSTYPEPREFIX 指定为 1

这两个类都用作第三个类中的属性:

Class STP.Container Extends (%RegisteredObject, %XML.Adaptor)
{Parameter NAMESPACE = "http://mynamespace";Property TeamA As STP.TeamA;Property TeamB As STP.TeamB;}

当我们为 STP.Container 实例生成输出(并且启用 XML 类型属性的输出)时,我们会看到如下内容:

<?xml version="1.0" encoding="UTF-8"?>
<Container xmlns="http://mynamespace" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><TeamA xmlns:s01="http://mynamespace" xsi:type="s01:TeamA"><Member1 xsi:type="s:string">Jack O'Neill</Member1><Member2 xsi:type="s:string">Samantha Carter</Member2></TeamA><TeamB xsi:type="TeamB"><Member1 xsi:type="s:string">Jasper O'Nelson</Member1><Member2 xsi:type="s:string">Sandra Chartres</Member2></TeamB>
</Container>

请注意,<TeamA> 元素包含 xsi:type 属性,该属性等于“s01:TeamA”。该元素中的命名空间声明表明 s01 前缀引用命名空间 http://mynamespace

但是<TeamB> 元素在 xsi:type 属性中不包含前缀。

注意:SUPPRESSTYPEPREFIX 不会影响 XML 类型所属的命名空间。它只是抑制类型前缀的写入。

这篇关于第三十三章 控制到 XML 模式的映射 - 其他支持 XML 的类到 XML 类型的映射的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/491657

相关文章

Mybatis对MySQL if 函数的不支持问题解读

《Mybatis对MySQLif函数的不支持问题解读》接手项目后,为了实现多租户功能,引入了Mybatis-plus,发现之前运行正常的SQL语句报错,原因是Mybatis不支持MySQL的if函... 目录MyBATis对mysql if 函数的不支持问题描述经过查询网上搜索资料找到原因解决方案总结Myb

C#实现将XML数据自动化地写入Excel文件

《C#实现将XML数据自动化地写入Excel文件》在现代企业级应用中,数据处理与报表生成是核心环节,本文将深入探讨如何利用C#和一款优秀的库,将XML数据自动化地写入Excel文件,有需要的小伙伴可以... 目录理解XML数据结构与Excel的对应关系引入高效工具:使用Spire.XLS for .NETC

springboot中配置logback-spring.xml的方法

《springboot中配置logback-spring.xml的方法》文章介绍了如何在SpringBoot项目中配置logback-spring.xml文件来进行日志管理,包括如何定义日志输出方式、... 目录一、在src/main/resources目录下,也就是在classpath路径下创建logba

MyBatis中的两种参数传递类型详解(示例代码)

《MyBatis中的两种参数传递类型详解(示例代码)》文章介绍了MyBatis中传递多个参数的两种方式,使用Map和使用@Param注解或封装POJO,Map方式适用于动态、不固定的参数,但可读性和安... 目录✅ android方式一:使用Map<String, Object>✅ 方式二:使用@Param

Go语言实现桥接模式

《Go语言实现桥接模式》桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化,本文就来介绍一下了Go语言实现桥接模式,感兴趣的可以了解一下... 目录简介核心概念为什么使用桥接模式?应用场景案例分析步骤一:定义实现接口步骤二:创建具体实现类步骤三:定义抽象类步骤四:创建扩展抽象类步

C# WebAPI的几种返回类型方式

《C#WebAPI的几种返回类型方式》本文主要介绍了C#WebAPI的几种返回类型方式,包括直接返回指定类型、返回IActionResult实例和返回ActionResult,文中通过示例代码介绍的... 目录创建 Controller 和 Model 类在 Action 中返回 指定类型在 Action

C++中的解释器模式实例详解

《C++中的解释器模式实例详解》这篇文章总结了C++标准库中的算法分类,还介绍了sort和stable_sort的区别,以及remove和erase的结合使用,结合实例代码给大家介绍的非常详细,感兴趣... 目录1、非修改序列算法1.1 find 和 find_if1.2 count 和 count_if1

Redis中群集三种模式的实现

《Redis中群集三种模式的实现》Redis群集有三种模式,分别是主从同步/复制、哨兵模式、Cluster,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1. Redis三种模式概述2、Redis 主从复制2.1 主从复制的作用2.2 主从复制流程2

golang实现nacos获取配置和服务注册-支持集群详解

《golang实现nacos获取配置和服务注册-支持集群详解》文章介绍了如何在Go语言中使用Nacos获取配置和服务注册,支持集群初始化,客户端结构体中的IpAddresses可以配置多个地址,新客户... 目录golang nacos获取配置和服务注册-支持集群初始化客户端可选参数配置new一个客户端 支

深入理解MySQL流模式

《深入理解MySQL流模式》MySQL的Binlog流模式是一种实时读取二进制日志的技术,允许下游系统几乎无延迟地获取数据库变更事件,适用于需要极低延迟复制的场景,感兴趣的可以了解一下... 目录核心概念一句话总结1. 背景知识:什么是 Binlog?2. 传统方式 vs. 流模式传统文件方式 (非流式)流