xml学习笔记
2020-04-01 17:24:30 30 举报
AI智能生成
xml学习笔记
作者其他创作
大纲/内容
XML约束
XML约束使用一个文件来约束XML文档的结构
XML文档约束有两种类型:dtd和schema
dtd
dtd是平面式文档,dtd文件不是xml文档,通常扩展名为.dtd。是最早的XML约束文件
在Xxml文档中指定内部dtd
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE students[
<!ELEMENT students (student+)>
<!ELEMENT student(name,age,sex)>
<!ELEMENT name(#PCDATA)>
<!ELEMENT age(#PCDATA)>
<!ELEMENT sex(#PCDATA)>
]>
<!DOCTYPE students[
<!ELEMENT students (student+)>
<!ELEMENT student(name,age,sex)>
<!ELEMENT name(#PCDATA)>
<!ELEMENT age(#PCDATA)>
<!ELEMENT sex(#PCDATA)>
]>
元素类型
ANY
<!ELMENT student ANY>表示student元素里面可以是任意内容
EMPTY
<!ELMENT student EMPTY>表示student元素里面必须为空
元素内容
<!ELMENT student (#PCDATA)>表示student元素里面的内容为文本内容
<!ELMENT student (name)>表示student元素里面为name元素
子元素出现的次数
可以用? * + 来指定子元素出现的次数
<!ELMENT student (name?)>表示student里面可以有0或者1个name元素
<!ELMENT student (name*)>表示student里面可以有0到n个name元素
<!ELMENT student (name+)>表示student里面可以有1到n个name元素
多个子元素
<!ELMENT student (name,age,sex)>表示student里面必须有三个子元素、并且顺序必须与声明一致
枚举子元素
<!ELMENT student (name|age|sex)>表示student里面只有一个元素、可以是声明的三个元素中的任意一个
复合声明
<!ELMENT student (name|age|sex)?>表示student里面只有一个元素、可以是声明的三个元素中的任意一个
<!ELMENT student (name|age|sex)*>表示student里面可以有0到n个元素、可以是声明的三个元素中的任意一个
<!ELMENT student (name|age|sex)+>表示student里面可以有1到n个元素、可以是声明的三个元素中的任意一个
属性定义的格式
<!ATTLIST 元素名
属性名1 属性类型 设置说明
。。。
>
属性名1 属性类型 设置说明
。。。
>
最常见的属性类型:CDATA,表示文本类型
其他两种属性类型
ID,注意ID不能以数字开头
(en1|en2|..), 此值是枚举列表中的一个值
最常见的设置说明1:#REQUIRED,表明属性是必须的
最常见的设置说明2:#IMPLIED,表明属性是可选的
在外部写一个dtd文件(写法与上面是一致的,只是没有最外面的DOCTYPE框)然后引入
在XML文档中指定外部公共dtd
<!DOCTYPE 根元素 PUBLIC "DTD名称" "DTD地址">
schema
schema本身也是XML文档,比dtd更加强大。通常扩展名为.xsd
学习schema的目标
目标1:参照schema的要求可以自己表写XML文档
目标2:可以自己定义schema文档
为什么要用schema
dtd的局限性
dtd语法不遵从XML语法
dtd数据类型有限
schema的新特性
基于XML语法
大大扩充了数据类型
元素
schema
只要是xml的schema约束方式都以schema作为根节点
作用:包含已经定义的schema
用法:<xs:schema>
xs是W3C规定的命名空间的别名
属性
xmlns
约束当前schema命名空间的命名空间(由W3C提供,必有)
targetNamespace
将当前schema命名空间提供给子集使用时的命名空间
Attribute
作用:声明一个属性
Name:属性名
子主题
Type:属性类型
子主题
ref:外部属性的引用
use:是否是必填
实例
<xs:complexType name:"myComlexType">
<xs:attribute name:"mybaseattribute" type="xs:string" use="required"/>
</xs:complexType>
<xs:attribute name:"mybaseattribute" type="xs:string" use="required"/>
</xs:complexType>
attributeGroup:定义一组属性
分支主题
分支主题
分支主题
分支主题
分支主题
分支主题
分支主题
XML的作用
程序的配置文件(最为常见)
不同语言之间交换数据
小型数据库
XML与HTML的比较
HTML的元素都是固定的,XML的元素可以自己定义
HTML用浏览器来解析执行,XML的解析器通常要自己来写(因为元素是自己定义的)
HTML用来表示网页,XML用来做上面三件事
XML和属性文件(properties)的比较
- 属性文件只能存储平面信息(所谓平面信息,就是二维向量、XY坐标轴、键值对这种形式的信息),而XML可以存储结构化信息(即一个元素包含多个子元素的形式)
解析属性文件只需要用到properties类就可以了,而解析XML文件则很复杂
XML声明
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
version
版本号
encoding
编码格式
standalone
是否独立
yes为独立,即不依赖外部文件
no为不独立,即依赖外部文件
XMl文件的格式
必须从第一列第一行开始写
可以包含子元素和文本数据
XML文件只能有一个根元素
XML属性
属性由属性名和属性值构成,中间用等号连接
属性必须使用引号括起来,包括单引号和双引号
定义属性必须遵循与标签命名同样的规范
不能以数字开头
命名具有意义
属性必须定义在元素的开始标签中
XML注释
<!--注释内容-->
转义字符和CDAT区
因为在XML文件中有些字符是特殊的,不能在文本中使用他们,比如双引号、大于小于号。而又必须使用的话则有两种方式来解决这个问题:转义字符和CDAT区
CDAT区的格式
<![CDATA[
要使用特殊字符的元素区域
]]>
要使用特殊字符的元素区域
]]>
转义字符的格式
以&开始,以;j结束
分支主题
0 条评论
下一页