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

相关文章

Java设计模式---迭代器模式(Iterator)解读

《Java设计模式---迭代器模式(Iterator)解读》:本文主要介绍Java设计模式---迭代器模式(Iterator),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录1、迭代器(Iterator)1.1、结构1.2、常用方法1.3、本质1、解耦集合与遍历逻辑2、统一

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

python删除xml中的w:ascii属性的步骤

《python删除xml中的w:ascii属性的步骤》使用xml.etree.ElementTree删除WordXML中w:ascii属性,需注册命名空间并定位rFonts元素,通过del操作删除属... 可以使用python的XML.etree.ElementTree模块通过以下步骤删除XML中的w:as

XML重复查询一条Sql语句的解决方法

《XML重复查询一条Sql语句的解决方法》文章分析了XML重复查询与日志失效问题,指出因DTO缺少@Data注解导致日志无法格式化、空指针风险及参数穿透,进而引发性能灾难,解决方案为在Controll... 目录一、核心问题:从SQL重复执行到日志失效二、根因剖析:DTO断裂引发的级联故障三、解决方案:修复

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺

Java继承映射的三种使用方法示例

《Java继承映射的三种使用方法示例》继承在Java中扮演着重要的角色,它允许我们创建一个类(子类),该类继承另一个类(父类)的所有属性和方法,:本文主要介绍Java继承映射的三种使用方法示例,需... 目录前言一、单表继承(Single Table Inheritance)1-1、原理1-2、使用方法1-

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关