iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >XML模式中扩展枚举列表的方法
  • 189
分享到

XML模式中扩展枚举列表的方法

2024-04-02 19:04:59 189人浏览 八月长安
摘要

本篇内容介绍了“XML模式中扩展枚举列表的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!清单 1. 婚

本篇内容介绍了“XML模式中扩展枚举列表的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

清单 1. 婚姻状况枚举列表 
<xsd:simpleType name="MaritalStatusEnumType"> 
<xsd:restriction base="xsd:nORMalizedString"> 
<xsd:enumeration value="Divorced"/> 
<xsd:enumeration value="Married"/> 
<xsd:enumeration value="NeverMarried"/> 
<xsd:enumeration value="Separated"/> 
<xsd:enumeration value="SignificantOther"/> 
<xsd:enumeration value="Widowed"/> 
<xsd:enumeration value="Unknown"/> 
</xsd:restriction> 
</xsd:simpleType> 
<xsd:element name="MaritalStatus" type="MaritalStatusEnumType"/> 
假设一个公司要使用这些值,另外,还要支持它的重要贸易伙伴使用另一个值。CivilUNIOn 是一个扩展值,公司识别出该值不属于原始模式。但是从语义上来说,使用现有元素 &mdash;MaritalStatus &mdash; 也是可以的。公司要如何实现呢? 
回页首 
解决方案 1: 编辑原始模式使其包含新枚举值 
当然,编辑原始模式使其包含新枚举值是最直接的方法。保留模式的本地副本,然后编辑这些模式以支持公司使用的枚举值。 
优点:易于实现 
缺点: 
需要编辑原始模式,这些模式将逐渐改变,以至于无法控制。如果扩展一个先前存在的列表,那么创建者(贸易伙伴、协会等)可能要发布列表的新版本。您需要将编辑的内容传播到每个新版本中。 
手动编辑模式会导致意外的编辑错误。 
如果您不能(或不想)编辑原始模式,则需要一种替代方法。 
回页首 
解决方案 2: 创建新枚举列表并加入到原始列表中 
第二个选择是创建新枚举列表,并将其加入到原始枚举列表中。清单 1 显示原始婚姻状况列表。清单 2 显示最新创建的枚举列表。 
清单 2. 新婚姻状况枚举列表 
<xsd:simpleType name="MyExtMaritalStatusEnumType"> 
<xsd:restriction base="xsd:normalizedString"> 
<xsd:enumeration value="CivilUnion"/> 
</xsd:restriction> 
</xsd:simpleType> 
使用 <xsd:union> 标记将其与原始列表结合,如 清单 3 所示。 
清单 3. 将两个列表组合起来 
<xsd:simpleType name="MaritalStatusType_Union"> 
<xsd:union memberTypes="MyExtMaritalStatusEnumType MaritalStatusEnumType"/> 
</xsd:simpleType> 
<xsd:element name="MaritalStatus" type="MaritalStatusType_Union"/> 
该解决方案仍然需要对模式进行编辑 &mdash; 即将元素 MaritalStatus 由 MaritalStatusType 类型转换为 MaritalStatusType_Union 类型。改动不大,但仍然有一些手动编辑工作。 
优点:不改变原始枚举列表。 
缺点: 
在设计阶段所有的值必须是已知的,防止后期绑定解决方案。 
需要 <xsd:union> 标记支持,但有时该标记无法用工具实现。 
回页首 
解决方案 3: 创建一个模式,并与原始枚举类型结合 
现在看一下有关眼睛颜色的人口数据用例。清单 4 显示这一列表。 
清单 4. Person Eye Color 枚举列表 
<xsd:simpleType name="PersonEyeColorType"> 
<xsd:restriction base="xsd:string"> 
<xsd:enumeration value="Black"/> 
<xsd:enumeration value="Hazel"/> 
<xsd:enumeration value="Gray"/> 
<xsd:enumeration value="Brown"/> 
<xsd:enumeration value="Violet"/> 
<xsd:enumeration value="Green"/> 
<xsd:enumeration value="Blue"/> 
<xsd:enumeration value="Maroon"/> 
<xsd:enumeration value="Pink"/> 
<xsd:enumeration value="Dichromatic"/> 
<xsd:enumeration value="Unknown"/> 
</xsd:restriction> 
</xsd:simpleType> 
接下来,创建采用新值的模式(一个正则表达式)。该模式是以 x: 为前缀的任意字符串。x: 是标准枚举列表和扩展列表之间的描绘程序。清单 5 显示这一模式。 
清单 5. 用于扩展的正则表达式 
<xsd:simpleType name="StringPatternType"> 
<xsd:restriction base="xsd:string"> 
<xsd:pattern value="x:/S.*"/> 
</xsd:restriction> 
</xsd:simpleType> 
最后,使用 <xsd:union> 标记结合列表与模式,如 清单 6 所示。 
清单 6. 枚举列表与扩展模式的结合 
<xsd:simpleType name="MyExtPersonEyeColorType"> 
<xsd:union memberTypes="PersonEyeColorType StringPatternType"/> 
</xsd:simpleType> 
<xsd:element name="PersonEyeColor" type="MyExtPersonEyeColorType"/> 
同一节点拥有标准和扩展值。两个值很容易分离,而且都可以用解析器验证,如 清单 7 所示。 
清单 7. XML 实例样例 
<PersonEyeColor>Black</PersonEyeColor> 
<PersonEyeColor>x:Teal</PersonEyeColor> 
优点: 
同一元素可用于所有数据。 
用解析器对基本枚举列表进行验证。 
清晰地分隔扩展值。 
该解决方案允许在以后绑定新值。 
缺点: 
必须解析元素的内容,以确定是否已经被扩展。 
模式解析器必须支持正则表达式。 
需要 <xsd:union> 标记支持。 
回页首 
解决方案 4:使用单独的字段用于扩展 
在该解决方案中,枚举字段不会变化。

