XML(Extensible Markup Language,可扩展的
标记语言) 作用:存储和传输数据 什么是XML? XML是一种元语言, 是一种与特定的业务逻辑相关的,语义的,结构化的
标记语言的语法语言。 HTML语法定义是用xml
标记书写规范和定义---W3C组织写的
自定义XML,声明解析都能实现
自定义 XML优点? 1.简化了数据的传输与存储 2.能够更好的实现跨平台(跟平台无关) XML文档 文档后缀名.xml 1.XML文档第一行必须写声明 2.XML文档有且仅有一对根
标签 格式良好的XML(WELL-Formed XML) 格式是否良好由浏览器校验 有意义的XML(格式良好的XML+语法校验) 格式良好规范: 1.
标签要成对出现,正确结束 2.XML文档第一行必须写声明 3.XML文档有且仅有一对根
标签 4.
属性以键值对书写,
属性值必须用引号引起来 5.
标签要正确嵌套 6.
标签注释与
标签要正确嵌套 7.
标签名称大小写敏感 8.
标签名称可以包含数字,字母,下划线 9.
标签名称不能以数字或者下划线开始 10.
标签名称不能以XML,xml,Xml开始 XML语法验证DTD、Schema DTD(Document Type Definition):用来声明定义XML的语法 格式良好+DTD/Schema=有意义的XML 在XML中由于可以实现
用户自定义, 那么在共享数据的时候必须
加上语法规范,来声明规范XML格式 引入DTD 1.书写在XML文档的内部,叫内部DTD <!DOCTYPE 根
标签 [ DTD规范]> 例如: <!DOCTYPE book[ <!ELEMENT book ANY> ]> 2.外部DTD,DTD的声明独立为一个
文件,
文件的后缀名.dtd 在XML
文件中引入外部DTD <!DOCTYPE 根
标签 SYSTEM "外部dtd的路径"> 3.引入互联网上的DTD <!DOCTYPE 根
标签 PUBLIC "互联网中DTD的访问路径"> DTD语法 声明一个元素(
标签,节点) <!ELEMENT 元素
名称 元素类型> 元素类型:ANY 表示任何解析数据 PCDATA(Parsed Charactor Data) 表示所有字符数据(&<>) EMPTY 空
标签,
标签体不能含有任何
内容 纯元素(
标签体中只包含子
标签) 1.含有一个子元素的纯元素 <!ELEMENT 元素
名称 (子元素
名称)> 2.含有多个子元素的纯元素 2.1非此即彼(多个子元素不能同时出现) <!ELEMENT book (title|timu)> |表示只允许出现其一 2.1子元素存在先后顺序 <!ELEMENT book (title,author)>,表示子元素必须出现并且存在先后顺序 2.3子元素重复出现 <!ELEMENT book (author*)> *表示零次多者多次 +一次或者多次 ?表示零次多车一次 2.4采用括号组合 <!ELEMENT book (title,(timu|author)*)> title必须出现,timu,author可出现零次或者多次 混合元素 既含有文本
内容同时还有子元素 <!ELEMENT book (#PCDATA|title|author)*>
属性的声明定义 <!ATTLIST 元素
名称 属性名称 属性数据类型
属性特点>
属性特点 #
required 属性必须出现 #IMPLIED
属性可出现可不出现
属性数据类型 CDATA(Charactor Data) 表示所有字符 不允许&,<> NMTOKEN(name token) 所有字符不能包含空格(字符串中间不能包含空格) NMTOKENS 能包含空格 ID 唯一性,表示数据不能重复, 不能是纯数字,不能以数字开始 IDREF
属性的取值引用其他ID类型
属性的值 IDREFS
属性的取值引用其他ID类型
属性的值, 可以引用多个ID类型的值,相互用空格隔开 建立枚举类型的
属性 <!ATTLIST author sex (男|女) #
required> 固定取值的
属性 <!ATTLIST author guoji CDATA #FIXED '中国'> 实体 实体:用一些字符来表示一组字符串或者是特殊格式的字符 预定义的实体 > < "
自定义实体 <!ENTITY 实体
名称 实体的
内容> 实体使用 &实体
名称; <!ENTITY en 'hello world'> 参数实体 只能定义在外部DTD <!ENTITY % can 'id ID #IMPLIED'> <!ATTLIST title %can;> Schema(一种XML文档的约束和定义) DTD的不足? 1.DTD的语法声明与XML中的元素格式不匹配 2.DTD数据类型有限,与
数据库产品的数据类型不匹配 3.DTD
不支持命名空间,不便于DTD
文件的管理 Schema文档后缀名.xsd 声明根
标签 <?xml version="1.0" encoding="UTF-8"?> 声明根
标签schema,xs表示命名空间的别名 xmlns进一步声明解释命名空间 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 表示当前schema文档的元素是否纳入到当前命名空间的管理 qualified 纳入管理 unqualified 表示不纳入管理 elementFormDefault ="qualified" 表示当前schema文档的元素中的
属性 是否纳入到当前命名空间的管理 attributeFormDefault = "unqualified" 定义目标xml文档引入当前schema所要引用的命名空间 targetNamespace="hello@yahoo.com.cn" > 声明一个元素 <xs:element name="book" type="xs:int"></xs:element> </xs:schema> 目标XML
文件 <?xml version="1.0" encoding="UTF-8"?> 根
标签的声明解释,根
标签引用自目标schema文档 <my:book xmlns:my="hello@yahoo.com.cn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 书写目标schema的引用路径:命名空间 schema
文件名 xsi:schemaLocation= "hello@yahoo.com.cn testSchema.xsd" >111</my:book> 元素的声明定义 <xs:element name="" type="" maxOccurs="" minOccurs=""/> name
属性:表示元素的
名称 type
属性:元素的元素体的数据类型 type的取值: 基本数据类型 简单数据类型 复杂数据类型 1.基本数据类型 xs:int 整型 xs:string 字符串 xs:double 浮点类型 xs:date 日期类型 xs:time 时间类型 xs:decimal 任意精度类型 xs:boolean 布尔类型 2.简单类型SimpleType 2.1内嵌式简单类型 <xs:element name="book" > 声明简单类型 <xs:simpleType> 对类型中的值进行约束, base
属性:设置基本数据类型 <xs:restriction base="xs:int"> <!--设置整数的最大值,不包含边界--> <xs:maxExclusive value="100"></xs:maxExclusive> </xs:restriction> </xs:simpleType> </xs:element> 注意:内嵌式简单类型,element元素中不能设置 type
属性 2.2外部引用简单类型 <xs:element name="book" type="testSimple"></xs:element> <!--声明外部简单类型--> <xs:simpleType name="testSimple"> <xs:restriction base="xs:int"> <xs:minExclusive value="20"></xs:minExclusive> </xs:restriction> </xs:simpleType> 注意:在声明外部类型时,文档目录不能含有
中文 在schema文档中 必须声明当前
标签/数据类型等的命名空间 xmlns="必须与targetNamespace
属性值一致" restriction
标签:约束值的
内容 设置最小值,不包含边界 <xs:minExclusive value="20"/> 设置整数的最大值,不包含边界 <xs:maxExclusive value="100"></xs:maxExclusive> 设置最小值,包含边界 <xs:minInclusive value=""></xs:minInclusive> 设置整数的最大值,包含边界 <xs:maxInclusive value="12"></xs:maxInclusive> 整数的最大位数 <xs:totalDigits value="3"></xs:totalDigits> 设置字符串的长度 <xs:length value="4"></xs:length> 设置字符串的最大长度 <xs:maxLength value="4"></xs:maxLength> 设置字符串的最小长度 <xs:minLength value=""></xs:minLength> 设置有限个具体取值 <xs:enumeration value="world"></xs:enumeration> 设置字符串的正则 <xs:pattern value=""></xs:pattern> 设置空白字符的处理方式 <xs:whiteSpace value=""></xs:whiteSpace> 设置小数的最大位数 <xs:fractionDigits value="2"></xs:fractionDigits> 只能应用在xs:decimal类型下 3.复杂类型 <xs:complexType name="comType"> 定义子元素,声明子元素的出现顺序 <xs:sequence maxOccurs="unbounded" minOccurs="1"></xs:sequence> maxOccurs:父
标签中最大出现
次数,默认1,unbounded 无限
次数 minOccurs:父
标签中最小出现
次数,默认1 <xs:sequence > <xs:element name="title" type="xs:string"></xs:element> <xs:element name="author" type="xs:string"></xs:element> </xs:sequence> 声明子元素,出现没有先后顺序 <xs:all> <xs:element name="title" type="xs:string"></xs:element> <xs:element name="author" type="xs:string"></xs:element> </xs:all> 声明子元素,子元素非此即彼 <xs:choice> <xs:element name="title" type="xs:string"></xs:element> <xs:element name="author" type="xs:string"></xs:element> </xs:choice> 约束复杂类型中的值 <xs:simpleContent> <xs:restriction base="xs:int"> <xs:minExclusive value="12"></xs:minExclusive> </xs:restriction> </xs:simpleContent> 声明含有
属性的元素 <xs:simpleContent> base
属性:声明元素体的约束 <xs:extension base="xs:int"> 声明
属性 <xs:attribute name="name" type="testSimple" use="optional" fixed="3"></xs:attribute> name
属性:
属性名称 type
属性:
属性取值 use
属性:
属性特点 optional 可选择的
required 必须的 fixed
属性:
属性的固定取值 </xs:extension> </xs:simpleContent> 设置复杂类型既含有子元素,同时含有
属性 <xs:all> <xs:element name="title" type="xs:string"></xs:element> <xs:element name="author" type="xs:string"></xs:element> </xs:all> <xs:attribute name="name" type="xs:int" use="
required"></xs:attribute> </xs:complexType> 设置混合类型的复杂类型 <xs:complexType name="comType" mixed="true"> <xs:all> <xs:element name="title" type="xs:string"></xs:element> <xs:element name="author" type="xs:string"></xs:element> </xs:all> <xs:attribute name="name" type="xs:int" use="
required"></xs:attribute> </xs:complexType>