XSD提供了数据类型,并且支持自定义数据类型,但这一切都是建立在XSD内置数据类型和一套扩展内置数据类型的规则基础之上的,在这一篇笔记中,就来看看XSD中的数据类型。
1、XSD数据类型图
先看一下数据类型图,有个大概的轮廓,后面再进一步细化:
从上面的XSD数据类型图可以看出,主要分成两个大类:
(1)简单类型:可以给属性使用,也可以给元素使用,除了内建类型,也可以使用、联合
(2)复杂类型:只能给元素使用,并且全部需要使用
复杂类型只能给元素使用,这大概也是为什么要区分简单类型和复杂类型的原因。
2、内建类型
内建类型具有基本的重要地位,是派生其它类型的基础,首先还是从官方文档中截一副内建类型的继承关系图下来:
图例中的几个说明:built-in primitive types(内建基本类型)、built-in derived types(内建派生类型)、complex types(复杂类型)、derived by restriction(通过限制派生)、derived by list(通过列表派生)、derived by extension or restriction(通过限制或扩展派生)。
第一印象看这幅图,似乎是两根柱子(string及其派生、decimal及其派生)上面架设了两层商铺,柱子是脊梁,商铺是装饰??扯远了点,还是具体的看看这些内建类型吧!
(1)字符串类型
注意QNAME虽然是字符串类型数据,但因为派生机制的问题,并不是派生自string。
类型 | 说明 | |
QNAME | 带命名空间前缀的XML标签名,允许省略命名空间,但省略时不能以冒号开头,并且使用命名空间时不能以冒号结尾 | |
string | 字符串,可包括字符、换行、回车以及制表符等,会原封不动保留所有字符 | |
normalizedString | 会将字符串中的换行、回车以及制表符都替换成空格 | |
token | 将换行、回车及制表符替换成空格,并自动删除前后空格,将中间的多个连续空格压缩成一个空格 | |
language | 合法的语言代码,如en-GB、en-US、fr、zh-CN等 | |
Name | 合法的XML标签名,即由字母、数字、下划线、中划线、冒号、点号组成,且不能以数字、中划线、点号开头 | |
NCName | 不带命名空间的合法的XML标签名,即不能含冒号 | |
ID | 同DTD,在XML文档中必须唯一,只能用于属性,不能用于元素。 | |
IDREF | 同DTD,必须是引用已有的ID属性值,只能用于属性,不能用于元素 | |
IDREFS | 同DTD,必须是引用已有的一个或多个ID属性值,多个使用空格分隔,只能用于属性,不能用于元素 | |
ENTITY | 同DTD,外部实体,只能用于属性,不能用于元素 | |
ENTITIES | 同DTD,一个或多个外部实体,多个使用空格分隔,只能用于属性,不能用于元素 | |
NMTOKEN | 同DTD,合法的XML标签名,且只能由字母、数字、下划线、中划线、点号、冒号组成 | |
NMTOKENS | 同DTD,一个或多个NMTOKEN,多个使用空格分隔,只能用于属性,不能用于元素 |
(2)数值类型
float和double类型还可以接受的特殊值:-INF(负无穷大)、INF(正无穷大),NaN(非数)、+0(正零)和-0(负零)。其中正零大于负零,NaN大于所有数值(包括INF),INF大于所有浮点数。
类型 | 说明 | |
float | 32位的单精度浮点数,可使用科学计数法,整数部分为0时可省略,但不能省略小数点,不能用f/F后缀 | |
double | 64位的双精度浮点数,可使用科学计数法,整数部分为0时可省略,但不能省略小数点 | |
decimal | 精确小数,不能使用科学计数法,不能接受-INF、INF、NaN等特殊值 | |
integer | 代表任意大的整数 | |
nonPositiveInteger | 非正整数 | |
negativeInteger | 负整数 | |
long | 64位的有符号整数 | |
int | 32位的有符号整数 | |
short | 16位的有符号整数 | |
byte | 8位的有符号整数 | |
nonNegativeInteger | 非负整数 | |
positvieInteger | 正整数 | |
unsignedLong | 64位的无符号整数 | |
unsignedInt | 32位的无符号整数 | |
unsignedShort | 16位的无符号整数 | |
unsignedByte | 8位的无符号整数 |
(3)布尔类型
布尔类型可以接受true、false、1(表示true)、0(表示false)四个值。
(4)日期和时间类型
类型 | 格式 | 说明 |
date | YYYY-MM-DD | 日期 |
time | hh:mm:ss.sss | 时间,sss表示毫秒数 |
dateTime | YYYY-MM-DDThh:mm:ss.sss | 日期时间,中间的T是必须的,是日期和时间的分隔符 |
gYear | YYYY | 年 |
gYearMonth | YYYY-MM | 年月 |
gMonth | --MM | 月,前面的两个中划线是必须的 |
gMonthDay | --MM-DD | 月日,前面的两个中划线是必须的 |
gDay | ---DDD | 日,前面的三个中划线是必须的 |
duration | PnYnMnDTnHnMnS | 定义时间间隔,P是固定的,表示周期,S前的n可以有小数部分,其它必须是整数 |
说明:上面列出的前8个类型后面可以添加Z表示UTC时间;Y、M、D、h、m、s分别表示年月日时分秒,都可替换为一个有效的整数,其中,年份不够4位左边补0,前面加负号表示公元前,月日时分秒不够2位左边补0,毫秒sss可以是1-3位的整数。
(5)二进制数据类型
XSD中有下面两种二进制数据类型:
A:hexBinary,以十六进制保存的二进制数据,因此只能由0~9、a~f、A~F等字符组成,字符长度必须是偶数。
B:base64Binary,以Base64编码保存的任意二进制数据,因此只能由0~9、a~f、A~F和加号+等字符组成,字符长度必须是4的倍数。
(6)anyURI类型:合法的URI。
(7)NOTATION类型:同DTD,表示合法的符号。
3、自定义简单数据类型
(1)使用
<simpleType id=ID name=NCName final=... any-attributes> (annotation?,(restriction|list|union)) <!-- 1.id属性是可选的,用于唯一标识<simpleType>元素本身 2.name属性表示自定义数据类型的名称,值是NCName类型,并且必须在所有<simpleType>和<complexType>之间唯一,<simpleType>是<schema>的子元素时必须指定,这个时候新定义的数据类型为全局的数据类型 --></simpleType>
(2)可以在schema元素下定义全局数据类型,也可以在其它元素下定义局部数据类型。
(3)属性final用来限制派生新的类型,默认值为根元素
A、#all:限制该类型以任何形式派生新的类型
B、restriction、list、union的自由组合:限制使用指定的方式派生新的类型
C、"":不做任何限制
4、通过限制派生自定义数据类型
从语法上看,使用、联合
(1)语法格式如下:
<simpleType ...> <restriction id=ID base=QNAME any-attributes> <!--1.处于<simpleType>元素下的语法--> (annotation?,(simpleType?,(12种数据类型约束)*)) </restriction></simpleType><simpleContent ...> <restriction id=ID base=QNAME any-attributes> <!--2.处于<simpleContent>元素下的语法--> (annotation?,(simpleType?,(12种数据类型约束)*)?,((attribute|attributeGroup)*,anyAttribute?)) </restriction></simpleContent><complextContent ...> <restriction id=ID base=QNAME any-attributes> <!--3.处于<complextContent>元素下的语法--> (annotation?,(group|all|choice|sequence)?,((attribute|attributeGroup)*,anyAttribute?)) </restriction></complextContent>
其中id属性唯一标识
(2)约束:在XSD中,限制是通过在基类型上添加约束来实现的,那么,又有哪些约束呢?这些约束又可以应用到哪些基类型呢?
分类 | 可作用的数据类型 | 约束 | 描述 |
枚举约束 | enumeration | 可接受值的列表 | |
精度约束 | decimal | fractionDigits | 允许的最多的小数位数 |
totalDigits | 允许的数字的最多位数(不包括小数点) | ||
长度约束 | string、QName、anyURI、二进制数据 还可用于约束列表类型列表项的数目 | length | 字符长度或者列表项目的数目 |
maxLength | 字符长度或者列表项目的数目的最大值 | ||
minLength | 字符长度或者列表项目的数目的最小值 | ||
范围约束 | 可以比较大小的类型,如数值、日期等 | maxExclusive | 允许数值的上限,不能等于上限值 |
minExclusive | 允许数值的下限,不能等于下限值 | ||
maxInclusive | 允许数值的上限,可等于上限值 | ||
minInclusive | 允许数值的下限,可等于下限值 | ||
正则表达式约束 | 各种数据类型 | pattern | 使用正则表达式约束可以出现的字符 |
空白处理约束 | whiteSpace | 定义空白字符(换行、回车、空格、制表等)的处理方式 preserve:原样保留所有空白 replace:替换所有空白字符为空格 collapse:先replace,再去掉首尾空格,并将中间连续空格压缩为一个 |
在派生新的类型时,如果原来类型有一个约束,新派生类型使用相同的约束,且新约束范围在原约束范围之内,则新类型的约束将会覆盖原类型的约束。但有时候,想阻止派生类型覆盖已有的约束,这个时候可以在原类型的约束上添加fixed属性(true|false)。
5、通过列表派生自定义数据类型 (1)列表元素的语法:
<list id=ID itemType=QName any-attributes> (annotatin?,(simpleType?))</list>
(2)指定列表成员类型的方法
A、使用itemType属性
B、使用子元素
(3)实际上,内置的IDREFS、ENTITIES、NMTOKENS分别是IDREF、ENTITY、NMTOKEN类型的列表类型。
(4)使用空格作为列表类型值的分隔符。
(5)可以对列表类型使用长度约束(约束列表项的个数)、枚举约束、正则表达式约束和空白处理约束(但值只能是collapse),需要注意的是,枚举约束和正则表达式约束的是整个列表类型的值,而不仅仅只是其中一个列表项值。
6、通过联合派生自定义数据类型
(1)联合
<union id=ID memberTypes="QName列表" any-attributes> (annotatin?,(simpleType*))</union>
(2)指定联合成员类型的方法
A、使用属性memberTypes,多个类型使用空格分隔
B、使用一个或多个子元素
(3)可以对联合类型使用枚举约束和正则表达式约束,同样,约束的也是整个联合类型的值。
(4)列表类型和联合类型都是在现有类型的基础上派生新类型,在XSD中还可以使用元素由联合类型派生出相应的列表类型,也可以使用
7、最后看一个使用三种方式自定义简单类型的实例:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <!--从int派生的ageType--> <xs:simpleType name="ageType"> <xs:restriction base="xs:int"> <xs:maxInclusive value="100"/> <xs:minInclusive value="0"/> </xs:restriction> </xs:simpleType> <!--由ageType派生出对应的列表类型--> <xs:simpleType name="ageListType"> <xs:list itemType="ageType"/> </xs:simpleType> <!--从string派生的nameType--> <xs:simpleType name="nameType"> <xs:restriction base="xs:string"> <xs:maxLength value="20"/> <xs:minLength value="4"/> </xs:restriction> </xs:simpleType> <!--由nameType派生出对应的列表类型--> <xs:simpleType name="nameListType"> <xs:list itemType="nameType"/> </xs:simpleType> <!--由ageType和nameType派生出联合类型--> <xs:simpleType name="ageType_nameType"> <xs:union memberTypes="ageType nameType"/> </xs:simpleType> <!--使用两个列表类型派生联合类型--> <xs:simpleType name="ageListType_nameListType"> <xs:union memberTypes="ageListType nameListType"/> </xs:simpleType> <!--使用两个联合类型派生联合类型--> <xs:simpleType name="furtherType"> <xs:union memberTypes="ageType_nameType ageListType_nameListType"/> </xs:simpleType> <!--一个列表类型,一个联合类型派生联合类型--> <xs:simpleType name="furtherMixType"> <xs:union memberTypes="nameListType ageListType_nameListType"/> </xs:simpleType> <!--由联合类型派生出对应的列表类型--> <xs:simpleType name="ageType_nameType_ListType"> <xs:list itemType="ageType_nameType"/> </xs:simpleType></xs:schema>

