新闻中心

如何在XSD中定义一个抽象类型,并让其他类型继承它?

2025-12-04
浏览次数:
返回列表
XSD中定义抽象类型需设abstract="true",仅能被extension或restriction继承,不可直接实例化;配合substitutionGroup可实现xsi:type多态。

如何在xsd中定义一个抽象类型,并让其他类型继承它?

在XSD中定义抽象类型,核心是使用 abstract="true" 属性,并配合 extensionrestriction 实现继承。抽象类型本身不能直接用于元素实例,只能被其他类型扩展或限制。

定义抽象复杂类型

<complextype abstract="true"></complextype> 声明一个不可实例化的基类型:

<xs:complexType name="Person" abstract="true">
  <xs:sequence>
    <xs:element name="name" type="xs:string"/>
    <xs:element name="email" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

这个 Person 类型不能直接赋给某个 <element></element>type 属性,否则校验会失败。

让具体类型继承抽象类型

使用 <extension base="Person"></extension> 扩展抽象基类,添加专属字段:

<xs:complexType name="Student">
  <xs:complexContent>
    <xs:extension base="Person">
      <xs:sequence>
        <xs:element name="studentId" type="xs:integer"/>
        <xs:element name="grade" type="xs:string"/>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="Teacher">
  <xs:complexContent>
    <xs:extension base="Person">
      <xs:sequence>
        <xs:element name="staffId" type="xs:integer"/>
        <xs:element name="subject" type="xs:string"/>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

在元素声明中使用继承后的类型

抽象类型不能直接用,但继承后的具体类型可以:

星辰Agent 星辰Agent

科大讯飞推出的智能体Agent开发平台,助力开发者快速搭建生产级智能体

星辰Agent 378 查看详情 星辰Agent
  • type="Student" 声明学生元素:
  • type="Teacher" 声明教师元素:
  • 若需支持多态(如一个 person 元素可接受 Student 或 Teacher),可配合 xsi:type 使用,前提是元素声明使用抽象类型名 + substitutionGroupabstract="true" 配合 <element></element>abstract 属性

可选:定义抽象元素(支持多态替换)

如果希望 XML 中能用 这种方式,还需定义抽象元素并设置替代组:

<xs:element name="person" type="Person" abstract="true"/>
<xs:element name="student" type="Student" substitutionGroup="person"/>
<xs:element name="teacher" type="Teacher" substitutionGroup="person"/>

这样 XML 中就可以写:

<person xsi:type="student">
  <name>Alice</name>
  <email>a@example.com</email>
  <studentId>1001</studentId>
  <grade>A</grade>
</person>

只要引用了 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance",校验器就能根据 xsi:type 正确识别实际类型。

基本上就这些。抽象类型 + extension + substitutionGroup 是 XSD 实现“面向对象式”建模的关键组合,不复杂但容易忽略 abstract 和 substitutionGroup 的配合。

以上就是如何在XSD中定义一个抽象类型,并让其他类型继承它?的详细内容,更多请关注其它相关文章!


# 多态  # 面向对象  # 并让  # 如何在  # 就能  # 相关文章  # 中文网  # 解决问题  # 可选  # ai  # 知乎引流关键词排名查询  # 上海关键词排名案例  # 黄浦区营销推广策划公司  # 请说明seo的定义  # 青州网站建设哪家好  # 衢州网站推广选哪家好些  # 大同营销推广招商项目有哪些  # 网站建设内部链接  # 旺哥seo直播  # 惠阳化工网站建设服务  # 中就 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 一加Ace 6T实拍样张首次公布!李杰:主摄实力完全看齐4K档性能旗舰  在J*a项目里如何构建对象之间的契约_接口约束的实际落地  Golang如何通过reflect获取匿名字段方法_Golang reflect匿名字段方法访问技巧  俄罗斯方块最新版入口 俄罗斯方块在线玩官网入口  C++如何解决segmentation fault_C++段错误调试与原因分析  J*a里如何实现订单支付与库存同步功能_支付库存同步项目开发方法说明  FullCalendar 自定义按钮样式定制指南  J*aScript中向JSON对象添加新属性的正确姿势  Python实现多节点属性重叠度分析教程  J*aScript实现动态背景色下的文本与按钮颜色自适应调整  Win10双系统截图高效法 截屏快捷键速记【技巧】  在python-socketio事件处理器中安全访问Flask应用上下文  sublime怎么进行远程开发编辑_配置rsub/rmate实现sublime编辑服务器文件  支付宝如何设置安全保护_支付宝安全设置的全面教程  yy漫画网页版官方入口_yy漫画官网登录页面链接  Go语言JSON解析深度指南:动态访问与结构体映射实践  JUnit5/Mockito:优雅测试内部依赖与异常处理的实践  漫蛙漫画登录站点 漫蛙2正版漫画快速访问  谷歌学术网站直达地址 谷歌学术搜索网页版一键进入  C++ explicit关键字防止隐式转换_C++构造函数安全规范  在J*a中如何隐藏复杂性_使用门面模式组织对象交互  Win11怎么隐藏桌面图标 Win11一键隐藏所有桌面元素及恢复显示  CSS响应式网页如何实现主次模块比例自适应_flex-grow与flex-shrink调整  Python类型检查:优化关联可选属性的Mypy推断策略  向日葵客户端怎么进行远程CentOS控制_向日葵客户端远程CentOS控制操作教程  Excel中VLOOKUP的第四个参数是干什么用的_Excel VLOOKUP第四参数作用解析  TikTok评论显示延迟如何处理 TikTok评论刷新优化方法  TypeScript/J*aScript:高效查找数组中首个唯一ID对象  在Blazor WebAssembly应用中动态注入客户端特定指标代码的策略  Python getattr() 异常处理深度解析:避免程序意外退出  C++指针和引用有什么区别_C++内存管理核心概念深度解析  漫蛙MANWA漫画主页官方入口 漫蛙漫画最新在线阅读地址  腾讯视频怎么使用多账号家庭管理_腾讯视频家庭多账号统一管理与权限分配教程  Google翻译怎么语音输入_Google翻译语音输入功能使用与设置方法  React Router 嵌套组件中 URL 重定向问题的解决方案  J*a TimerTask中HashMap意外清空的深层原因与解决方案  Win10自动更新怎么关闭 Win10永久关闭系统更新的两种方法【终极版】  CSS实现侧边栏导航项全宽圆角悬停背景效果  腾讯QQ邮箱官方网站_QQ邮箱网页版在线登录  Animex动漫社网入口地址 Animex动漫社网正版在线入口  Win11如何开启讲述人功能 Win11屏幕阅读器(讲述人)开启与关闭【教程】  J*a TimerTask文件监控:HashMap状态管理与常见陷阱规避指南  qq邮箱日历功能怎么用_创建日程与会议邀请的技巧  Sublime Text怎么设置垂直标尺_Sublime配置Rulers规范代码长度  如何在更新Composer依赖后自动运行测试_使用post-update-cmd钩子触发PHPUnit  漫蛙漫画官方首页 漫蛙2漫画在线阅读入口  PyTorch模型训练效果不佳?深入剖析常见错误与调试技巧  fishbowl官网免费版 fishbowl养鱼网站入口  怎样把文件彻底粉碎无法恢复_Windows下安全删除敏感数据【隐私保护】  高德地图总提示网络异常怎么办 高德地图离线导航设置与网络排查方法 

搜索