代码改变世界

韩顺平 JavaEE全套 第06部分 Xml视频教程 | XML文件书写和解析 | XML技术

2020-01-06 10:23  cascle  阅读(221)  评论(0编辑  收藏  举报

一.XML的历史介绍

1969:gml(general),为了计算机网络上交换数据

1985:sgml(standard),标准化

1993:html,www万维网使用

1998:xml(extensiable),为了弥补html缺陷推出

html缺陷:

1.标记不能自定义

2.标记没有含义

3.没有真正的国际化

 

二.XML使用场景

1.程序通讯

2.配置文件

3.小型数据库 

4.表达能力(关系复杂)、扩展能力强的场景

 

三.XML快速入门与语法详解

XML语法分六部分

  • 文档声明
  • 元素
  • 属性
  • 注释
  • CDATA区,特殊字符
  • 处理指令

 

文档声明:开头要<?xml version="1.0"  encoding="utf-8" standalone="yes"?> , 这个头部不可少,表明身份,文件编码,是否可以独立使用

文件保存格式要和encodig声明的一致

 

 1.文档声明

<?xml version="1.0"  encoding="编码格式" standalone="yes|no(默认no)"?> 

 2.元素

只能有一个根元素

元素也叫标签、节点,标签夹着标签体,没有标签体可以自闭和。标签可以嵌套,不能交叉嵌套。标签体里的空格换行都是被解析到的,不会忽略。

标签区分大小写,不能以数字或者_开头,不能包含冒号,不能包含空格

 3.属性

属性值用单引号、双引号包住。值中真正的单引号双引号用转义字符(实体),比如&quot;

属性值不能包含< & >这三个字符;可以有中文

属性名不能重复

属性键值对之间用空格分格

 4.注释

<!--和-->表明注释

不能放在标记里

不能嵌套

注释内容不能有--

5.CDATA节

原始数据,不需要被解析的数据,比如图片

用<![CDATA[和]]>包起来

不能嵌套

不能包含]]>

6.指令

指挥解析引擎如何解析xml文档内容

用<?开头,?>结尾

指令有xml-stylesheet,

 

四.xml文件约束——dtd

dtd缩写是document type definition,文档类型定义元文件

主要用处是约束xml文件。dtd文件里定义规范,是个标准规范

另一种约束技术是Schema

 

xml引入dtd

<!DOCTYPE 根元素名称 dtd文件类型(PUBLIC代表网络,SYSTEM代表本地)“public时dtd名称”  "dtd文件路径" >,路径可以是网络也可以是本地的

 

 dtd文件定义

<!ELEMENT 父元素 (子元素+) (类型)>,+表示至少出现一次;有多个子元素,子元素可以用逗号分割;子元素和类型要用小括号包起来

类型里的#PCDATA代表任何文本

 

验证dtd工具

xmlspy

编程自行验证(ie用Microsoft.XMLDOM)

浏览器不会自动验证dtd对xml约束

 

dtd细节

 

DTD文档声明及引用

内部DTD,自定义内容在[]里

外部DTD,使用路径引用

内外部DTD,前二者结合

 

DTD引入

本地DTD

外部DTD

 

DTD元素

<! ELEMENT 自定义名称 内容类型>

类型可以有三种

EMPTY:空元素,可以有属性

ANY:放的标签要是在dtd里定义过的

#PCDATA:任意字符内容,不能有子标签嵌套

DTD无法约束具体类型(整数,字符等),Schema可以

 

DTD组合类型

+:至少有一个

*:0到多个

():分组

?:最多一次

,:出现顺序要一致

|:选择一个

 

引入了DTD,任何属性都要有定义,否则使用即为未定义

属性定义

<!ATTList 元素名称

属性名称 类型 属性特点

>

类型取值:

CDATA,任意字符

ID,不能重复,必须是合格的XML名字,不能以数字、下划线开头

IDREF/IDREFS,已经定义过的ID,加S代表多个ID(用空格分隔)

Emumerated,(value1|value2 |value3)

ENTITY/ENTITIES:为一段内容创建别名

 

实体(EnTITY)定义:

<!ENTITY>

引用实体:

xml里引用dtd里定义的

<!ENTITY 名称 "内容">

&名称;  ,要这么引用,类似特殊字符

参数实体:

dtd里定义,dtd里使用

<!ENTITY % 名称 "内容">

引用方式: %名称;

 

属性特点取值:

#REAUIRED,必须有

