xml中的DTD和schema

Posted 款款就是我

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>

  

以上是关于xml中的DTD和schema的主要内容,如果未能解决你的问题,请参考以下文章

xml约束技术---schema

Maven 中的 XML DTD/Schema 验证

DTD和Schema的区别

XML Dtd Schema

xml的schema约束(Java)

XML 约束 (DTD和 schema)