htmltagsdefinestructureofawebpage, whiletributesdfunctionalityanddetails.1) tags, andoutlinethecontent'splacement.2) agtributessuchassrc, class 및 styleenhancetagsbysingingimages ources, styling, and mormore, mormor, 개선.

HTML의 미래는보다 의미적이고 기능적이며 모듈 식 방향으로 발전 할 것입니다. 1) 의미화로 인해 태그가 콘텐츠를보다 명확하게 설명하여 SEO 및 장벽없는 액세스를 향상시킵니다. 2) 기능화는 사용자의 요구를 충족시키기 위해 새로운 요소와 속성을 소개합니다. 3) 모듈화는 구성 요소 개발을 지원하고 코드 재사용 성을 향상시킵니다.

htmlattributesarecrucialinwebdevelopmentforcontrollingbehavior, 외관 및 기능. 접근성, 접근성, andseo.forexample, thesrcattributeintagspactsseo, whike whike whike whike whike whike thercattributeintagspactsseo

ALT 속성은 HTML에서 태그의 중요한 부분이며 이미지에 대한 대체 텍스트를 제공하는 데 사용됩니다. 1. 이미지를로드 할 수 없으면 ALT 속성의 텍스트가 표시되어 사용자 경험을 향상시킵니다. 2. 스크린 리더는 ALT 속성을 사용하여 시각 장애가있는 사용자가 그림의 내용을 이해하도록 도와줍니다. 3. 검색 엔진 인덱스 텍스트 텍스트는 웹 페이지의 SEO 순위를 향상시키기 위해 ALT 속성의 텍스트를 색인 텍스트입니다.