#IMPLIED,可有可无

#FIXED value,如果有,必须是固定值

value,默认值

 

DTD现在基本已被XSD文档取代,但是,仍有个别在使用 比如 Mybatis mapper xml文件

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
     "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

上面用的是公共DTD,DTD名称格式为"注册//组织//类型 标签//语言"
"注册" 指示组织是否由国际标准化组织(ISO)注册,+表示是,-表示不是;
"组织" 即组织名称,如:mybatis.org;
"类型" 一般是DTD;
"标签" 是指定公开文本描述,即对所引用的公开文本的唯一描述性名称,后面可附带版本号,如Mapper 3.0。
"语言" EN指英语;
http://mybatis.org/dtd/mybatis-3-mapper.dtd 表示外部DTD文件URI,可以在此处下载,不过,Mybatis加载xml文件之前会在本地加载DTD代替从线上获取。

内部DTD 是使用<!DOCTYPE rootElement [xxx]> 来定义的,当然内部DTD也可以使用DTD文件,如<!DOCTYPE rootElement SYSTEM "URI">

<?xml version="1.0"?>
<!DOCTYPE note [
  <!ELEMENT note (to,from,heading,body)>
  <!ELEMENT to      (#PCDATA)>
  <!ELEMENT from    (#PCDATA)>
  <!ELEMENT heading (#PCDATA)>
  <!ELEMENT body    (#PCDATA)>
]>
<note>
  <to>George</to>
  <from>John</from>
  <heading>Reminder</heading>
  <body>Don't forget the meeting!</body>
</note>

 

xml编程部分

五.XML解析技术概览

 

 

 

 

 

XML文件书写和解析 

 一.xml工具安装以及使用详解

XML Spy

 

二.

 

三.xml的Schema约束

Schema约束使用xsd文件存储

也叫作模式

XSD:XML Schema Definition

xml文件,定义新xml的文档结构

一个XML Schema会定义:文档中出现的元素、文档中出现的属性、子元素、子元素的数量、子元素的顺序、元素是否为空、元素和属性的数据类型、元素或属性的默认和固定值。

网上有生成xml schema的工具,输入xml信息就会生成xmlschema

 

引入Schema

使用别名xsi(XML Schema Instance)做引入的规范约束

xmlns:xsi,http://www.w3.org/2001/XMLSchema-instance

xsi:noNamepaceSchemaLocation,外部文件路径。可以用url编码

 

 定义Schema,引入schema定义的文件,指定标签和属性的限定

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">

</xs:schema>

 xs下定义标签描述,每个定义标签可以带属性,见xml spy提示

element:对应标签。name:标签名,type:标签类型

complexType:自定义类型

 sequence:complexType标签下的顺序标签

 

Schema数据类型

简单类型:

内置的

simpleType定义的

复杂类型:

complexType定义的

 

定义了以下标签

schema

element

attribute

group

attributeGroup

simpleType

simpleContent

complexType

choice

list

union

unique

sequence

restriction

 

schema:包含已经定义的schema

element:定义元素标签节点。属性有name,type,ref,minOccurs,maxOccurs,fixed,default,substitutionGroup

group:聚合一组element,所有element要一起出现。属性有name,ref

attribute:声明属性。属性有name,type,ref,use。attribute要放在复合类型里;被引用,通过ref为name指定

attributeGroup:聚合attribute,一组属性要同时出现。属性有name和ref

simpleType:简单类型,定义了约束,即可以有什么值。属性是name。

  定制约束有三个标签

  restriction:在某个范围。属性有base,下面的子标签可以有emunation,minExclusive,maxInclusive,minInclusive等等

  union:从一个类型的集合中选一个,即限定类型,这几个类型混在一起同时限定。属性有memberTypes

l  ist:从一个值型的集合中选一个,即限定类型,只能选一种类型。属性有itemType

complexType:当要定义子元素和属性时,用复合类型。属性值有name

simpleContent:对complexType做限制和拓展。子元素extension用来拓展。simpleContent定义的元素不能有子元素,只能有属性设置

choice:允许唯一的元素从一个组中被选择。属性有minOccurs和maxOccurs

sequence:一组元素按顺序出现

 

XML技术

19.命名空间

命名空间修饰限定元素。

 

xmlns:别名='uri',指定命名空间

使用:

别名:

通过xmlns属性引入命名空间

 

 

 

 

 

 

 

 

 

 

二十一.