第三十三章 控制到 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/491658

相关文章

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

SpringKafka消息发布之KafkaTemplate与事务支持功能

《SpringKafka消息发布之KafkaTemplate与事务支持功能》通过本文介绍的基本用法、序列化选项、事务支持、错误处理和性能优化技术,开发者可以构建高效可靠的Kafka消息发布系统,事务支... 目录引言一、KafkaTemplate基础二、消息序列化三、事务支持机制四、错误处理与重试五、性能优

SpringBoot如何通过Map实现策略模式

《SpringBoot如何通过Map实现策略模式》策略模式是一种行为设计模式,它允许在运行时选择算法的行为,在Spring框架中,我们可以利用@Resource注解和Map集合来优雅地实现策略模式,这... 目录前言底层机制解析Spring的集合类型自动装配@Resource注解的行为实现原理使用直接使用M

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制

使用DrissionPage控制360浏览器的完美解决方案

《使用DrissionPage控制360浏览器的完美解决方案》在网页自动化领域,经常遇到需要保持登录状态、保留Cookie等场景,今天要分享的方案可以完美解决这个问题:使用DrissionPage直接... 目录完整代码引言为什么要使用已有用户数据?核心代码实现1. 导入必要模块2. 关键配置(重点!)3.

SpringBoot中配置文件pom.xml的使用详解

《SpringBoot中配置文件pom.xml的使用详解》SpringBoot的pom.xml文件是Maven项目的核心配置文件,用于定义项目的依赖、插件、构建配置等信息,下面小编就来和大家详细介绍一... 目录1. 基本结构2. 关键部分详解2.1 <modelVersion>2.2 项目坐标2.3 <p

Java实现XML与JSON的互相转换详解

《Java实现XML与JSON的互相转换详解》这篇文章主要为大家详细介绍了如何使用Java实现XML与JSON的互相转换,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. XML转jsON1.1 代码目的1.2 代码实现2. JSON转XML3. JSON转XML并输出成指定的