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

相关文章

Rust中的BoxT之堆上的数据与递归类型详解

《Rust中的BoxT之堆上的数据与递归类型详解》本文介绍了Rust中的BoxT类型,包括其在堆与栈之间的内存分配,性能优势,以及如何利用BoxT来实现递归类型和处理大小未知类型,通过BoxT,Rus... 目录1. Box<T> 的基础知识1.1 堆与栈的分工1.2 性能优势2.1 递归类型的问题2.2

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

定价129元!支持双频 Wi-Fi 5的华为AX1路由器发布

《定价129元!支持双频Wi-Fi5的华为AX1路由器发布》华为上周推出了其最新的入门级Wi-Fi5路由器——华为路由AX1,建议零售价129元,这款路由器配置如何?详细请看下文介... 华为 Wi-Fi 5 路由 AX1 已正式开售,新品支持双频 1200 兆、配有四个千兆网口、提供可视化智能诊断功能,建

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要

Java实现状态模式的示例代码

《Java实现状态模式的示例代码》状态模式是一种行为型设计模式,允许对象根据其内部状态改变行为,本文主要介绍了Java实现状态模式的示例代码,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来... 目录一、简介1、定义2、状态模式的结构二、Java实现案例1、电灯开关状态案例2、番茄工作法状态案例

Java中基于注解的代码生成工具MapStruct映射使用详解

《Java中基于注解的代码生成工具MapStruct映射使用详解》MapStruct作为一个基于注解的代码生成工具,为我们提供了一种更加优雅、高效的解决方案,本文主要为大家介绍了它的具体使用,感兴趣... 目录介绍优缺点优点缺点核心注解及详细使用语法说明@Mapper@Mapping@Mappings@Co

Spring IOC控制反转的实现解析

《SpringIOC控制反转的实现解析》:本文主要介绍SpringIOC控制反转的实现,IOC是Spring的核心思想之一,它通过将对象的创建、依赖注入和生命周期管理交给容器来实现解耦,使开发者... 目录1. IOC的基本概念1.1 什么是IOC1.2 IOC与DI的关系2. IOC的设计目标3. IOC

Redis的Zset类型及相关命令详细讲解

《Redis的Zset类型及相关命令详细讲解》:本文主要介绍Redis的Zset类型及相关命令的相关资料,有序集合Zset是一种Redis数据结构,它类似于集合Set,但每个元素都有一个关联的分数... 目录Zset简介ZADDZCARDZCOUNTZRANGEZREVRANGEZRANGEBYSCOREZ