“XML模式中扩展枚举列表的方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: XML模式中扩展枚举列表的方法

本文链接: https://www.lsjlt.com/news/94228.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • XML模式中扩展枚举列表的方法
    本篇内容介绍了“XML模式中扩展枚举列表的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!清单 1. 婚...
    99+
    2024-04-02
  • JavaScript中的创建枚举四种方式
    目录基于对象的枚举优缺点枚举值类型基于Object.freeze()枚举优缺点基于proxy枚举优缺点基于类的枚举优缺点总结字符串和数字具有无数个值,而其他类型如布尔值则是有限的集合...
    99+
    2023-05-19
    js枚举方式 js枚举 js创建枚举
  • MySQL中的枚举值如何在表达式中使用?
    众所周知,枚举值与索引值相关联,因此如果我们在表达式中使用枚举值,那么所有计算都将在索引号上完成。下面的例子将阐明它 -mysql> Select * from Result; +-----+--------+-------...
    99+
    2023-10-22
  • Java中枚举类enum的values()方法的详解
    Java中枚举类enum的values()方法的详解 简介: 枚举中的一个特殊方法,values(), 在Enum 的 API 文档中也找不到这个方法,当点击values()时,也会跳到本类上。 此方法可以理解为:将枚举类转变为一个枚举类型...
    99+
    2023-08-18
    java 开发语言 jvm
  • PHP扩展模块opcode的安装方法
    本篇内容介绍了“PHP扩展模块opcode的安装方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Opdumper安装Opdumper的源码...
    99+
    2023-06-17
  • 枚举中的values()方法如何在java 中使用
    本篇文章给大家分享的是有关枚举中的values()方法如何在java 中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。首先是我们自己的枚举类。public enum Enu...
    99+
    2023-05-31
    java 枚举 values()
  • Java中的反射,枚举及lambda表达式的使用详解
    目录一、反射1.1定义1.2用途1.3反射基本信息1.4与反射相关的类1.5Class类(反射机制的起源)1.6Class类中的相关方法1.7获得Class对象的三种方式1.8反射的...
    99+
    2024-04-02
  • C语言数据结构与算法中枚举、模拟及排序的方法
    本篇内容主要讲解“C语言数据结构与算法中枚举、模拟及排序的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言数据结构与算法中枚举、模拟及排序的方法”吧!枚举连号区间数来源:第四届蓝桥杯省赛...
    99+
    2023-06-30
  • 如何理解.NET 3.5扩展方法和Lambda表达式
    如何理解.NET 3.5扩展方法和Lambda表达式,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。对于上文的简化需求,使用Lambda表达式和内置的.NET 3.5扩展方法便可...
    99+
    2023-06-18
  • oracle扩展表空间的方法是什么
    Oracle扩展表空间的方法有以下几种: 使用ALTER TABLESPACE命令:可以使用ALTER TABLESPACE命令来...
    99+
    2024-04-02
  • plsql扩展表空间的方法是什么
    在PL/SQL中,可以通过以下方法来扩展表空间: 使用ALTER TABLESPACE命令:可以使用ALTER TABLESPA...
    99+
    2023-10-22
    plsql
  • 探讨Golang中的扩展方法
    Go语言(Golang)是一门快速高效的编程语言,自从发布以来已经成为了许多开发者的首选语言。它提供了高效的内存管理,简单直观的语法和特性,而且编译速度也极快。此外,Golang还提供了一些很棒的构建工具和库,使得开发人员可以更容易地完成任...
    99+
    2023-05-14
  • oracle扩展表空间的方法有哪些
    扩展Oracle表空间的方法有以下几种:1. 使用ALTER TABLESPACE命令:使用ALTER TABLESPACE命令可以...
    99+
    2023-09-15
    oracle
  • PHP中runkit扩展的使用方法
    这篇文章给大家分享的是有关PHP中runkit扩展的使用方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。动态修改常量define('A', 'TestA');runki...
    99+
    2023-06-15
  • Python删除列表中重复元素的七种方法举例
    目录前言直接遍历列表删除通过遍历索引删除通过遍历创建的切片来删除原列表用新列表记录需要保留的元素通过索引倒着删除通过递归函数删除毫无疑问set()是最方便的总结前言 嗨嗨,大家晚上好...
    99+
    2023-05-14
    列表去重 python python怎么去除列表中重复项 python中删除列表中的重复内容
  • 详解Java枚举类在生产环境中的使用方式
    目录前言使用1、确定业务场景状态2、定义枚举类3、自定义查询方法4、测试效果总结前言   Java枚举在项目中使用非常普遍,许多人在做项目时,一定会遇到要维护某些...
    99+
    2024-04-02
  • 利用Centos php扩展方式安装gd库的方法
    这篇文章主要介绍“利用Centos php扩展方式安装gd库的方法”,在日常操作中,相信很多人在利用Centos php扩展方式安装gd库的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”利用Centos ...
    99+
    2023-06-10
  • linux中php安装CURL扩展的方法
    这篇文章主要讲解了“linux中php安装CURL扩展的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux中php安装CURL扩展的方法”吧!如果php已经在系统编译好,后来又需要...
    99+
    2023-06-13
  • 单例模式在PHP框架中的使用与扩展
    前言:在PHP框架开发中,为了确保某个类只有一个实例,并且能够全局访问,我们常常会使用单例模式。单例模式能够对系统资源进行有效管理,提高系统性能和安全性。本文将探讨单例模式在PHP框架中的使用与扩展,并且提供具体的代码示例。一、单例模式的概...
    99+
    2023-10-21
    单例模式 PHP框架 扩展
  • 单例模式在PHP框架中的扩展与定制
    【引言】单例模式是一种常见的设计模式,它保证类在整个应用程序中只能实例化一次。在PHP开发中,单例模式的应用非常广泛,特别是在框架的开发和扩展中。本文将介绍如何在PHP框架中扩展和定制单例模式,并提供具体的代码示例。【什么是单例模式】单例模...
    99+
    2023-10-21
    单例模式 PHP框架 扩展与定制
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作