第二十四章 控制到 XML 模式的映射

文章目录

第二十四章 控制到 XML 模式的映射

对于任何支持XML的类,都有一个用于该类的隐式XML模式,可以查看它。 IRIS 提供了修改该模式的方法。

本主题中的XML示例采用文字格式。

类和属性参数

  • CONTENT
  • DISPLAYLIST
  • VALUELIST
  • ESCAPE
  • MAXLEN
  • MINLEN
  • MINVAL
  • XMLFractionDigits
  • XMLTotalDigits
  • XMLLISTPARAMETER
  • XSDTYPE
  • XMLTYPE
  • SUPPRESSTYPEPREFIX

查看支持xml的类的模式

要查看给定支持xml的类的模式,有两个选项:

可以使用 %XML.Schema%XML.Writer 生成完整的架构文档。

可以使用支持 XML 的类的 XMLSchema() 类方法,该方法将该类的 XML 架构写入当前设备。此方法不编写 XML 声明并忽略名称空间,因此用途有限。但是,如果只对 XML 类型感兴趣,则此方法可能会很有帮助。

java 复制代码
Class GXML.Person Extends (%Persistent, %Populate, %XML.Adaptor) 
{
Property Name As %Name;
Property DOB As %Date(FORMAT = 5, MAXVAL = "+$h");
Property GroupID As %String (XMLPROJECTION="ATTRIBUTE");
Property OtherID As %String(XMLPROJECTION = "NONE");
Property Address As GXML.Address;
Property Doctors As list Of GXML.Doctor;
}

GXML.Address 类如下:

java 复制代码
Class GXML.Address Extends (%Persistent, %Populate, %XML.Adaptor) 
{
Property Street As %String;
Property City As %String;
Property State As %String(MAXLEN = 2, PATTERN = "2u");
Property Zip As %String(MAXLEN = 10, PATTERN = "5n.1(1""-""4n)");
}

GXML.Doctor类如下:

java 复制代码
Class GXML.Doctor Extends (%Persistent, %Populate, %XML.Adaptor) 
{
Property Name As %Name;
}

要查看 GXML.Person 类的架构,请在终端中输入以下命令:

java 复制代码
 do ##class(GXML.Person).XMLSchema()

然后会看到以下内容:

xml 复制代码
<s:complexType name="Person">
    <s:sequence>
        <s:element name="Name" type="s:string" minOccurs="0" />
        <s:element name="DOB" type="s:date" minOccurs="0" />
        <s:element name="Address" type="s_Address" minOccurs="0" />
        <s:element name="Doctors" type="ArrayOfDoctorDoctor" minOccurs="0" />
    </s:sequence>
    <s:attribute name="GroupID" type="s:string" />
</s:complexType>
<s:complexType name="s_Address">
    <s:sequence>
        <s:element name="City" type="s:string" minOccurs="0" />
        <s:element name="Zip" type="s:string" minOccurs="0" />
    </s:sequence>
</s:complexType>
<s:complexType name="ArrayOfDoctorDoctor">
    <s:sequence>
        <s:element name="Doctor" type="Doctor" 
minOccurs="0" maxOccurs="unbounded" nillable="true" />
    </s:sequence>
</s:complexType>
<s:complexType name="Doctor">
    <s:sequence>
        <s:element name="Name" type="s:string" minOccurs="0" />
    </s:sequence>
</s:complexType>

请注意以下事项:

  • <Person>, <Address>, 和 <Doctor> 类型的架构直接基于相应的类定义。
  • 该架构仅包含映射的属性。
  • 该模式识别每个属性是否被映射为元素或属性。例如,GroupID 是一个属性,Name 是一个元素。
  • 属性的其他参数可能会影响架构。
  • 在此示例中,类属性的类型为 string,它是基本 XSD 类型之一(请参阅 https://www.w3.org/TR/xmlschema-2/)。
相关推荐
wuk9987 分钟前
基于MATLAB编制的锂离子电池伪二维模型
linux·windows·github
烛阴1 小时前
简单入门Python装饰器
前端·python
lzb_kkk1 小时前
【C++】C++四种类型转换操作符详解
开发语言·c++·windows·1024程序员节
好开心啊没烦恼1 小时前
Python 数据分析:numpy,说人话,说说数组维度。听故事学知识点怎么这么容易?
开发语言·人工智能·python·数据挖掘·数据分析·numpy
面朝大海,春不暖,花不开2 小时前
使用 Python 实现 ETL 流程:从文本文件提取到数据处理的全面指南
python·etl·原型模式
旷世奇才李先生2 小时前
XML Schema 安装使用教程
xml
2301_805054563 小时前
Python训练营打卡Day59(2025.7.3)
开发语言·python
万千思绪3 小时前
【PyCharm 2025.1.2配置debug】
ide·python·pycharm
微风粼粼5 小时前
程序员在线接单
java·jvm·后端·python·eclipse·tomcat·dubbo
云天徽上5 小时前
【PaddleOCR】OCR表格识别数据集介绍,包含PubTabNet、好未来表格识别、WTW中文场景表格等数据,持续更新中......
python·ocr·文字识别·表格识别·paddleocr·pp-ocrv5