xml中的DTD和schema

XML的文档声明<?xml version="1.0" encoding="UTF-8" ?> 
xml转义字符
<![CDATA[内容]]>
实例:
<![CDATA[
<student stuno='s01'>
<name>张三</name>
<age>23</age>
<sex>男<</sex>
</student>
]]>
XML的约束文档DTD和Schem
DTD的元素定义
1.定义元素的语法:<!ELEMENT 元素名  内容类型或内容>  
①内容类型:EMPTY 定义空元素 ANY元素内容是任意的
②元素的内容:
元素的内容可以是文本数据,可以是子元素
<!ELEMENT name (#PCDATA)>表示name元素的内容为文本    <name>zansan</name>
<!ELEMENT student (name, age, gender)> 表示student元素的内容为子元素
③子元素出现的次数:
可以使用 “?” “+” “*”来指定子元素出现的次数
<!ELEMENT students (student?)>  ?表示students元素可以有0-1个student元素
<!ELEMENT students (student*)> * 表示students元素①可以有0-n个student子元素
<!ELEMENT students (student+)> + 表示students元素可以有1-n个student子元素
④多个子元素:
<!ELEMENT student (name, age, gender)>表示必须有三个子元素,并且者三个子元素 出现顺序要与申明顺序保持一致
 ⑤枚举子元素:
<!ELEMENT student (name|age|gender)>表示只要一个子元素,可以是name,age,sex中 任意一个。
2.元素属性的语法:
<!ATTLIST  元素名
属性名1 属性类型 属性说明
属性名2 属性类型 属性说明...>
常见的属性类型:CDATA  表示文本类型  ;ID 属性值是唯一的  
常见的设置说明:#REQUIRED 表示属性是必须的
  #IMPLIED 表示属性可选的
 
Schema概述
Ø DTD的局限性
DTD不遵循XML语法
DTD数据类型有限
DTD不可扩展
DTD不支持命名空间(命名冲突)
Ø Schema的新的特性
Schema基于xml语法
Schema可以用能处理xml文档的工具处理
Schema大大扩充了数据类型,可以自定义数据类型
Schema支持属性组
Schema约束的元素
Schema元素 (只要是schema约束,都以schema元素作为根节点)
 
作用:包含已经定义的schema
用法;<xs:schema>  xs就是命名空间的别名,可以自定义,我们都用默认的
属性:xmlns 约束当前xml的命名空间
  targetNamespace
Element元素
声明一个元素
<
属性:
name :元素的名称 type :属性的类型  ref:引用已定义的元素
maxoccurs 最多出现的次数 minoccurs 最少出现的次数
Attribute属性
作用:声明一个属性
<xs:attribute name="stuno" type="xs:int" use="optional"></xs:attribute>
Name:属性名 type:属性类型  use是否是必填 ref 外部属性的引用
 
complexType 元素定义复杂类型
<xs:element name="student">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="gender" type="xs:string"/>
</xs:sequence>
<xs:attributeGroup ref="stuattr"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="stuattr">
<xs:attribute name="stuno" type="scorest" use="required"/>
</xs:attributeGroup>
<!-- 0-100的数值约束-->
<xs:simpleType name="scorest">
<xs:restriction base="xs:int">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="100"/>
</xs:restriction>
</xs:simpleType>

  

转载于:https://www.cnblogs.com/yin-dt/p/6920168.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值