`

自定义简单类型

阅读更多
自定义简单类型:
  通过对一个已有简单类型进行约束派生出来的。

格式:
  <xs:simpleType>
       <!--自定义简单类型-->
  </xs:simpleType>

例:
XML文件:
  <?xml version="1.0"?>
  <medal>sliver</medal>

Schema文件:
  <?xml version="1.0"?>
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
   <xs:element name="medal">  /声明元素
    <xs:simpleType>   /声明简单类型
     <xs:restriction base="xs:string">  /声明新类型是基于字符类型的约束
      <xs:enumeration value="gold"/>  /声明自定义枚举型
      <xs:enumeration value="sliver"/>
      <xs:enumeration value="copper"/>
     </xs:restriction>
    </xs:simpleType>
   </xs:element>
  </xs:schema>

说明:
  该段代码创建了一个新的类型,该类型是枚举型。其中包含了三个选项(gold、sliver、copper)。
  在XML文档中,只能在三个选项中出现其中一个。
自定义简单类型:
enumeration(枚举型):<xs:enumeration value="值"/>
注:值:是基本于<xs:restriction base="Schema内置类型">Schema内置类型的约束
例:
XML文件:
  <?xml version="1.0"?>
  <medal>sliver</medal>

Schema文件:
  <?xml version="1.0"?>
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
   <xs:element name="medal">  /声明元素奖章
    <xs:simpleType>   /声明简单类型
     <xs:restriction base="xs:string">  /声明新类型是基于字符类型的约束
      <xs:enumeration value="gold"/>  /声明自定义枚举型——金牌
      <xs:enumeration value="sliver"/>    /银牌
      <xs:enumeration value="copper"/>    /铜牌
     </xs:restriction>
    </xs:simpleType>
   </xs:element>
  </xs:schema>

minLength(最小长度值):<xs:minLength value="值"/>
maxLength(最大长度值):<xs:maxLength value="值"/>
例:
XML文件:
  <?xml version="1.0"?>
  <name>张晓艳</name>

Schema文件:
  <?xml version="1.0"?>
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
   <xs:element name="name">  /声明元素姓名
    <xs:simpleType>   /声明简单类型
     <xs:restriction base="xs:string">  /声明新类型是基于字符类型的约束
      <xs:minLength value="2"/>  /声明名字最少2个字
      <xs:maxLength value="4"/>  /声明名字最多4个字
     </xs:restriction>
    </xs:simpleType>
   </xs:element>
  </xs:schema>

注:在字符串,无论是中文字符,还是英文字符,都被当做是一个字符来看待。

minInclusive(最小取值范围):<xs:minInclusive value="值"/>
注:值:包括边界值   n>=0
maxInclusive(最大取值范围):<xs:maxInuclusive value="值"/>
注:值:包括边界值   n<=100
例:
XML文件:
  <?xml version="1.0"?>
  <ChengJi>128</ChengJi>

Schema文件:
  <?xml version="1.0"?>
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
   <xs:element name="ChengJi">  /声明元素成绩
    <xs:simpleType>   /声明简单类型
     <xs:restriction base="xs:integer">  /声明新类型是基于整数类型的约束
      <xs:minInclusive value="0"/>  /声明成绩最少得0分
      <xs:maxInuclusive value="150"/>  /声明成绩最高得150分
     </xs:restriction>
    </xs:simpleType>
   </xs:element>
  </xs:schema>


minExclusive(最小取值范围):<xs:minExclusive value="值"/>
注:值:不包括边界值 n>0
maxExclusive(最大取值范围): <xs:maxExclusive value="值"/>
注:值:不包括边界值 n<100
例:
XML文件:
  <?xml version="1.0"?>
  <JiGe>61</JiGe>

Schema文件:
  <?xml version="1.0"?>
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
   <xs:element name="JiGe">  /声明元素及格
    <xs:simpleType>   /声明简单类型
     <xs:restriction base="xs:integer">  /声明新类型是基于整数类型的约束
      <xs:minExclusive value="59"/>  /声明成绩最少得60分才及格
      <xs:maxExclusive value="101"/>  /声明成绩最高分为100分
     </xs:restriction>
    </xs:simpleType>
   </xs:element>
  </xs:schema>


totalDigits(数字的总位数): <xs:totalDigits value="值"/>
fractionDigits(数字的小数总分位数):<xs:fractionDigits value="值"/>
注:这其中不包括小数点,位数仅指有效位数,即会去除前导"0"和后继"0"。
例:
  001234.56700先会被转换为1234.567再进行比对。

XML文件:
  <?xml version="1.0"?>
  <price>1123.44</price>

Schema文件:
  <?xml version="1.0"?>
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
   <xs:element name="price">  /声明元素价格
    <xs:simpleType>   /声明简单类型
     <xs:restriction base="xs:decimal">  /声明新类型是基于小数类型的约束
      <xs:totalDigits value="6"/>  /声明价格的总位数是6位
      <xs:fractionDigits value="2"/>  /声明保留2位小数
     </xs:restriction>
    </xs:simpleType>
   </xs:element>
  </xs:schema>

pattern(模式匹配):<xs:pattern value="正则表达式"/> 
注:正则表达式在文章分类中的xml学习里有介绍。
例:
XML文件:
  <?xml version="1.0"?>
  <tel>010-12345678</tel>

Schema文件:
  <?xml version="1.0"?>
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
   <xs:element name="tel">  /声明元素电话号码
    <xs:simpleType>   /声明简单类型
     <xs:restriction base="xs:string">  /声明新类型是基于字符类型的约束
      <xs:pattern value="\d{3,4}-\d{8}"/>  /声明三或四位的区号-后八位的号码
     </xs:restriction>
    </xs:simpleType>
   </xs:element>
  </xs:schema>

list(列表类型):<xs:list itemType="simpleType"/>
注:itemType属性用于指定列表类型中元素的数据类型。
例:
XML文件:
  <?xml version="1.0"?>
  <abc>c b a</abc>

Schema文件:
  <?xml version="1.0"?>
  <xs:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <xs:element name="abc">    /声明元素"abc"
    <xs:simpleType>    /声明简单类型
     <xs:list itemType="123"/> /声明自定义列表类型,定义列表项名称为"123"
    </xs:simpleType>
   </xs:element>

   <xs:simpleType name="123">    /声明简单类型,名称为列表项名称
    <xs:restriction base="xs:string"> /声明新类型是基于字符类型的约束
     <xs:enumeration value="a"/> /声明自定义枚举型
     <xs:enumeration value="b"/>
     <xs:enumeration value="c"/>
    </xs:restriction>
   </xs:simpleType>
  </xs:schema>
说明:
  其中包含了三个选项(a、b、c),在book元素里,它们出现的顺序可以不限。

union(联合类型):<xs:union memberTypes="simpleType1 simpleType2 ..." />
注:memberTypes属性为联合类型指定成员类型。
例:
XML文件:
  <?xml version="1.0"?>
  <abc123>c</abc123>

Schema文件:
  <?xml version="1.0"?>
  <xs:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <xs:element name="abc123">    /声明元素"abc123"
    <xs:simpleType>    /声明简单类型
     <xs:union memberType="abc 123"/> /声明自定义联合类型,定义列表项名称为"abc"和"123"
    </xs:simpleType>
   </xs:element>

    <xs:simpleType name="abc">   /声明简单类型,名称为"abc"
     <xs:restriction base="xs:string">  /声明新类型是基于字符类型的约束
      <xs:enumeration value="a"/>  /声明自定义枚举型
      <xs:enumeration value="b"/>   
      <xs:enumeration value="c"/>   
     </xs:restriction>
    </xs:simpleType>
   
   <xs:simpleType name="123">    /声明简单类型,名称为"123"
    <xs:restriction base="xs:integer"> /声明新类型是基于数字类型的约束
     <xs:enumeration value="1"/> /声明自定义枚举型
     <xs:enumeration value="2"/>
     <xs:enumeration value="3"/>
    </xs:restriction>
   </xs:simpleType>
  </xs:schema>
说明:
  其中包含了六个选项(a、b、c、1、2、3),只能在XML文档中出现其中一个。


分享到:
评论

相关推荐

    MIME类型的自定义

    下面是一个简单的示例,展示了如何在Web服务器配置文件中添加自定义MIME类型: ```apache AddType application/vnd.example.doc .exampledoc ``` 在这个例子中,我们为`.exampledoc`文件扩展名添加了一个名为`...

    易语言自定义数据类型的内存存储方式

    在易语言中,自定义数据类型是一种重要的编程概念,它允许程序员根据需求定义自己的数据结构,比如组合多种基本数据类型,形成复合型的数据结构。本文将深入探讨易语言中自定义数据类型的内存存储方式及其相关知识点...

    易语言启动线程传自定义数据类型参数源码

    自定义数据类型可以通过“定义数据类型”命令创建,可以包含基本数据类型(如整数、浮点数、字符串等)以及其它自定义数据类型的组合,形成复杂的数据结构。在多线程环境中,如果需要在线程间传递这样的自定义数据,...

    易语言任意自定义数据类型排序

    在这个主题中,“任意自定义数据类型排序”是指在易语言中实现的一种能够处理各种自定义数据类型的排序算法。排序是计算机科学中的基础操作,广泛应用于各种数据处理场景。这里我们将深入探讨易语言中的自定义数据...

    json一键转换为易语言自定义数据类型1

    软件包含一个简单的界面,允许用户输入 JSON 数据,然后生成相应的自定义数据类型代码。源码已在 GitHub 上提供,大小约为 64.7kb。 **关键代码片段** ```javascript function getAll(tests, className) { var ...

    qt文件操作读写自定义类型

    通过这样的方式,我们不仅可以处理简单的数据类型,还可以处理复杂的自定义类型,这对于存储和传输复杂的数据结构非常有用。在Qt Creator 2.4.1这样的版本中,这样的功能已经被广泛支持,并且在后续的版本中得到了...

    易语言源码易语言DLL返回自定义数据类型源码.rar

    在“易语言源码易语言DLL返回自定义数据类型源码.rar”这个压缩包中,包含的是一段使用易语言编写的动态链接库(DLL)的源代码,该代码涉及到了如何在DLL中定义并返回自定义数据类型。 首先,我们需要理解DLL是什么...

    易语言自定义类型数组排序

    在易语言中,自定义类型数组排序是一项重要的编程技能,它允许用户按照特定规则对包含自定义类型的数据进行排序。本文将详细讲解易语言自定义类型数组排序的相关知识点。 首先,我们需要理解易语言中的自定义类型...

    opencms自定义文章类型

    简单介绍自定义文章类型创建流程简单介绍自定义文章类型创建流程简单介绍自定义文章类型创建流程

    AIDL自定义类型交互

    **Android AIDL(Android Interface Definition Language)自定义类型交互** 在Android系统中,当需要在不同的进程间进行通信时,AIDL(Android Interface Definition Language)是首选的技术。它是一种接口定义...

    易语言自定义数据类型使用源码.zip

    在易语言中,自定义数据类型通常被称为“构造类型”或“复合类型”。 易语言自定义数据类型的创建方法主要包括以下几个步骤: 1. 定义构造类型:在易语言中,你可以通过“类型”关键字来定义一个新的数据类型。...

    qml中TreeView自定义数据类型,使在代理(Delegate)中能传递到更多的数据

    在实际开发中,我们经常需要自定义数据类型来满足复杂的数据展示需求。`TreeView`默认情况下可能无法直接处理复杂的业务逻辑,这时就需要在代理(Delegate)中传递更多的数据。本文将深入探讨如何在`qml`中实现`...

    COM(activex)使用自定义类型传递数据

    在COM或ActiveX中,自定义类型(用户定义的数据结构)的使用是一个关键特性,它使得组件能够传递复杂的数据结构,而不仅仅是简单的基本类型。 在COM中,自定义类型通常通过接口来定义。接口是一种规范,描述了组件...

    Struts2自定义类型转换

    - 普通实体bean的自定义类型转换:适用于简单的JavaBean类型转换。 - 基于领域模型的自定义类型转换:适用于处理实体类中引用的其他复杂类型。 - 基于模型驱动的自定义类型转换:适用于模型驱动架构下的类型转换...

    易语言自定义数据类型数组排序源码

    下面是一个简单的易语言自定义数据类型数组排序源码示例: ```易语言 .定义 结构 学生 .整数 字段 年龄 .字符串 字段 姓名 .end 结构 .整数 变量 i, j .学生 数组 学生列表 .填充 结构 学生 到 学生列表, 10 //...

    oracle 自定义数据结构和表类型实验

    在Oracle中,用户可以通过CREATE TYPE语句创建自己的数据类型,这可以是基于现有的简单数据类型(如VARCHAR2、NUMBER等)的组合,也可以是对象类型。例如,你可以创建一个包含姓名、年龄和地址的Person类型: ```...

    在Qml中TreeView自定义数据类型

    qml中的TreeView是QtQuick.Controls 1.x的一个组件,由于现在Qt发展QtQtQuick.Controls 2.x,1.x不再更新新特性,这方面的资料也比较少,如果想在其Delegate中传递更多的数据,则需要对styleData.value进行定制,...

    c# PropertyGrid中复杂类型自定义显示

    如果集合中的元素是简单类型,这可能足够了,但如果是复杂类型,我们可能需要显示每个元素的特定属性,或者以更有结构的方式呈现它们。可以使用`TypeConverter`或者`CustomTypeDescriptor`来自定义集合的显示。例如...

    struts2自定义数据类型转换练习

    下面是一段简单的自定义类型转换器示例: ```java import org.apache.struts2.util.TypeConverter; import com.opensymphony.xwork2.ObjectFactory; public class CustomTypeConverter implements TypeConverter {...

    Java软件开发实战 Java基础与案例开发详解 16-3 自定义标注类型 共7页.pdf

    定义一个自定义标注类型非常简单,只需要在`interface`前加上`@`符号即可。下面是一个最简单的自定义标注类型的例子: ```java /** * 自定义标注类型 */ public @interface MyAnnotation {} ``` 在这个例子中,...

Global site tag (gtag.js) - Google Analytics