웹 개발에서 HTML, CSS 및 JavaScript의 역할은 다음과 같습니다. 1. HTML은 웹 페이지 구조를 구축하는 데 사용됩니다. 2. CSS는 웹 페이지의 모양을 아름답게하는 데 사용됩니다. 3. JavaScript는 동적 상호 작용을 달성하는 데 사용됩니다. 태그, 스타일 및 스크립트를 통해이 세 가지는 함께 현대 웹 페이지의 핵심 기능을 구축합니다.

태그의 Lang 속성을 설정하는 것은 웹 접근성 및 SEO를 최적화하는 핵심 단계입니다. 1) 태그에 LANG 속성을 설정하십시오. 2) 다국어 컨텐츠에서는 다른 언어 부품에 대한 LANG 속성을 설정하십시오. 3) "en", "fr", "zh"와 같은 ISO639-1 표준을 준수하는 언어 코드를 사용하여 LANG 속성을 올바르게 설정하면 웹 페이지 및 검색 엔진 순위의 접근성을 향상시킬 수 있습니다.

htmlattributesearsentialforenhancingwebelements'functionalityandAmpearance.theyaddinformationTodeFineBehavior, 외관 및 간호, WebsITESITERACTIVE, RAPITIVE 및 VVESILLY -CAMENTION.ATTRIBUTESLIKESRC, HREF, 클래스, 유형 및 디스티브 트랜스포트

ToCreateAlistInhtml, useUnorderEdListandForOrdLists : 1) forUnderedList, wrapitemSinanduseForeachitem, renderingasabulletedList.2) forOrderEdlists, useandfornumberedLists, useandfornumberedlists, useandfornumberedlists, useandfornumberedlists, withTheyPeatTributeFferentNumberingStyles.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

Dreamweaver Mac版
시각적 웹 개발 도구

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!